<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于TMS320C6416的USB數據傳輸系統設計

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

作者: 時(shí)間:2009-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏

引 言

由于DSP芯片的不斷發(fā)展,以及它處理數據速度快、處理數據量大的優(yōu)勢,已經(jīng)廣泛應用到數字信號處理的許多領(lǐng)域。在CT圖像重建系統中,DSP處理的數據需要上傳到PC機進(jìn)行存儲、顯示或進(jìn)行數據分析等,這就產(chǎn)生了PC機和DSP的問(wèn)題。總線(xiàn)具有傳輸速度高,以及即插即用等特點(diǎn),得到越來(lái)越廣泛的應用,利用總線(xiàn)實(shí)現DSP和PC機的通信,從而解決圖像信號的實(shí)時(shí)傳輸問(wèn)題。Cypress公司生產(chǎn)的CY7C68001通用 2.0接口控制器是基于應用層編程的接口器件,使用簡(jiǎn)單,開(kāi)發(fā)方便。

在此,以為例,討論如何使用CY7C68001對TMS32OC6416進(jìn)行USB接口設計,實(shí)現DSP和PC機通信,將DSP處理過(guò)的圖像信號實(shí)時(shí)傳到計算機中。

1 DSP與USB接口的硬件設計

是TI的高性能32位定點(diǎn)DSP,內核采用超長(cháng)指令字(VLIW)體系結構,有8個(gè)功能單元、64個(gè)32 b通用寄存器。一個(gè)時(shí)鐘周期同時(shí)執行8條指令,主頻可達1 GHz,處理性能高達8 000 MIPS,支持8/16/32/64 b的數據類(lèi)型。

CY7C68001用來(lái)連接微處理器或DSP的DMA從裝置,內部不含微處理器;支持高速(480 Mb/s)或全速(12 Mb/s)USB;提供USB 2.0協(xié)議要求的全部4種傳輸方式(控制傳輸、中斷傳輸、批量傳輸和同步傳輸),可以滿(mǎn)足用戶(hù)對各種類(lèi)型的需求。

1.1 接口的硬件設計

在該設計方案中,CY7C68001通過(guò)EMIFB與進(jìn)行異步通信,各個(gè)引腳的連接如圖1所示。DSP控制CY7C68001完成DSP與PC之間的異步通信。CY7C68001的相關(guān)引腳在接口中的作用:INT:表明CY7C68001有數據將要被讀出,或者有中斷事件發(fā)生;READY:通知TMS320C6416可以對CY7C68001進(jìn)行讀寫(xiě);FLAGA,FLAGB,FLAGC:反應由FAIFOADR[2:0]選擇的FIFO的狀態(tài);FLAGD:為片選信號;SLOE為CY7C68001驅動(dòng)數據總線(xiàn);SLRD:并口讀有效信號,在SLRD有效且同步通信時(shí),FIFO指針在每個(gè)IFCLK的上升沿遞增;PKTEND:總是高電平,將當前的緩沖區提交給USB;FD[15:0]:數據總線(xiàn);FIFO[2:0]:提供與TMS320C6416接口的FIFO地址選擇。

1.2 接口的訪(fǎng)問(wèn)

CY7C68001提供給DSP兩種軟件接口:

(1)命令接口:用來(lái)訪(fǎng)問(wèn)CY7C68001寄存器、End-point0緩沖器及描述表;

(2)FIFO數據接口:用來(lái)訪(fǎng)問(wèn)4個(gè)1 KB的FIFO中的數據。通過(guò)編程直接作為FIFO分配給。EP2,EP4,EP6,EP8。這兩個(gè)外部接口均可以通過(guò)同步或異步方式進(jìn)行訪(fǎng)問(wèn)。在此均采用異步的方式進(jìn)行訪(fǎng)問(wèn),命令口的命令字如下:

在表1中,A/D用于地址/數據的選擇,當其為0時(shí),表示本操作為數據讀或寫(xiě);當其為1時(shí),表示本操作為地址寫(xiě)。R/W用于讀/寫(xiě)操作的選擇,當其為0時(shí),進(jìn)行寫(xiě),當其為1時(shí),進(jìn)行讀。A[5:0]用于地址/數據的選擇,當Bit7=0時(shí),D[3:0]為數據半字節;D[5:4]為未用,命令字為8位,故命令字數據分二次讀出或寫(xiě)入;當Bit7=1時(shí),D[5:0]包含將要尋址的命令寄存器地址。

2 USB軟件設計

USB的軟件設計包括三方面:固件設計、驅動(dòng)程序設計和主機端應用程序設計。

2.1 固件設計

所有基于微控制器及外圍電路功能設備的正常工作都離不開(kāi)固件的參與,固件的作用就是輔助硬件工作。沒(méi)有固件的參與和控制,硬件設備無(wú)法實(shí)現預期的功能。USB設備也不例外,必須編寫(xiě)固件程序來(lái)輔助硬件完成USB的通信任務(wù)。由于采用不帶MCU內核的USB接口芯片,USB的應用層協(xié)議應該通過(guò)對TMS320C6416的編程來(lái)實(shí)現,USB固件的加載必須靠DSP的控制CY7C68001來(lái)完成。在CCS中用C語(yǔ)言完成固件程序的編寫(xiě),程序流程圖如圖2所示。

根據程序流程圖,固件設計思路如下:

(1)初始化工作。包括設置一些特殊功能寄存器的初值,以實(shí)現所需的設備屬性或功能,例如:配置端口、使能端點(diǎn)、開(kāi)中斷。該設計中,使CY7C68001工作于異步FIFO模式,將4 KB的FIFO對應到兩個(gè)端點(diǎn)(Endpoint),即Endpoint2和Endpoint6。

(2)輔助硬件完成設備的重新列舉過(guò)程。包括模擬設備的斷開(kāi)與重新連接,對接收到的設置包進(jìn)行分析判斷,從而對主機的設備請求做出適當的響應,完成主機對設備的配置任務(wù)。

(3)對中斷的處理。CY7C68001有6個(gè)中斷源,可以分別通過(guò)中斷使能對寄存器的各位進(jìn)行設置。一旦中斷事件發(fā)生,CY7C68001的INT引腳就被置低,并且置中斷使能寄存器的相應位(即中斷使能寄存器同時(shí)充當中斷標志寄存器,中斷使能寄存器具有讀寫(xiě)屬性)。當中斷發(fā)生時(shí),中斷標志寄存器的狀態(tài)字映射到FD[7:0];中斷發(fā)生后。DSP對CY7C68001簡(jiǎn)單的一次讀操作即可獲取中斷信息,識別中斷源并進(jìn)行相應處理。相對于中斷標志寄存器的讀操作,其他對CY7C68001寄存器的讀操作通常要先發(fā)送一次請求,并且收到READY響應后.才可以讀取數據。

(4)數據的接收與發(fā)送。在讀數據時(shí),應首先判斷CY7C68001的FIFO2是否為空,如果不為空,才將數據讀進(jìn)來(lái)。在寫(xiě)數據時(shí),還要判斷要寫(xiě)的數據個(gè)數是否為512 B的整倍數,如果不是,則使用PKTEND信號來(lái)標識數據包的結束。EP2和EP6分別對應存放USB需要上傳與接收的數據。其中,EP2為OUT型,負責從主機接收數據;EP6為IN型,負責向主機發(fā)送數據。EP2和EP6均采用批量(BULK)傳輸方式,這種傳輸方式具有數據可靠,傳輸速率高等特點(diǎn),特別適合大批量數據傳輸。部分關(guān)鍵代碼如下:

DSP讀端點(diǎn)2中的數據:

2.2 驅動(dòng)程序

在Windows平臺下,USB驅動(dòng)程序由三部分組成:USB設備驅動(dòng)程序、USB總線(xiàn)驅動(dòng)程序和USB主控制器驅動(dòng)程序。它們必須遵循Win32驅動(dòng)程序模型(WDM)。其中,Windows操作系統已經(jīng)提供了處于驅動(dòng)程序棧底的USB主控制器驅動(dòng)程序和USB總線(xiàn)驅動(dòng)程序(USBD.SYS)。USB設備的驅動(dòng)程序主要是通過(guò)調用USBD.SYS來(lái)實(shí)現PC機與USB總線(xiàn)的數據交換。USB驅動(dòng)程序主要完成以下功能:

(1)發(fā)現、配置、關(guān)閉USB設備。通過(guò)一系列有關(guān)即插即用(Plug and Play)的派遣函數來(lái)完成。例如Ezusb_PnPAddDevice(),Ezusb_DispatchPnp()等函數。

(2)驅動(dòng)程序與應用函數的接口。像Ezusb_Creat(),Ezusb_Close()等函數。應用程序調用Ezusb_Create()后,返回惟一的Windows句柄后,才能調用驅動(dòng)程序的其他函數,完成驅動(dòng)程序對CY7C68001的一系列操作和數據傳送。應用程序通過(guò)調用API函數CreateFile()來(lái)實(shí)現對Ezusb_Create()的訪(fǎng)問(wèn)。

(3)控制與數據傳送接口。這是驅動(dòng)程序的主要部分。它是Windows的異步I/O操作。應用程序使用標準Win32API函數DeviceIoControl()來(lái)執行這樣的操作。在驅動(dòng)一方,這個(gè)DeviceloControl()調用被轉化成一個(gè)帶IRP_MJ_DEVICE_CONTROL功能碼的IRP。像讀取與寫(xiě)入FIFO數據、endpoint0的操作均是通過(guò)異步I/O的方式來(lái)完成的。

2.3 主機應用程序

USB主機應用程序是計算機中完成特定功能的程序,其關(guān)鍵是實(shí)現從USB外設讀取或發(fā)送特定數量的數據、USB標準設備請求和特定的命令等。另外,可以、對數據做進(jìn)一步的處理,如:存儲、顯示、快速傅里葉變換等。主機應用程序的編寫(xiě)使用VC編譯環(huán)境中的API函數實(shí)現。應用程序的編程方法與串口編程類(lèi)似。首先必須查找設備,調用Win32函數CreateFilea()打開(kāi)設備的句柄;然后調用Win32函數DeviceloControl()就可以進(jìn)行數據讀寫(xiě)和控制操作;最后關(guān)閉設備句柄。在VC++6.0中用C++編寫(xiě)簡(jiǎn)單的上位機測試程序,得到測試結果如圖3所示。

3 結 語(yǔ)

在CT圖像重建系統中,高性能的DSP芯片具有高速的數據處理能力,利用設計的USB接口,能夠快速方便地實(shí)現實(shí)時(shí)傳輸。經(jīng)測試,該設計的USB接口傳輸速度可達35 Mb/s以上,具有較高的實(shí)用價(jià)值和良好的應用前景,而且對于使用其他微處理器開(kāi)發(fā)基于CY7C68001的USB 2.0接口也有很好的借鑒作用。



關(guān)鍵詞: TMS320C6416 USB 數據傳輸

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>