本文介紹了基于單片機和USB HOST接口芯片在汽車行駛記錄儀中實現(xiàn)USB HOST功能的相關模塊設計,該模塊很好地實現(xiàn)了汽車行駛記錄儀中單片機向優(yōu)盤大量數(shù)據(jù)的快速傳輸。
USB HOST相關模塊的總體設計
汽車行駛記錄儀中的USB HOST相關模塊由單片機、USB HOST接口、FLASH、鐵電存儲體(FRAM)、實時時鐘和電源管理等部分組成,其功能框圖如圖1所示。汽車行駛記錄儀工作時,由單片機通過前端接口電路拾取汽車行駛狀態(tài)的各種信息,包括車速、發(fā)動機轉速和各種車輛開關信號等。汽車行駛記錄儀以實時時鐘為基準,把車輛信息按類別分別存入FRAM和FLASH。需要從汽車行駛記錄儀中獲取汽車記錄狀態(tài)信息時,用戶插入優(yōu)盤,單片機自動識別優(yōu)盤并加載驅動程序,當完成設備枚舉和Bulk_Only傳輸協(xié)議后,單片機就可以把汽車行駛記錄儀中記錄的狀態(tài)信息以文件的形式傳輸?shù)絻?yōu)盤。本文重點介紹電源模塊、USB HOST模塊、數(shù)據(jù)存儲模塊的硬件設計。
考慮到汽車的復雜工況以及記錄儀的性價比,單片機至少為工業(yè)級產品,由于有USB HOST結構,F(xiàn)LASH和RAM要足夠大,這樣系統(tǒng)資源才夠用。另外,考慮到成本和開發(fā)周期,單片機選擇51系列比較有利,綜合以上因素,單片機選擇AT89C51RD2,擴展RAM;目前市場上的USB設備芯片比較多,而HOST要少一些。選擇USB HOST接口芯片要考慮兩點:一是在硬件上必須比較容易和51單片機相連接,二是軟件開發(fā)難度不能太大,因此選擇SL811HST。對于數(shù)據(jù)存儲體,必須滿足存儲時間為15年有效,而且存儲容量為至少360小時有效數(shù)據(jù),普通數(shù)據(jù)FLASH擦寫次數(shù)為100萬次,不能滿足記錄儀中頻繁擦寫數(shù)據(jù)的要求,而鐵電擦寫次數(shù)為無限次,但大容量FRAM價格很高,綜合這兩點,存儲體采用小容量FRAM和FLASH結合,這樣既滿足記錄儀要求又有比較低的成本。
電源模塊硬件設計
汽車電子產品產生電磁干擾的最根本原因就是在其工作過程中產生的di/dt。電源模塊設計就是要在這些干擾源下能正常工作,其硬件電路如圖2所示。
在電源輸入處,二極管VD1(IN4007)的作用是防止反接,這樣即使在電源接反的情況下,電子設備也不會被損壞;VD2(A36A)為瞬態(tài)抑制二極管,能吸收高壓脈沖電壓,防止大功率器件工作時產生的高壓脈沖對電子設備的損壞;L1和L2是低電感磁條,其能有效的損耗干擾成分的能量,能很好改善電源性能;F1和F2為自復位二級管,防止電子設備內有器件被損壞時,電源短路造成對其他器件的損壞。三端穩(wěn)壓管7812(N2)提供12V電壓滿足前端輸入接口拾取電路的需要,同時給三端穩(wěn)壓器7808(N1)提供輸入,N1提供8V電壓,滿足里程輸出以及速度輸出需要,開關穩(wěn)壓器LM2576(N3)提供5V輸出,最大輸出電流為3A,滿足記錄儀帶打印機的需要。WRD24B05(N4)為DC-DC轉換器,隔離汽車和電子設備電源,使設備電源穩(wěn)定可靠。正向電壓調節(jié)器SPX1117(N5)提供3.3V電壓,供SL811HST和存儲體的需要,N6前端的晶體管8550控制N6的輸入,N6給IC卡供電,需要電源可控。
USB HOST模塊硬件設計
在汽車行駛記錄儀USB HOST模塊中,單片機采用AT89C51RD2,USB HOST接口芯片采用SL811HST,該模塊硬件電路如圖3所示,SL811HST提供并口總線數(shù)據(jù)協(xié)議和控制線CS、RD、WR、INTRQ以及A0,利用單片機的讀寫信號線RD、WR,以及控制線A0、INT1就能把SL811HST和AT89C51RD2連接起來,其中8根數(shù)據(jù)線在控制線的控制下與AT89C51RD2進行數(shù)據(jù)交換。USB HOST包含有USB設備枚舉協(xié)議、Bulk_Only傳輸協(xié)議以及FAT文件結構,AT89C51RD2的RAM資源不夠,因此,系統(tǒng)擴展了32Kb SRAM,其占有低32Kb地址。為了保證操作SL811HST的可靠性,用HC00擴展了邏輯電路,因此SL811HST占有0x8000和0x8001兩個地址。另外,USB總線的電氣特性要求在USB收發(fā)器之前必須串接22~44Ω電阻,同時必須根據(jù)不同的USB設備傳輸速度(全速或低速),配置好上拉電阻和下拉電阻的位置。
當CS、RD有效時,如果A0為高,這是讀當前地址或寄存器數(shù)據(jù),如果A0為低,則讀當前地址或寄存器地址。當CS、WR有效時,如果A0為高,這是寫當前地址或寄存器數(shù)據(jù),如果A0為低,則寫當前地址或寄存器地址。
USB HOST識別設備過程如下:當SL811HST連接上USB設備后,就會產生一個中斷。AT89C51RD2接收到中斷后,進入枚舉過程。從USB設備插入接口開始到客戶驅動程序能夠使用該設備還有一些工作要做,這一段可以稱作設備識別過程,也稱枚舉過程。枚舉過程是所有USB設備使用前必經(jīng)的過程,USB HOST端在使用前需要知道這是一個低速設備還是一個全速設備,需要知道這個設備的一些特性和能力,以便載入相應的驅動程序。當USB HOST配置完USB設備后,通過描述符提供的信息識別出Bulk_Only的Mass Storage設備,然后進入Bulk_Only 傳輸方式,在此方式下,USB與設備之間的所有數(shù)據(jù)均通過Bulk_In和Bulk_Out 來傳輸,不再通過控制端點傳輸任何數(shù)據(jù)。在這種傳輸方式下,有三種數(shù)據(jù)類型在USB和設備之間傳輸,CBW、CSW和普通數(shù)據(jù)。CBW(Command Block Wrapper,即命令塊分組)是從USB HOST發(fā)送到設備的命令,命令的格式遵從接口中的bInterfaceSubClass所指定的命令塊,這里為SCSI傳輸命令集。USB設備需要將SCSI命令從CBW中提取出來,執(zhí)行相應的命令,完成以后向HOST發(fā)出當前命令執(zhí)行狀態(tài)CSW(Command Status Wrapper), HOST根據(jù)CSW來決定是否繼續(xù)傳送下一個CBW或數(shù)據(jù)。USB HOST要求USB設備執(zhí)行的命令如果為發(fā)送數(shù)據(jù),則此時需要將特定的數(shù)據(jù)傳送出去,傳送完畢后發(fā)出CSW,使USB HOST進行下一步操作。
圖2 電源模塊原理圖
圖3 USB HOST模塊原理圖
存儲模塊硬件設計
結合普通FLASH和FRAM來存儲數(shù)據(jù),既滿足了數(shù)據(jù)存儲擦寫次數(shù)的要求,也有比較低的成本。數(shù)據(jù)存儲模塊的硬件電路如圖4所示。
FRAM芯片F(xiàn)M24CL16通過I2C接口和AT89C51RD2相連,I2C總線通過兩根線——串行數(shù)據(jù)(SDA)和串行時鐘(SCL)線連接到總線上的任何一個器件,每個器件都有一個唯一的地址,而且都可以作為一個發(fā)送器或接收器。此外,器件在執(zhí)行數(shù)據(jù)傳輸時也可以看作是主機或從機,I2C是一個多主機總線,SDA和SCL都是雙線路,連接到總線的器件的輸出級必須是漏極開路或集電極開路,都通過一個電流源或上拉電阻連接到正的電源電壓。當總線空閑時,這兩條線路都是高電平。FLASH芯片AT45DB041通過SPI接口和AT89C51RD2相連接,SPI是一個全雙工的串行接口,采用三線同步的數(shù)據(jù)傳輸形式。在一定的數(shù)據(jù)傳輸過程中,接口上只能有一個主機和一個從機進行通信。在一次傳輸過程中,主機總是向從機發(fā)送一個字節(jié)數(shù)據(jù),而從機也總是向總機發(fā)送一個字節(jié)數(shù)據(jù)。
圖4 存儲模塊原理科
小結
本設計實現(xiàn)了汽車行駛記錄儀的USB HOST功能,使汽車行駛記錄儀與優(yōu)盤可進行大量數(shù)據(jù)的快速交換?;诒驹O計的產品在送檢、認證和使用過程中,USB HOST技術性能達到了產品設計要求和技術要求,方便了用戶對大量數(shù)據(jù)進行快速采集。