高速USB接口設計
Void TD_PoLL(void):此函數(shù)在設備運行時被重復的調用,應包括完成特別任務的代碼。在該函數(shù)返回前,優(yōu)先級高的任務可能己完成。若它返回值為假,EZ―USBFX2將不會影響設備請求和USB總線設備掛起事件。若需要大量的處理時間,EZ-USBFX2會通過多次調用TD_PoLL函數(shù)將時間分段。
BooL TD_suspend(void):此函數(shù)是在設備進入掛起狀態(tài)前調用,在其中加入適當?shù)拇a,配置設備的工作狀態(tài),可使設備處于低功耗狀態(tài)并返回真值。可以改動TD_Suspend的程序代碼,使其返回為假,可使EZ-USBFX2不進入掛起狀態(tài)。
Void TD_Resume (void):當外部要求重新啟動時,設備會通過調用此函數(shù)對處理器重啟,即TD_SUspendO函數(shù)的逆操作。此時,設備在正常電源下重新啟動。設備請求函數(shù)主要完成對來自主機的命令和請求的處理工作。
4.2 固件主程序
fw.c是固件程序的主程序文件,負責處理主機發(fā)出的各種USB設備請求。該程序首先初始化所有的內部狀態(tài)變量,然后調用TD_InitO函數(shù)初始化,并打開中斷。然后,固件程序開始列舉USB設備,直至在端點0上接收到SETUP包為止。一旦接受到令牌包,框架將開始交互的任務調度。
整個系統(tǒng)實現(xiàn)過程中,設置一些重要寄存器。表1列出EZ―USBFX2為異步從屬FIFO自動模式時,需要配置的相關寄存器。本文引用地址:http://2s4d.com/article/188948.htm
5 FPGA程序的設計
編程思路:由于CY7C68013設置為異步SlaveFIFO模式,根據(jù)異步FIFO讀寫狀態(tài)圖,選擇狀態(tài)機來編寫進程。其狀態(tài)圖如圖3所示。
6 結語
以CY7C68013和FPGA接口為例描述了USB芯片的SlaveFIFO固件程序流程和設計思想,并且在項目中得到了實際應用,并且數(shù)據(jù)連續(xù)傳輸無誤碼,無丟失。
評論