基于TMS320C6713的USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
TMS320C6713使用CY7C68001作為從設(shè)備。在這種模式下,DSP可以像讀/寫普通FIFO一樣對CY7C68001內(nèi)部的FIFO進(jìn)行讀/寫。PC主機(jī)發(fā)出命令的同時(shí)也由CY7C68001的引腳提供中斷觸發(fā)信號給DSP的EXT_INT6。其上升沿被檢測到以后,DSP就進(jìn)入相應(yīng)中斷服務(wù)程序,開始處理USB的傳輸。DSP通過EA[4:2]連接FIFOA[2:0]對CY7C68001內(nèi)部FIFO或命令口進(jìn)行選擇。讀/寫數(shù)據(jù)通過ED[15:0]與FIFO[15:0]連接進(jìn)行。FIFO和命令口的選擇和地址分配如表1所示。本文引用地址:http://www.ex-cimer.com/article/155122.htm
經(jīng)實(shí)驗(yàn)驗(yàn)證,USB異步傳輸速率可達(dá)3 Mb/s。
3 USB程序配置
USB程序在實(shí)現(xiàn)了在DSP端對USB初始化和USB數(shù)據(jù)傳輸。USB定義了4種傳輸類型:同步傳輸、中斷傳輸、控制傳輸和塊傳輸。同步傳輸適用于傳輸大量的、速度恒定的、且對服務(wù)周期有要求的數(shù)據(jù);中斷傳輸適用于傳輸少量或中量的、且對服務(wù)周期有要求的數(shù)據(jù);控制傳輸適用于傳輸少量的、且對傳輸時(shí)間和傳輸速率均無要求,但必須保證傳輸?shù)臄?shù)據(jù);塊傳輸適用于傳輸大量的、且對傳輸時(shí)間和傳輸速率均無要求的數(shù)據(jù)。該系統(tǒng)設(shè)計(jì)CY7C68001采用并行異步存儲器接口與TMS320C6713相連接,數(shù)據(jù)傳輸量較大,要求數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,因此選擇塊傳輸作為USB的傳輸方式。
首先,通過調(diào)用用戶的初始化函數(shù),使能外部中斷并初始化USB寄存器。之后,程序通過數(shù)據(jù)傳輸函數(shù),完成了DSP與PC機(jī)的數(shù)據(jù)傳輸。
USB初始化程序配置為:使能外部中斷6(EXT_INT6);加載USB描述表,并進(jìn)行自舉檢測,如自舉不成功,則重新自舉,直到端點(diǎn)0收到設(shè)置包為止;配置USB為異步從FIFO(Asynchronous Slave FIFO)模式,采用內(nèi)部的48 MHz時(shí)鐘源;讀取FNADDR寄存器,判斷USB工作狀態(tài);依據(jù)USB工作狀態(tài),配置EP2,EP4,EP6,EP8,并設(shè)置一次傳送的字節(jié)長度。設(shè)置EP2,EP4為BULK OUT,EP6,EP8為BULK IN。其緩沖大小分別為2×512B。
在數(shù)據(jù)傳輸過程中,PC端通過EP2向DSP發(fā)送讀數(shù)據(jù)命令,DSP通過外部中斷收到讀命令后,使用EP6發(fā)送已采集好的數(shù)據(jù)。在聲音數(shù)據(jù)采集系統(tǒng)中,每路麥克風(fēng)以每秒96 kHz進(jìn)行24位采樣,按照ping-pong方式進(jìn)行存儲。因此在USB_TRANSFER()還需進(jìn)行判斷,當(dāng)采集數(shù)據(jù)存儲在ping緩存時(shí),發(fā)送pong緩存中的數(shù)據(jù);當(dāng)采集數(shù)據(jù)存儲在pong緩存時(shí),發(fā)送ping緩存的數(shù)據(jù)。
數(shù)據(jù)傳輸程序配置如下:判斷EP2是否有讀命令;傳輸存放在ping,pong緩存中已采集到的數(shù)據(jù)。
程序中部分代碼如下:
評論