存儲測試系統的USB接口設計
摘要:針對存儲測試系統的高速數據傳輸需求,設計了以單片機和FT245R為核心器件的USB接口電路,替代了傳統的并行/串行接口。設計的USB接口支持USB 2.0協(xié)議,具有體積小、通用性好、操作簡(jiǎn)單、使用方便等特點(diǎn),數據傳輸率達到1 MB/s,滿(mǎn)足了存儲測試系統的數據傳輸率要求。
關(guān)鍵詞:USB;存儲測試技術(shù);FT245R;接口
0 引言
存儲測試是指在對被測對象無(wú)影響或在允許范圍的條件下,在被測體內置入微型數據采集與存儲測試儀,現場(chǎng)實(shí)時(shí)完成信息的快速采集與記憶,然后回收記錄儀,由計算機處理和再現測試信息的一種動(dòng)態(tài)測試技術(shù)。經(jīng)過(guò)近三十年的發(fā)展,存儲測試技術(shù)不斷成熟,已成功應用于火炮膛壓測試、彈載全彈道參數測試、車(chē)輛機械運動(dòng)部件工況參數測試、石油井下壓力測試、爆炸沖擊波場(chǎng)測試、人體運動(dòng)及生理參數測試、載人航天測試等諸多領(lǐng)域,在軍工測試領(lǐng)域和國民經(jīng)濟建設中發(fā)揮著(zhù)重要作用。
接口電路是測試系統與外部計算機進(jìn)行數據傳輸的通道,是存儲測試系統的重要組成部分。文獻表明南京理工大學(xué)和北京理工大學(xué)研究的存儲測試系統主要采用串行接口,而文獻表明中北大學(xué)研究的存儲測試系統串口和并口兼而有之,視實(shí)際使用情況而定。眾所周知,串口使用受波特率的限制,制約了存儲測試系統與計算機數據傳輸的效率。并行傳輸是一種效率較高的傳輸方式,利用計算機并口的EPP模式可以實(shí)現大于300 KB/s的穩定傳輸率,然而現在大多數計算機已不再配置并口,USB接口成為計算機對外數據傳輸的主要通道。因此,開(kāi)發(fā)適于存儲測試系統集成的USB接口成為存儲測試技術(shù)發(fā)展的一項重要內容。
1 USB協(xié)議及集成芯片
USB全稱(chēng)是通用串行總線(xiàn)(Universal Serial Bus),目前以USB 2.0規范應用最為普遍。USB 2.0規范的理想傳輸速率為480 Mb/s(60 MB/s),足以滿(mǎn)足大多數外設的速率要求。USB 2.0是一種復雜的傳輸協(xié)議,這給USB接口的設計和開(kāi)發(fā)帶來(lái)很大難度。文獻的研究表明,在應用層對數據采集系統進(jìn)行USB接口設計時(shí),可以選擇集成USB協(xié)議的專(zhuān)用芯片進(jìn)行二次開(kāi)發(fā),從而降低了系統開(kāi)發(fā)難度。通過(guò)查閱大量文獻,本文選用FTDI公司的FT245R芯片進(jìn)行USB接口設計。
FT245R符合USB 2.0規范,具有功能強、體積小、傳輸速度快、易于與微處理器接口等特點(diǎn),非常適合在嵌入存儲測試系統中進(jìn)行接口設計。FT245R可以方便地實(shí)現USB主機與外設MCU,CPLD的接口,其數據傳輸速率可達1 MB/s。FT245R內部集成了256 B的接收FIFO和128 B的發(fā)送FIFO,大大提高了USB主機與外設的通信質(zhì)量。另外,FT245R還具備3.3 V的LDO調整器、USB數據時(shí)鐘恢復PLL及USB數據收發(fā)器,且E2PR OM接口邏輯單元可外接串行存儲器,以實(shí)現VID,PID,序列號和設備描述符的存儲。FT245R大大簡(jiǎn)化了外圍電路,使接口設計更趨于小型化,符合存儲測試系統微小體積的要求。
2 接口硬件設計
USB接口設計以單片機和FT245R為核心器件,原理如圖1所示。由于FT245R將涉及USB協(xié)議的高速信號全部集成在芯片內部,從而降低了系統對單片機性能的要求。本設計選用了Microchip公司的中檔單片機PIC16F877,該單片機最高工作時(shí)鐘為20 MHz,有5個(gè)并行I/O端口,13個(gè)中斷源,完全滿(mǎn)足同時(shí)對FT245R和存儲測試系統進(jìn)行控制的要求。
圖1中,SRAM是集成于存儲測試系統中的靜態(tài)存儲器,測試過(guò)程結束后,SRAM存滿(mǎn)了測試數據。單片機在USB接口中起到橋梁的作用,其I/O端口中的PORTD以及PORTC的低四位與SRAM中的12 b數據位相連,作為數據總線(xiàn)。同樣,單片機的PORTB端口與F245R中的8b數據位相連,成為另外一條數據總線(xiàn)。SRAM中3個(gè)與存取操作有關(guān)的控制信號分別與單片機的RA0,RA1和RA2相連,而FT245R的4個(gè)與數據傳輸有關(guān)的控制信號則與單片機PORTC端口的高四位相連。在硬件設計中,兩條數據總線(xiàn)是有區別的。SRAM到單片機的數據總線(xiàn)是單向的,數據只能從存儲器傳向單片機。單片機與FT245R間的數據總線(xiàn)是雙向的,既能完成測試數據的上行傳輸,又能完成計算機指令的下行傳輸。
另外,存儲測試系統都是使用電池供電,為了節省有限的電源,USB接口電路可以采取由計算機供電的方法。計算機的USB口能夠提供5 V電源,最大負載電流可達500 mA,完全可以滿(mǎn)足本文設計的USB接口的用電需求。
圖2是USB總線(xiàn)供電原理圖。5 V電源自USB口的1腳輸出,經(jīng)電容C1和鐵氧體濾波后進(jìn)入DC-DC變換器LP2987,經(jīng)電壓變換后輸出3.3 V直流電壓(負載電流200 mA),供應單片機、FT245R及其外圍元件。
3 軟件編程
3.1 固件編程
讀取數據時(shí)首先要通過(guò)計算機發(fā)送讀數指令,該指令經(jīng)USB接口傳輸至FT245R。FT245R經(jīng)內部串/并轉換,輸出并行數據至FIFO控制器,同時(shí)將RXF信號置為低電平。單片機通過(guò)查詢(xún)RXF狀態(tài)判斷FT245R是否有數據等待讀取,RXF由高變低后,單片機將讀數控制信號RD置低。FT245R在檢測到RD信號變低后,迅速將FIFO控制器中的數據放在數據總線(xiàn)上。單片機從總線(xiàn)上讀取數據后,首先進(jìn)行判斷,若為瀆數指令,則單片機進(jìn)入從測試系統讀數的子程序。圖3是單片機從FT245R讀取數據的流程圖。
從SRAM讀取存儲數據時(shí),單片機首先置片選信號CE和讀控制信號OE為低電平,測試系統的時(shí)序控制電路在OE信號的作用下推動(dòng)SRAM的地址,SRAM則將對應地址的數據放在總線(xiàn)上。單片機讀取數據總線(xiàn)后,判斷FT245R的寫(xiě)允許信號TXE是否為低電平,若為低電平則進(jìn)入向FT245R發(fā)送數據子程序,若為高電平說(shuō)明FT245R忙,不能寫(xiě)數據,單片機繼續判斷TXE信號,直到變低為止。發(fā)送數據時(shí),單片機首先置FT245R的寫(xiě)控制信號WR為高電平,然后將讀取的PORTD端口的數據發(fā)送至PORTB端口,接著(zhù)將WR變回低電平。之后,繼續判斷TXE的狀態(tài),變低后發(fā)送從PORTC端口讀取的數據,完成12 b數據自測試系統讀取并經(jīng)FT245R發(fā)送的過(guò)程,流程如圖4所示。在編程時(shí),根據測試系統SRAM的存儲容量,重復上述操作即可實(shí)現測試數據經(jīng)USB接口發(fā)送至計算機。
3.2 計算機編程
計算機端程序采用VB 6.0編寫(xiě),通過(guò)調用FTDI提供的動(dòng)態(tài)鏈接庫,進(jìn)行讀、寫(xiě)函數等的調用與操作。在VB程序中,首先需要在模塊里聲明動(dòng)態(tài)鏈接庫“FTD2XX.DLL”。然后,在主程序里需要先對FT245R進(jìn)行初始化,包括打開(kāi)設備、復位設備、清理緩沖區、設定等待時(shí)間等步驟,初始化流程如圖5所示。其他工作參數如波特率、奇偶校驗、溢出控制等使用默認設置即可。
對FT245R初始化完成后,就可以進(jìn)行數據發(fā)送和接收。發(fā)送數據時(shí),將數據賦值到發(fā)送數組,調用發(fā)送函數FT_Write,然后判斷函數返回值是否等于1。若為1說(shuō)明數據發(fā)送成功,否則需要重新發(fā)送。接收數據時(shí),首先需要設定接收超時(shí)時(shí)間。然后調用FT_Getstatus函數讀取接收緩沖區的狀態(tài),判斷接收隊列中是否有數以及是否滿(mǎn)足設定的讀取字節數閾值。若滿(mǎn)足瀆取條件,則調用讀數函數FT_Read,讀取當前緩沖區的數據并存入數組,否則就一直等待,直到滿(mǎn)足讀取條件或產(chǎn)生接收超時(shí)。若產(chǎn)生超時(shí),程序自動(dòng)跳出接收程序,避免陷入死循環(huán)。接收流程如圖6所示。
4 結論
設計的USB接口數據傳輸率達到1 MB/s,滿(mǎn)足存儲測試系統數據讀取速率的要求。
該接口符合USB 2.0協(xié)議,在計算機上安裝驅動(dòng)即可,使用簡(jiǎn)單方便。
該接口具有體積小、運行可靠等特點(diǎn),非常適合嵌入到存儲測試系統中,也可將接口與外部數據線(xiàn)做成一體,進(jìn)一步減小測試系統體積。
評論