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