基于端口模式的CY7C68013固件程序設(shè)計
1引言
通用串行總線( USB)自從 1994年由微軟等公司共同提出到現(xiàn)在人們所熟知的USB2.0,USB技術(shù)不斷發(fā)展成熟。由于具有傳輸速度快、支持熱插拔、即插即用、擴展性強等諸多優(yōu)點,USB已經(jīng)被廣泛應用于各種 PC標準外設(shè)和用戶自定義開發(fā)設(shè)備中。正是由于 USB擁有其他接口(如并口、串口)無法比擬的優(yōu)勢,將 USB接口應用到彈載測量系統(tǒng)地面測試臺的設(shè)計中,其通用性可擴展性強,能夠提高讀數(shù)速度、簡化電路設(shè)計及驅(qū)動程序開發(fā)。
完整的 USB系統(tǒng)除了硬件電路外,還包括驅(qū)動程序、單片機固件程序。固件是 USB系統(tǒng)的核心,它要響應各種來自系統(tǒng)的 USB設(shè)備請求,完成各種數(shù)據(jù)的交換工作和事件處理,直接影響到 USB接口的數(shù)據(jù)傳輸速度[1]。因此,固件程序的編寫是開發(fā) USB設(shè)備的關(guān)鍵環(huán)節(jié)。
本測試臺上采用的是Cypress公司的EZ-USB FX2系列單片機 CY7C68013。實現(xiàn) USB接口的數(shù)據(jù)通信,CY7C68013可以配置為3種模式:端口模式、 GPIF和Slave FIFO[2]。后兩種模式由于使用FX2的管道連接方法,單片機的 CPU不參與數(shù)據(jù)傳輸,提高了數(shù)據(jù)傳輸速率,從而廣泛應用于圖像、視頻信號采集等大批量數(shù)據(jù)的傳輸中。但使用這兩種模式進行 USB設(shè)備的開發(fā)相對較復雜,開發(fā)周期長。至于端口模式,文獻中很少有介紹,由于這種模式下 CPU參與了數(shù)據(jù)傳輸,因此傳輸速率相對較慢 [3],不過端口模式開發(fā)簡單,可以降低工程人員的開發(fā)難度,縮短開發(fā)周期。本測試臺中傳輸數(shù)據(jù)量較少,傳輸速率也要求不高,因此本設(shè)計采用端口模式。 測試臺系統(tǒng)總體框圖彈載測量系統(tǒng)地面測試臺由模擬信號源、數(shù)字信號源、圖像信號源、 PCM碼解調(diào)模塊、實時監(jiān)測等幾部分組成,系統(tǒng)總體框圖如圖 1所示。
上位機通過 USB接口分別下載模擬量、數(shù)字量及圖像數(shù)據(jù)到各自的信號源存儲器中,而解調(diào)出的PCM碼數(shù)據(jù)和實時監(jiān)測數(shù)據(jù)也是經(jīng)由 USB接口讀回到上位機,從而實現(xiàn)了USB接口的雙向數(shù)據(jù)傳輸。 3硬件連接
CY7C68013與外圍電路連接如圖 2所示。
測試臺下載信號源數(shù)據(jù)時,USB單片機將數(shù)據(jù)先寫入 FIFO1中,F(xiàn)PGA(XC2S50)通過判斷 FIFO1的空信號將數(shù)據(jù)讀出;而回讀時 FPGA將數(shù)據(jù)寫入 FIFO2,當 FIFO2半滿時, USB單片機產(chǎn)生 FIFO2的讀信號將數(shù)據(jù)讀出送至上位機。USB單片機通過 PE口產(chǎn)生不同的狀態(tài)信號(Status[7:0])使系統(tǒng)進行上述不同操作。 4固件程序設(shè)計
所有基于微控制器及其外圍電路的功能設(shè)備的正常工作都離不開固件的參與,固件程序是基于微控制器設(shè)備運行的核心。固件設(shè)計的目標就是控制硬件來完成預期的設(shè)備功能。USB設(shè)備也不例外,用戶必須編寫固件程序來輔助硬件完成USB通信任務。CY7C68013芯片的固件程序負責處理上位機發(fā)來的各種 USB設(shè)備請求,并負責控制 CY7C68013與外圍電路進行數(shù)據(jù)傳輸,其工作主要包括以下幾點[4]:
(1)初始化工作,包括設(shè)置一些特殊功能寄存器的初值以實現(xiàn)所需的設(shè)備屬性或者功能; (2) 對設(shè)備進行重新列舉(ReNumeration),主要的工作有:模擬設(shè)備的斷開與重新連接、對接收到的設(shè)置包進行分析判斷、對主機的設(shè)備請求作出適當?shù)捻憫瓿芍鳈C對設(shè)備的配置任務;
(3)響應中斷,并對中斷作相應的處理。USB接口在設(shè)備列舉、響應主機標準請求和廠商請求、數(shù)據(jù)傳送等動作過程中都會向微控制器申請中斷,因此微控制器必須正確處理這些中斷才能保證 USB傳輸?shù)恼_M行;
(4)數(shù)據(jù)的接收與發(fā)送。USB設(shè)備的主要任務就是進行數(shù)據(jù)的接收和發(fā)送,因此CY7C68013的固件程序必須要對接收和發(fā)送數(shù)據(jù)的端點進行正確的配置及控制,才能正確地接收和發(fā)送數(shù)據(jù);
(5)外圍電路的控制。USB接口要進行數(shù)據(jù)傳輸,CY7C68013就必須對外部 FIFO進行讀寫控制,因此固件程序中包含對外圍電路進行控制的代碼也是必要的。
評論