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

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

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

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

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