<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 汽車(chē)行駛記錄儀中USB HOST相關(guān)模塊的設(shè)計(jì)

          汽車(chē)行駛記錄儀中USB HOST相關(guān)模塊的設(shè)計(jì)

          ——
          作者:中國(guó)汽車(chē)技術(shù)研究中心智能所 汪春華 劉全周 黃森仁 時(shí)間:2006-09-17 來(lái)源:今日電子 收藏

          本文介紹了基于單片機(jī)和USB HOST接口芯片在汽車(chē)行駛記錄儀中實(shí)現(xiàn)USB HOST功能的相關(guān)設(shè)計(jì),該很好地實(shí)現(xiàn)了汽車(chē)行駛記錄儀中單片機(jī)向優(yōu)盤(pán)大量數(shù)據(jù)的快速傳輸。

          USB HOST相關(guān)的總體設(shè)計(jì)

          汽車(chē)行駛記錄儀中的USB HOST相關(guān)模塊由單片機(jī)、USB HOST接口、FLASH、鐵電存儲(chǔ)體(FRAM)、實(shí)時(shí)時(shí)鐘和電源管理等部分組成,其功能框圖如圖1所示。汽車(chē)行駛記錄儀工作時(shí),由單片機(jī)通過(guò)前端接口電路拾取汽車(chē)行駛狀態(tài)的各種信息,包括車(chē)速、發(fā)動(dòng)機(jī)轉(zhuǎn)速和各種車(chē)輛開(kāi)關(guān)信號(hào)等。汽車(chē)行駛記錄儀以實(shí)時(shí)時(shí)鐘為基準(zhǔn),把車(chē)輛信息按類(lèi)別分別存入FRAM和FLASH。需要從汽車(chē)行駛記錄儀中獲取汽車(chē)記錄狀態(tài)信息時(shí),用戶(hù)插入優(yōu)盤(pán),單片機(jī)自動(dòng)識(shí)別優(yōu)盤(pán)并加載驅(qū)動(dòng)程序,當(dāng)完成設(shè)備枚舉和Bulk_Only傳輸協(xié)議后,單片機(jī)就可以把汽車(chē)行駛記錄儀中記錄的狀態(tài)信息以文件的形式傳輸?shù)絻?yōu)盤(pán)。本文重點(diǎn)介紹電源模塊、USB HOST模塊、數(shù)據(jù)存儲(chǔ)模塊的硬件設(shè)計(jì)。

          考慮到汽車(chē)的復(fù)雜工況以及記錄儀的性?xún)r(jià)比,單片機(jī)至少為工業(yè)級(jí)產(chǎn)品,由于有USB HOST結(jié)構(gòu),F(xiàn)LASH和RAM要足夠大,這樣系統(tǒng)資源才夠用。另外,考慮到成本和開(kāi)發(fā)周期,單片機(jī)選擇51系列比較有利,綜合以上因素,單片機(jī)選擇AT89C51RD2,擴(kuò)展RAM;目前市場(chǎng)上的USB設(shè)備芯片比較多,而HOST要少一些。選擇USB HOST接口芯片要考慮兩點(diǎn):一是在硬件上必須比較容易和51單片機(jī)相連接,二是軟件開(kāi)發(fā)難度不能太大,因此選擇SL811HST。對(duì)于數(shù)據(jù)存儲(chǔ)體,必須滿(mǎn)足存儲(chǔ)時(shí)間為15年有效,而且存儲(chǔ)容量為至少360小時(shí)有效數(shù)據(jù),普通數(shù)據(jù)FLASH擦寫(xiě)次數(shù)為100萬(wàn)次,不能滿(mǎn)足記錄儀中頻繁擦寫(xiě)數(shù)據(jù)的要求,而鐵電擦寫(xiě)次數(shù)為無(wú)限次,但大容量FRAM價(jià)格很高,綜合這兩點(diǎn),存儲(chǔ)體采用小容量FRAM和FLASH結(jié)合,這樣既滿(mǎn)足記錄儀要求又有比較低的成本。

          電源模塊硬件設(shè)計(jì)

          產(chǎn)品產(chǎn)生電磁干擾的最根本原因就是在其工作過(guò)程中產(chǎn)生的di/dt。電源模塊設(shè)計(jì)就是要在這些干擾源下能正常工作,其硬件電路如圖2所示。

          在電源輸入處,二極管VD1(IN4007)的作用是防止反接,這樣即使在電源接反的情況下,電子設(shè)備也不會(huì)被損壞;VD2(A36A)為瞬態(tài)抑制二極管,能吸收高壓脈沖電壓,防止大功率器件工作時(shí)產(chǎn)生的高壓脈沖對(duì)電子設(shè)備的損壞;L1和L2是低電感磁條,其能有效的損耗干擾成分的能量,能很好改善電源性能;F1和F2為自復(fù)位二級(jí)管,防止電子設(shè)備內(nèi)有器件被損壞時(shí),電源短路造成對(duì)其他器件的損壞。三端穩(wěn)壓管7812(N2)提供12V電壓滿(mǎn)足前端輸入接口拾取電路的需要,同時(shí)給三端穩(wěn)壓器7808(N1)提供輸入,N1提供8V電壓,滿(mǎn)足里程輸出以及速度輸出需要,開(kāi)關(guān)穩(wěn)壓器LM2576(N3)提供5V輸出,最大輸出電流為3A,滿(mǎn)足記錄儀帶打印機(jī)的需要。WRD24B05(N4)為DC-DC轉(zhuǎn)換器,隔離汽車(chē)和電子設(shè)備電源,使設(shè)備電源穩(wěn)定可靠。正向電壓調(diào)節(jié)器SPX1117(N5)提供3.3V電壓,供SL811HST和存儲(chǔ)體的需要,N6前端的晶體管8550控制N6的輸入,N6給IC卡供電,需要電源可控。

          USB HOST模塊硬件設(shè)計(jì)

          在汽車(chē)行駛記錄儀USB HOST模塊中,單片機(jī)采用AT89C51RD2,USB HOST接口芯片采用SL811HST,該模塊硬件電路如圖3所示,SL811HST提供并口總線(xiàn)數(shù)據(jù)協(xié)議和控制線(xiàn)CS、RD、WR、INTRQ以及A0,利用單片機(jī)的讀寫(xiě)信號(hào)線(xiàn)RD、WR,以及控制線(xiàn)A0、INT1就能把SL811HST和AT89C51RD2連接起來(lái),其中8根數(shù)據(jù)線(xiàn)在控制線(xiàn)的控制下與AT89C51RD2進(jìn)行數(shù)據(jù)交換。USB HOST包含有USB設(shè)備枚舉協(xié)議、Bulk_Only傳輸協(xié)議以及FAT文件結(jié)構(gòu),AT89C51RD2的RAM資源不夠,因此,系統(tǒng)擴(kuò)展了32Kb SRAM,其占有低32Kb地址。為了保證操作SL811HST的可靠性,用HC00擴(kuò)展了邏輯電路,因此SL811HST占有0x8000和0x8001兩個(gè)地址。另外,USB總線(xiàn)的電氣特性要求在USB收發(fā)器之前必須串接22~44Ω電阻,同時(shí)必須根據(jù)不同的USB設(shè)備傳輸速度(全速或低速),配置好上拉電阻和下拉電阻的位置。

          當(dāng)CS、RD有效時(shí),如果A0為高,這是讀當(dāng)前地址或寄存器數(shù)據(jù),如果A0為低,則讀當(dāng)前地址或寄存器地址。當(dāng)CS、WR有效時(shí),如果A0為高,這是寫(xiě)當(dāng)前地址或寄存器數(shù)據(jù),如果A0為低,則寫(xiě)當(dāng)前地址或寄存器地址。

          USB HOST識(shí)別設(shè)備過(guò)程如下:當(dāng)SL811HST連接上USB設(shè)備后,就會(huì)產(chǎn)生一個(gè)中斷。AT89C51RD2接收到中斷后,進(jìn)入枚舉過(guò)程。從USB設(shè)備插入接口開(kāi)始到客戶(hù)驅(qū)動(dòng)程序能夠使用該設(shè)備還有一些工作要做,這一段可以稱(chēng)作設(shè)備識(shí)別過(guò)程,也稱(chēng)枚舉過(guò)程。枚舉過(guò)程是所有USB設(shè)備使用前必經(jīng)的過(guò)程,USB HOST端在使用前需要知道這是一個(gè)低速設(shè)備還是一個(gè)全速設(shè)備,需要知道這個(gè)設(shè)備的一些特性和能力,以便載入相應(yīng)的驅(qū)動(dòng)程序。當(dāng)USB HOST配置完USB設(shè)備后,通過(guò)描述符提供的信息識(shí)別出Bulk_Only的Mass Storage設(shè)備,然后進(jìn)入Bulk_Only 傳輸方式,在此方式下,USB與設(shè)備之間的所有數(shù)據(jù)均通過(guò)Bulk_In和Bulk_Out 來(lái)傳輸,不再通過(guò)控制端點(diǎn)傳輸任何數(shù)據(jù)。在這種傳輸方式下,有三種數(shù)據(jù)類(lèi)型在USB和設(shè)備之間傳輸,CBW、CSW和普通數(shù)據(jù)。CBW(Command Block Wrapper,即命令塊分組)是從USB HOST發(fā)送到設(shè)備的命令,命令的格式遵從接口中的bInterfaceSubClass所指定的命令塊,這里為SCSI傳輸命令集。USB設(shè)備需要將SCSI命令從CBW中提取出來(lái),執(zhí)行相應(yīng)的命令,完成以后向HOST發(fā)出當(dāng)前命令執(zhí)行狀態(tài)CSW(Command Status Wrapper), HOST根據(jù)CSW來(lái)決定是否繼續(xù)傳送下一個(gè)CBW或數(shù)據(jù)。USB HOST要求USB設(shè)備執(zhí)行的命令如果為發(fā)送數(shù)據(jù),則此時(shí)需要將特定的數(shù)據(jù)傳送出去,傳送完畢后發(fā)出CSW,使USB HOST進(jìn)行下一步操作。

          圖2 電源模塊原理圖

          圖3 USB HOST模塊原理圖

          存儲(chǔ)模塊硬件設(shè)計(jì)

          結(jié)合普通FLASH和FRAM來(lái)存儲(chǔ)數(shù)據(jù),既滿(mǎn)足了數(shù)據(jù)存儲(chǔ)擦寫(xiě)次數(shù)的要求,也有比較低的成本。數(shù)據(jù)存儲(chǔ)模塊的硬件電路如圖4所示。

          FRAM芯片F(xiàn)M24CL16通過(guò)I2C接口和AT89C51RD2相連,I2C總線(xiàn)通過(guò)兩根線(xiàn)——串行數(shù)據(jù)(SDA)和串行時(shí)鐘(SCL)線(xiàn)連接到總線(xiàn)上的任何一個(gè)器件,每個(gè)器件都有一個(gè)唯一的地址,而且都可以作為一個(gè)發(fā)送器或接收器。此外,器件在執(zhí)行數(shù)據(jù)傳輸時(shí)也可以看作是主機(jī)或從機(jī),I2C是一個(gè)多主機(jī)總線(xiàn),SDA和SCL都是雙線(xiàn)路,連接到總線(xiàn)的器件的輸出級(jí)必須是漏極開(kāi)路或集電極開(kāi)路,都通過(guò)一個(gè)電流源或上拉電阻連接到正的電源電壓。當(dāng)總線(xiàn)空閑時(shí),這兩條線(xiàn)路都是高電平。FLASH芯片AT45DB041通過(guò)SPI接口和AT89C51RD2相連接,SPI是一個(gè)全雙工的串行接口,采用三線(xiàn)同步的數(shù)據(jù)傳輸形式。在一定的數(shù)據(jù)傳輸過(guò)程中,接口上只能有一個(gè)主機(jī)和一個(gè)從機(jī)進(jìn)行通信。在一次傳輸過(guò)程中,主機(jī)總是向從機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù),而從機(jī)也總是向總機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)。

          圖4 存儲(chǔ)模塊原理科

          小結(jié)

          本設(shè)計(jì)實(shí)現(xiàn)了汽車(chē)行駛記錄儀的USB HOST功能,使汽車(chē)行駛記錄儀與優(yōu)盤(pán)可進(jìn)行大量數(shù)據(jù)的快速交換。基于本設(shè)計(jì)的產(chǎn)品在送檢、認(rèn)證和使用過(guò)程中,USB HOST技術(shù)性能達(dá)到了產(chǎn)品設(shè)計(jì)要求和技術(shù)要求,方便了用戶(hù)對(duì)大量數(shù)據(jù)進(jìn)行快速采集。



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();