存儲測試系統(tǒng)USB接口的設(shè)計與實現(xiàn)
從SRAM讀取存儲數(shù)據(jù)時,單片機(jī)首先置片選信號CE和讀控制信號OE為低電平,測試系統(tǒng)的時序控制電路在OE信號的作用下推動SRAM的地址,SRAM則將對應(yīng)地址的數(shù)據(jù)放在總線上。單片機(jī)讀取數(shù)據(jù)總線后,判斷FT245R的寫允許信號TXE是否為低電平,若為低電平則進(jìn)入向FT245R發(fā)送數(shù)據(jù)子程序,若為高電平說明FT245R忙,不能寫數(shù)據(jù),單片機(jī)繼續(xù)判斷TXE信號,直到變低為止。發(fā)送數(shù)據(jù)時,單片機(jī)首先置FT245R的寫控制信號WR為高電平,然后將讀取的PORTD端口的數(shù)據(jù)發(fā)送至PORTB端口,接著將WR變回低電平。之后,繼續(xù)判斷TXE的狀態(tài),變低后發(fā)送從PORTC端口讀取的數(shù)據(jù),完成12 b數(shù)據(jù)自測試系統(tǒng)讀取并經(jīng)FT245R發(fā)送的過程,流程如圖4所示。在編程時,根據(jù)測試系統(tǒng)SRAM的存儲容量,重復(fù)上述操作即可實現(xiàn)測試數(shù)據(jù)經(jīng)USB接口發(fā)送至計算機(jī)。
3.2 計算機(jī)編程
計算機(jī)端程序采用VB 6.0編寫,通過調(diào)用FTDI提供的動態(tài)鏈接庫,進(jìn)行讀、寫函數(shù)等的調(diào)用與操作。在VB程序中,首先需要在模塊里聲明動態(tài)鏈接庫“FTD2XX.DLL”。然后,在主程序里需要先對FT245R進(jìn)行初始化,包括打開設(shè)備、復(fù)位設(shè)備、清理緩沖區(qū)、設(shè)定等待時間等步驟,初始化流程如圖5所示。其他工作參數(shù)如波特率、奇偶校驗、溢出控制等使用默認(rèn)設(shè)置即可。
對FT245R初始化完成后,就可以進(jìn)行數(shù)據(jù)發(fā)送和接收。發(fā)送數(shù)據(jù)時,將數(shù)據(jù)賦值到發(fā)送數(shù)組,調(diào)用發(fā)送函數(shù)FT_Write,然后判斷函數(shù)返回值是否等于1。若為1說明數(shù)據(jù)發(fā)送成功,否則需要重新發(fā)送。接收數(shù)據(jù)時,首先需要設(shè)定接收超時時間。然后調(diào)用FT_Getstatus函數(shù)讀取接收緩沖區(qū)的狀態(tài),判斷接收隊列中是否有數(shù)以及是否滿足設(shè)定的讀取字節(jié)數(shù)閾值。若滿足瀆取條件,則調(diào)用讀數(shù)函數(shù)FT_Read,讀取當(dāng)前緩沖區(qū)的數(shù)據(jù)并存入數(shù)組,否則就一直等待,直到滿足讀取條件或產(chǎn)生接收超時。若產(chǎn)生超時,程序自動跳出接收程序,避免陷入死循環(huán)。接收流程如圖6所示。
4 結(jié)論
設(shè)計的USB接口數(shù)據(jù)傳輸率達(dá)到1 MB/s,滿足存儲測試系統(tǒng)數(shù)據(jù)讀取速率的要求。
該接口符合USB 2.0協(xié)議,在計算機(jī)上安裝驅(qū)動即可,使用簡單方便。
該接口具有體積小、運(yùn)行可靠等特點,非常適合嵌入到存儲測試系統(tǒng)中,也可將接口與外部數(shù)據(jù)線做成一體,進(jìn)一步減小測試系統(tǒng)體積。
評論