基于TMS320C6713的USB數據傳輸系統設計

其中,通過Read_SX2reg()可判斷FIFO中的數據是否被發送,若被發送,則FIFO寄存器標志為空,反之,標志為滿。SX2_Fifo_Write()向相應的FIFO中寫入傳輸數據。其中ENDPOINT6表示使用EP6端點進行發送,ping+pingcnt表示要發送數據的首地址,FifoLength為發送數據的長度。系統采用USB 2.0進行數據傳輸,每個EP的FIFO緩沖大小為512 B,CY7C68001采用16位數據線與TMS320C613相連,故FifoLength大小設為256 B。
由于TMS320C6713通過EMIF的CE3存儲空間可以外擴USB 2.0接口,還需對。EMIF接口的CE3寄存器進行配置,將USB接口設為16位異步存儲接口,設定讀/寫的建立時間(Setup)、促發時間(Strobe)、保持時間,使其滿足CY7C68001的讀/寫時序要求。具體配置如下:

4 PC端應用程序
PC主機端需要編寫USB設備驅動程序和應用程序。USB設備驅動程序主要通過調用微軟的USBD.SYS來實現PC機于USB總線的數據交換,采用WDM(Windows Driver Mode)驅動程序進行編寫,分為USB底層驅動程序和USB功能驅動程序。USB底層驅動程序由操作系統提供,USB功能驅動程序由設備開發者進行編寫。
PC端應用程序采用VC++6.0編寫應用程序,首先調用OpenDriver()打開USB接口設備,獲得設備的句柄hDevice,之后調用Sx2SendVendor Req()函數向外設發出命令,讀取USB配置,最后調用Sx2BulkdataTrans()進行數據傳輸,通過調用CFile類將接收到的數據存放在文件名為“Collection.txt”的文本文件中。程序使用多線程技術,使得應用程序將USB數據傳輸在后臺進行處理,應用程序前臺還可進行其他操作。
程序簡單實現如下功能:當點擊“Start Sample”按鈕時,開始進行USB數據傳輸,點擊“Stop Sample”按鈕時,停止USB數據傳輸。采樣的多通道數據在應用程序中進行圖像顯示,方便對數據的判斷。
程序關鍵函數如下:

函數中myRequest的成員變量與DSP中斷程序中SetupBuff緩沖區的 8 B數據相對應,Sx2SendVendotReq()通過調用Windows API函數Devi ceIoControl()向DSP中發送命令,DSP端程序需與之配合,返回相應的數據,完成讀取USB配置。

通過對函數中bulkControl的成員變量pipenumber設置,確定PC主機端與CY7C68001的哪個端點進行數據傳輸,Sx2BulkdataTrans()也通過調用Windows API函數DeviceIoControl()向DSP中發送讀/寫數據命令,被傳輸的數據保存在buffer中。
評論