<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于EZ-USB的數(shù)據(jù)傳輸接口設(shè)計

          基于EZ-USB的數(shù)據(jù)傳輸接口設(shè)計

          作者: 時間:2011-12-29 來源:網(wǎng)絡(luò) 收藏

           ?。啊∫?/FONT>

            USB控制器采用通用連接技術(shù)以實現(xiàn)與外設(shè)的簡單快速連接,具有連接靈活、使用方便、速度快、擴(kuò)展能力強(qiáng)等優(yōu)點,使得其一些高速、高精度的信號采集領(lǐng)域中, 具有極大的應(yīng)用價值[1]?!。牛冢眨樱滦蛄行酒粒危玻保常保咽牵茫穑颍澹螅蠊镜膬?nèi)嵌微控制器的80pin的USB接口控制芯片,它采用了一種基于內(nèi)部RAM的解決方案,允許客戶隨時不斷地設(shè)置和升級,不受端口數(shù)、緩沖大小、傳輸速度及傳輸方式的限制[2]。片內(nèi)嵌有一個增強(qiáng)型8051微控制器,與標(biāo)準(zhǔn)的8051相比,其速度快3倍。本文將USB控制器EZ-USB2131Q用于基于TMS320C5409的水聲信號采集及混沌特性研究系統(tǒng)中,實現(xiàn)了數(shù)據(jù)的高速傳輸。

           ?。薄。眨樱驴刂破髋cDSP的連接

           ?。保薄 。粒危玻保常保押停裕停樱常玻埃茫担矗埃沟挠布B接

            在TMS320C5409和USB控制器AN2131Q硬件連接中,采用FIFO(first?。椋睢。妫椋颍螅簟。铮酰簟。樱遥粒停┻B接方法,除了能確保DSP和主機(jī)間的數(shù)據(jù)傳輸速度只受USB協(xié)議限制外,還能使USB控制器和DSP之間的最大數(shù)據(jù)交換速度超過USB總線的速度。

            由于USB控制器AN2131Q內(nèi)嵌有加強(qiáng)型的8051處理器,可使用兩片FIFO(FIFO選用IDT72V02,它具有1K×9位的內(nèi)存)可以實現(xiàn)USB控制器和DSP之間的雙向通信。從USB控制器AN2131Q或者DSP傳輸?shù)臄?shù)據(jù)首先保存在FIFO中,然后再由DSP或者AN2131Q讀走,從而使得數(shù)據(jù)的傳輸不會出現(xiàn)堵塞情況,其硬件連接框圖如圖1所示。

            圖1  ?。粒危玻保常保押停裕停樱常玻埃茫担矗埃沟倪B接圖

            1.2       ?。粒危玻保常保押停桑模裕罚玻郑埃驳倪B接

           ?。桑模裕罚玻郑埃矤顟B(tài)信號有空(EF)、半滿(HF)和滿(FF),它們都在FIFO為低電平時有效。其與AN2131Q的連接如圖2所示。

            圖2  ?。粒危玻保常保押停桑模裕罚玻郑埃驳倪B接圖

            1.3 ?。粒危玻保常保押停裕停樱常玻埃茫担矗埃沟能浖B接

           ?。眨樱驴刂破鳎粒危玻保常保押停模樱兄g的軟件部分包括4個部分,分別是USB控制器AN213lQ對FIF01的寫、USB控制器AN2131Q對FIF02的讀、TMS320C5409對FIF01的讀、TMS320C5409對FIFO2的寫。為了描述的方便,將FIF01的3個狀態(tài)信號分別稱為 、 和 ,對應(yīng)FIF02的為 、 、 。

           ?。ǎ保眨樱驴刂破鳎粒危玻保常保褜懀疲桑疲希?/FONT>

            當(dāng)USB總線上有數(shù)據(jù)要傳送至TMS320C5409時, AN2131Q查詢 ,若 無效,?。粒危玻保常保岩淮蜗颍疲桑疲希睂懭胍粋€數(shù)據(jù)包(數(shù)據(jù)包要小于或等于FIFO1容量的一半),而且AN2131Q一次向FIFO1寫入每一個字節(jié)時不需再查詢 。

           ?。ǎ玻。裕停樱常玻埃茫担矗埃棺xFIFO1

           ?。裕停樱常玻埃茫担矗埃姑看螐模疲桑疲希敝凶x入一個數(shù)據(jù)包,每讀一個字節(jié)前,DSP需要查詢 ,只有當(dāng) 無效(FIFO1不為空)時,DSP才能進(jìn)行讀操作。

           ?。ǎ常。裕停樱常玻埃茫担矗埃箤懀疲桑疲希?/FONT>

            當(dāng)TMS320C5409有數(shù)據(jù)要傳送至主機(jī)時,TMS320C5409把數(shù)據(jù)打包,每次向FIFO2中寫入一包數(shù)據(jù),方法與USB控制器AN2131Q寫FIFO1相同,惟一不同的是TMS320C5409查詢的信號是 。寫完一包數(shù)據(jù)后,TMS320C5409通過操作控制字向USB控制AN2131Q發(fā)一個中斷信號,TMS320C5409在寫下一包數(shù)據(jù)時必須等到AN2131Q應(yīng)答。AN2131Q應(yīng)答的方法是利用TMS320C5409的外部中斷INT1中斷DSP。

            (4)USB控制器AN2131Q讀FIFO2

           ?。眨樱驴刂破鳎粒危玻保常保咽盏剑裕停樱常玻埃茫担矗埃拱l(fā)出的中斷信號,應(yīng)答DSP后,從FIFO2中讀入一包數(shù)據(jù),不用再查詢 。

           ?。病。眨樱陆涌谲浖O(shè)計

           ?。眨樱陆涌谲浖饕譃槿糠郑汗碳绦?、驅(qū)動程序、主機(jī)應(yīng)用程序。主機(jī)應(yīng)用程序通過驅(qū)動程序與系統(tǒng)USBDI(?。眨樱隆。模澹觯椋悖濉。桑睿簦澹颍妫幔悖澹┻M(jìn)行通信,由系統(tǒng)產(chǎn)生USB數(shù)據(jù)的傳送動作,固件程序則響應(yīng)來自系統(tǒng)的USB標(biāo)準(zhǔn)請求,完成各種數(shù)據(jù)的交換的時間處理。

            2.1?。牛冢眨樱鹿碳绦蜷_發(fā)

            固件代碼存儲在AN2131Q內(nèi)部的8KBR?。粒椭校怯脕沓跏蓟眨樱驴偩€設(shè)備的。固件代碼包括了設(shè)備的信息,它以描述符形式指定了制造商號、產(chǎn)品號和其他USB總線協(xié)議中所需要的信息,其主要功能是實現(xiàn)設(shè)備枚舉過程[3]。

            為了簡化和加速用戶對EZ-USB芯片的開發(fā)過程,Cypress公司提供了Keil C51 環(huán)境下編寫固件程序的框架。該框架集成了開發(fā)USB總線設(shè)備所需的基本函數(shù),用戶可以在此基礎(chǔ)上加入自己的代碼實現(xiàn)特定的要求。固件程序框架如圖3所示。

            圖3 ?。牛谝唬眨樱鹿碳绦蚩蚣?/FONT>

            EZ一USB固件程序框架首先初始化所有的內(nèi)部狀態(tài)變量,然后調(diào)用用戶初始化函數(shù)TD_Init(),然后初始化USB總線設(shè)備接口為非配置狀態(tài),并同時打開中斷。當(dāng)完成上面的任務(wù)后,EZ一USB 固件程序就開始重新枚舉設(shè)備直到端點0收到SETUP包為止。一旦EZ-USB收到SETUP包,固件程序就開始進(jìn)行任務(wù)分配[4]。任務(wù)分配就是依次重復(fù)地執(zhí)行下面的過程:

            (1) 調(diào)用用戶函數(shù)TD_Poll()。

           ?。ǎ玻z測是否有標(biāo)準(zhǔn)的設(shè)備請求,如果有,則執(zhí)行指令并做出相應(yīng)的操作。

            (3) 檢測USB核是否有USB掛起事件。如果有USB掛起事件,則調(diào)用用戶程序TD_Suspend()。當(dāng)TD_Suspend()返回為真時,USB核檢測是否有重新開始事件。當(dāng)檢測到有重新開始的事件,USB調(diào)用用戶程序TD_Resume(),并繼續(xù)執(zhí)行步驟3.

            固件代碼在Keil?。郑椋螅椋铮睿箔h(huán)境中編譯后,最終生成ezusb.hex文件。用USB線把DSP開發(fā)板接到PC機(jī)上,啟動“EZ-USB?。茫铮睿簦颍铮臁。校幔睿澹臁?,就可以把ezusb.hex文件下載到ANZ13lQ內(nèi)部的8K?。遥粒汀≈?。

            2.2?。牛冢眨樱买?qū)動程序開發(fā)

            驅(qū)動程序(USBD)是USB總線系統(tǒng)中負(fù)責(zé)管理USB的工作.?。眨樱驴偩€客戶軟件包含了用來控制不同USB總線外設(shè)的功能程序,它通過一個Windows定義的軟件接口與根集線器驅(qū)動程序進(jìn)行通信;而USB總線根集線器驅(qū)動程序則通過包含在USBD中的USBDI(USB驅(qū)動程序接口。)實現(xiàn)USBD的通信;然后,USBD 會選擇兩種主控制器之一同下方的主控制器進(jìn)行通信;最后,主控制器驅(qū)動程序會通過PCI枚舉器軟件直接實現(xiàn)對USB物理總線的訪問。

            USB總線設(shè)備驅(qū)動程序必須遵循Win32驅(qū)動程序模型(WDM),其擴(kuò)展名為.Sys。驅(qū)動程序主要實現(xiàn)的功能包括:設(shè)備初始化;即插即用設(shè)備的創(chuàng)建和刪除;處理Win32打開和關(guān)閉文件句柄請求;類功能定義IO?。茫裕蹋ǎ桑稀。茫铮睿簦颍铮欤?、功能實現(xiàn);IRP(I/O Request?。校幔悖耄澹簦┑恼{(diào)用處理;訪問硬件。

            為幫助設(shè)備和軟件的開發(fā)者測試USB總線設(shè)備請求和數(shù)據(jù)傳輸?shù)哪芰?,Cypress公司提供了EZ_?。眨樱峦ㄓ抿?qū)動程序GPD(General?。校酰颍穑铮螅濉。模颍椋觯澹颍?。GPD是用來和基于EZ_?。眨樱峦庠O(shè)接口的通用設(shè)備驅(qū)動程序,提供公共USB總線設(shè)備請求和數(shù)據(jù)傳輸?shù)挠脩魬B(tài)接口。使用GPD作為起始點,可以創(chuàng)建用戶特有的驅(qū)動程序。

           ?。ǎ保〗ⅲ牛冢撸眨樱隆。牵校?/FONT>

            建立GDP需要微軟的WDM?。模模撕臀④浀模郑椋螅酰幔臁。茫叮?。EZ-USB的GPD ezusb.sys是一個不用修改就可用的驅(qū)動程序,在自行開發(fā)外部設(shè)備的時,可以采用這個驅(qū)動程序作為USB驅(qū)動。

           ?。ǎ玻∮脩魬B(tài)和GPD的接口

            對于用戶態(tài)的應(yīng)用,可以使用VC++編譯工具CreateFile()和DeviceIoControl()。所有的用戶態(tài)通過I/O控制調(diào)用來訪問EZ_USB?。牵校牡?。一個用戶態(tài)程序首先通過調(diào)用一個Win32函數(shù)CreateFile( )來獲得設(shè)備驅(qū)動程序的句柄。然后用Win32函數(shù)DeviceIoControl()通過CreateFile(?。┖瘮?shù)返回的句柄,來提交I/O控制代碼和相關(guān)的輸入輸出緩沖區(qū)到驅(qū)動程序。

           ?。玻场。校脵C(jī)用戶程序開發(fā)

            后臺PC機(jī)用戶程序采用Visual C++6.0 編寫,主要功能是利用開發(fā)的USB驅(qū)動程序完成數(shù)據(jù)的發(fā)送和接收,并將數(shù)據(jù)保存為自己定義的格式。下面將詳細(xì)介紹利用USB驅(qū)動程序中定義的控制通道和塊傳輸通道進(jìn)行數(shù)據(jù)接收和保存的過程,并給出部分關(guān)鍵代碼。

           ?。ǎ保┐蜷_USB設(shè)備

           ?。拢希希獭。酰螅猓停幔颍耄弧 萎?dāng)前選定的USB 設(shè)備是否打開標(biāo)志。

           ?。酰螅猓停幔颍耄剑希穑澹睿眨樱拢ǎ弧危希穑澹睿眨樱潞瘮?shù)的功能是調(diào)用設(shè)備對應(yīng)的驅(qū)動程序,并獲得設(shè)備的描述,其返回值為 BOOL型,可以依此判斷設(shè)備是否正確工作。

            (2)定義命令請求和數(shù)據(jù)結(jié)構(gòu)。

           ?。悖瑁幔颉。猓酰妫妫澹颍郏叮矗荩弧味x數(shù)據(jù)緩沖區(qū);

           ?。眨蹋希危恰。觯澹睿洌澹颍欤铮睿纾剑?;

           ?。遥牛眩眨牛樱裕撸模粒裕痢。酰螅猓遥澹瘢酰澹螅?;∥定義USB 數(shù)據(jù)傳輸?shù)恼埱蠼Y(jié)構(gòu)。

            所有的 USB 設(shè)備是通過缺省控制通道對主機(jī)的請求發(fā)出響應(yīng),這些請求是由驅(qū)動程序控制傳送而完成的,請求以及請求的參數(shù)通過包的形式發(fā)向設(shè)備,這里定義的usbRequest就是請求的數(shù)據(jù)包,

           ?。ǎ常┨顚憯?shù)據(jù)傳輸?shù)恼埱蟛l(fā)送數(shù)據(jù)傳輸請求。

           ?。眨樱拢樱澹睿洌遥澹瘢ǎΓ酰螅猓遥澹瘢酰澹螅?,&buffer[0],vender-long);∥函數(shù)將請求交給USB 驅(qū)動程序,由驅(qū)動程序完成向USB設(shè)備的發(fā)送,USB設(shè)備接到請求后根據(jù)固件中的程序?qū)?shù)據(jù)發(fā)送回后臺PC機(jī)。

           ?。ǎ矗┻M(jìn)行數(shù)據(jù)的接收,本文采用的是塊傳輸模式。

           ?。拢眨蹋耍撸模粒裕痢。酰螅猓拢酰欤耄洌幔簦幔弧味x塊傳輸結(jié)構(gòu);

           ?。猓酰欤耄茫铮睿簦颍铮欤穑椋穑澹危酰恚剑保弧芜x擇傳輸管道;

           ?。猓酰妫妫澹颍剑Γ颍澹悖澹椋觯澹洌幔簦郏埃荩弧味x接收緩存區(qū);

           ?。眨蹋希危恰。欤澹睿纾簦瑁剑叮?;∥預(yù)接收的數(shù)據(jù)長度;

            BulkdataSend(&usbBulkdata,buffer,length);

            ∥BulkdataSend為數(shù)據(jù)接收函數(shù), 函數(shù)調(diào)用后傳回的數(shù)據(jù)保存在buffer中。

            經(jīng)過上述步驟即可把數(shù)據(jù)從DSP保存到后臺PC機(jī)內(nèi)存中。

           ?。场〗Y(jié)語

            本文使用USB控制器AN2131Q芯片實現(xiàn)了對高速信號的數(shù)據(jù)傳輸, 安裝簡單, 支持即插即用; 無需外接電源;并將其應(yīng)用到基于TMS320C5409的水聲信號采集及混沌特性研究系統(tǒng)通信中,充分驗證了此接口電路的可行性和具體設(shè)計的正確性。

            本文作者創(chuàng)新點: 通用串行總線USB是近年來一種新興的計算機(jī)外圍設(shè)備串行通信接口,它具有傳輸可靠、易于擴(kuò)展、低價并可熱插撥等特性。本文將EZ-USB 序列芯片AN2131Q用于水聲信號采集及混沌特性研究系統(tǒng)中,實現(xiàn)DSP與PC機(jī)間的通信,并在AN2131Q與DSP間加入兩片IDT72V02,使得數(shù)據(jù)的傳輸不會出現(xiàn)堵塞情況,提高了傳輸?shù)乃俣取?/FONT>



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();