<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 安全與國防 > 設計應用 > 基于uSB 2.0接口的高速數據采集系統設計

基于uSB 2.0接口的高速數據采集系統設計

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

2.1.1 軟件設計的主要功能

  與軟件設計主要有以下幾種功能:初始化工作,包括設置一些特殊功能寄存器的初值以實(shí)現所需的設備屬性或者功能,例如開(kāi)中斷,使能端點(diǎn),配置端口等;輔助硬件完成設備的重新枚舉過(guò)程,包括模擬設備的斷開(kāi)與重新連接,對接收到的設置包進(jìn)行分析判斷,從而對主機的設備請求作出適當的響應,完成主機對設備的配置任務(wù);對中斷的處理;數據的接收和發(fā)送;外圍電路的控制。

  Cypress公司為了簡(jiǎn)化和加速用戶(hù)使用EZ-USBFX2芯片進(jìn)行USB外設的開(kāi)發(fā)過(guò)程,提供了一個(gè)完整的固件程序的架構,可以在KEILC5l環(huán)境下開(kāi)發(fā),用戶(hù)只需要提供一個(gè)USB描述符表,添加其他端點(diǎn)接收和發(fā)送數據的通信代碼,以及控制外圍電路的程序代碼。由于開(kāi)發(fā)框架的引入,大大縮短了用戶(hù)的研發(fā)周期。

  2.1.2 軟件設計的框架

  該框架由以下幾部分組成:

  (1)Fw.C中包含了程序框架的MAIN函數,管理整個(gè)51內核的運行,因為Cypress對這個(gè)部分的功能進(jìn)行了精心劃分,一般是不用改動(dòng)的。

  (2)用戶(hù)必須將PERIPH.C實(shí)例化,他負責系統周邊器件的互聯(lián)。固件的設計主要針對這個(gè)文件,用戶(hù)必須根據自己系統的需要,實(shí)例化這個(gè)文件,以實(shí)現自己的功能。在這個(gè)文件中有幾個(gè)函數是比較關(guān)鍵的,在這里做特別說(shuō)明:

  TD_Init函數 負責對USB端點(diǎn)進(jìn)行初始化設置。在FX2再次枚舉和開(kāi)始任務(wù)分配前被調用,其目的是初始化各個(gè)端口以及各端口的先入先出緩沖區。

  TD_Poll函數 負責系統中循環(huán)任務(wù)的處理。他主要是對各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢(xún),處理各種OUT或IN端點(diǎn)的交互。值得說(shuō)明的一點(diǎn)是,這種處理只是輔助性質(zhì)的,大部分工作由硬件自動(dòng)完成。

  DR-VendorCmnd函數 主要負責用戶(hù)自定義命令的譯碼工作,用戶(hù)請求通過(guò)端點(diǎn)O傳輸給內核。由于CY7C68013上SIE硬件的支持,用戶(hù)只需查詢(xún)固定地址單元即可獲得當前的命令代碼。

  DSCR.A51是描述表文件,負責的描述工作,CY7C68013在上電后自動(dòng)利用其中的VID和PID取代默認的VID和:PID。兩個(gè)包含文件EZtJSB.LIB和US-BJMPTB.OBJ,前者是EZUSB函數庫的二進(jìn)制文件,后者是USB的中斷向量表。

  固件調試,使用Cypress提供的EZ-LISB controlpanel,具體的操作讀者可以參考其自帶幫助。對編譯好的固件代碼,Cypress為L(cháng)ISB總線(xiàn)設備開(kāi)發(fā)者提供了2種方法向。EZ一USB芯片下載8051固件代碼:

  一種是主機通過(guò)軟件下載固件從主機上下載8051固件代碼,他為用戶(hù)提供了很大的靈活性。這種方法充分利用EZ-USB內部的8 k RAM來(lái)裝載8051代碼和數據。由于EZ-USB具有重新枚舉的能力,所以在初始化枚舉以后,用戶(hù)不需要斷開(kāi)設備就可以裝載新的。設備描述符和8051程序代碼都能通過(guò)主機中的磁盤(pán)文件下載;另外一種是由E2PROM通過(guò)I2C口來(lái)下載固件。EZ-USB支持外部E2PROM通過(guò)總線(xiàn)來(lái)下載固件,這種方式使開(kāi)發(fā)者可以從外圍硬件下載8051程序代碼。

  2.2驅動(dòng)程序設計

驅動(dòng)程序是開(kāi)發(fā)USB外設的一個(gè)關(guān)鍵,他在整個(gè)系統中處于主機端應用程序和設備端Firmware之間。他的主要作用是使操作系統能夠識別,并建立起主機端和設備端之間的通訊。

  程序屬于先進(jìn)的wDM(Win32 Driver Mod-e1)驅動(dòng)程序模式,支持即插即用功能。在wDM驅動(dòng)程序模式中,每個(gè)硬件設備至少有2個(gè)驅動(dòng)程序:一個(gè)為功能驅動(dòng)程序,即硬件設備的驅動(dòng)程序,他了解USB外設硬件工作的所有細節,負責初始化I/O操作;另一個(gè)為總線(xiàn)驅動(dòng)程序,他負責管理USB外設與主機的連接,如檢測接入主機的USB設備,并確定設備的資源使用情況等??偩€(xiàn)驅動(dòng)程序要負責枚舉總線(xiàn),并為每個(gè)設備創(chuàng )建一個(gè)PDO(物理設備對象)。當總線(xiàn)驅動(dòng)程序發(fā)現有設備接人或拔出總線(xiàn)時(shí),他要向上層驅動(dòng)程序報告事件的發(fā)生。功能驅動(dòng)程序位于總線(xiàn)驅動(dòng)程序的上層,他要為設備創(chuàng )建一個(gè)FDO(功能設備對象)。程序也稱(chēng)客戶(hù)驅動(dòng)程序,他從不直接與硬件對話(huà),僅靠創(chuàng )建USB請求塊URB,并使用程序接口USBDI將URB提交到總線(xiàn)驅動(dòng)程序就可以完成硬件操作。

  在windows操作系統下,開(kāi)發(fā)wDM驅動(dòng)程序可以有2種選擇:一種是選擇微軟公司的DDK(驅動(dòng)程序開(kāi)發(fā)包)。DDK提供了創(chuàng )建wDM驅動(dòng)程序的開(kāi)發(fā)環(huán)境,并提供了用于開(kāi)發(fā)Windows 2000和Windows XP驅動(dòng)程序的頭文件、庫函數、源代碼、各種工具和文檔資料;另一種選擇是使用一些驅動(dòng)程序的輔助開(kāi)發(fā)工具,比如Driver Stu-dio,windriver等,這些開(kāi)發(fā)工具可以根據用戶(hù)的需求,為用戶(hù)自動(dòng)生成驅動(dòng)程序,用戶(hù)只需要在生成驅動(dòng)程序前,在向導框中按照提示填入自己的需求,并對生成的驅動(dòng)程序做一些小的修改即可。

  Cypress FX2開(kāi)發(fā)包提供了一個(gè)通用的驅動(dòng)程序,可被用于基于EZ-系列芯片的設備。該程序可不加修改經(jīng)DDK編譯后直接使用,在應用中可以看到其運行穩定。當然,用戶(hù)也可以以這個(gè)驅動(dòng)程序為起點(diǎn),創(chuàng )建自己的驅動(dòng)程序。 2.3應用程序設計

  應用程序設計以驅動(dòng)程序為橋梁,對15SB設備進(jìn)行命令控制,處理設備傳回的數據,例如波形顯示、頻譜分析等。采集系統的主機端工作在Windows操作系統下,所以主機端應用程序的設計需要windows平臺下的開(kāi)發(fā)工具如Visual C++,C++Builder。等。主機端軟件的關(guān)鍵是實(shí)現從uSB設備讀取指定數量的數據以及向USB設備發(fā)送指定數量的數據,另外,還有向USB設備發(fā)送USB標準設備請求和特定的命令,這種命令包括廠(chǎng)商定義的命令和用戶(hù)自定義的命令。

  CypreSS FX2開(kāi)發(fā)包提供的EZ-USB通用驅動(dòng)程序為主機端的用戶(hù)態(tài)應用程序提供IJSB標準設備請求和數據傳輸的接口。所有用戶(hù)態(tài)程序訪(fǎng)問(wèn)EZ USB通用驅動(dòng)程序都是通過(guò)I/OControl調用。用戶(hù)態(tài)程序首先通過(guò)調用Win32函數CreatFile()得到設備驅動(dòng)程序的句柄。然后調用win32函數DeviceloControl(),通過(guò)得到的句柄把I/O Control Code(IOCTL)和相關(guān)的輸入輸出緩沖區提交給驅動(dòng)程序。用戶(hù)程序框圖如圖4所示。

  

3 結 語(yǔ)

  隨著(zhù)筆記本電腦的迅速普及,高性能便攜式采集系統將會(huì )受到工程師們越來(lái)越多的青睞,尤其是在RS 232接口已被大多數筆記本電腦擯棄的今天,對基于USB接口的數據采集系統的需求就變得更加迫切。在該高速同步數據采集系統的設計中,CY7C68013芯片靈活的接口和可編程特性簡(jiǎn)化了外部硬件的設計,提高了系統的可靠性,且利于設備的生產(chǎn)與調試。另外,設備的可熱插拔特性使該系統具有便攜式的特點(diǎn),使用方便,無(wú)需關(guān)機重啟或打開(kāi)機箱進(jìn)行安裝。事實(shí)證明,該基于2.0接口的系統完全滿(mǎn)足設計和使用要求。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>