基于USB接口的實(shí)用型數(shù)據(jù)采集卡設(shè)計(jì)
Windows系統(tǒng)對(duì)構(gòu)成一個(gè)USB總線(xiàn)主機(jī)的不同軟件部分進(jìn)行了明確的劃分,如圖4所示,其中USB客戶(hù)軟件僅僅包含了用來(lái)控制不同的USB外設(shè)的設(shè)備驅(qū)動(dòng)程序。USB客戶(hù)軟件會(huì)通過(guò)一個(gè)Windows所定義的一個(gè)軟件接口來(lái)同根集線(xiàn)器驅(qū)動(dòng)程序進(jìn)行通信。而USB根集線(xiàn)器驅(qū)動(dòng)程序則要通過(guò)USBDI(通用串行總線(xiàn)驅(qū)動(dòng)程序接口)來(lái)實(shí)現(xiàn)同USBD通用串行總線(xiàn)驅(qū)動(dòng)程序)的通信。然后,USBD會(huì)選擇兩種主控制器驅(qū)動(dòng)程序(UHCD和OpenHCI)之一來(lái)同其下方的主控制器進(jìn)行通信。最后,在USB總線(xiàn)和主機(jī)控制器之間存在一個(gè)PCI總線(xiàn)枚舉器,它負(fù)責(zé)在檢測(cè)到系統(tǒng)中存在一個(gè)通用串行總線(xiàn)時(shí),裝載適當(dāng)?shù)腢SB總線(xiàn)系統(tǒng)軟件,主控制器驅(qū)動(dòng)程序會(huì)通過(guò)PC工枚舉器軟件直接實(shí)現(xiàn)對(duì)USB物理層總線(xiàn)的訪(fǎng)問(wèn)。HCD與USBD代表了基于對(duì)不同層次的抽象的軟件接口,它們能以某種方式共同工作,以滿(mǎn)足USB系統(tǒng)的整體要求。
3.2 固件程序開(kāi)發(fā)
設(shè)備固件是設(shè)備運(yùn)行的核心,它控制整個(gè)硬件系統(tǒng)的運(yùn)行,并負(fù)責(zé)處理PC機(jī)發(fā)來(lái)的各種USB請(qǐng)求,以完成它們之間的數(shù)據(jù)傳輸。其主要功能包括控制放大模塊、實(shí)現(xiàn)通道選擇;控制A/D模塊的數(shù)據(jù)采集;通過(guò)FX2實(shí)時(shí)上傳采集數(shù)據(jù)給PC;控制FX2芯片接收并處理USB設(shè)備驅(qū)動(dòng)程序的請(qǐng)求(如設(shè)置USB接口狀態(tài)等多種USB協(xié)議標(biāo)準(zhǔn)請(qǐng)求)等。
Cypress公司提供的EZ-USB FX2軟件包為用戶(hù)開(kāi)發(fā)基于EZ-USB FX2系列芯片的USB設(shè)備的編程提供了很大的方便。無(wú)論是開(kāi)發(fā)基于外設(shè)的8051固件程序,還是開(kāi)發(fā)基于USB主機(jī)的設(shè)備驅(qū)動(dòng)程序或應(yīng)用程序,該軟件包都提供了較完備的程序框架和例程庫(kù)。
EZ-USB FX2固件庫(kù)為用戶(hù)開(kāi)發(fā)EZ-USB FX2固件提供了底層Keil C函數(shù)庫(kù)。EZ-USB FX2軟件開(kāi)發(fā)包提供了該庫(kù)的目標(biāo)文件,同時(shí)還提供了該函數(shù)庫(kù)的源代碼,用戶(hù)可以利用Keil來(lái)重新編寫(xiě)該函數(shù)庫(kù)。
EZ-USB FX2固件是使用EZ-USB FX2程序框架或直接使用EZ-USB FX2固件庫(kù)開(kāi)發(fā)的程序,這是開(kāi)發(fā)USB外設(shè)的重要部分。
FX2在其固件程序中把自己定義為USB大存儲(chǔ)類(lèi)、塊傳輸子類(lèi),操作系統(tǒng)(Win98以上)有相應(yīng)的USB類(lèi)設(shè)備驅(qū)動(dòng)程序來(lái)支持這種USB類(lèi)外設(shè),而不需要另外在操作系統(tǒng)內(nèi)安裝其驅(qū)動(dòng)程序。在FX2的固件程序中寫(xiě)入U(xiǎn)SB通信模塊,就可以實(shí)現(xiàn)主機(jī)和USB設(shè)備的通信。
固件程序必須包括DSCR.A51(A51宏匯編器), USBJmpTb.OBJ(目標(biāo)文件轉(zhuǎn)換器)和Ezusb.lib ( Ezusb C編譯器庫(kù)文件和啟動(dòng)代碼)。
固件程序有兩個(gè)C文件,一個(gè)是FW.C,即框架程序,定義了基本的USB設(shè)備的功能,一般不許修改。另一個(gè)是FUNCTION.C(FUNCTION為自己命名),本設(shè)計(jì)要實(shí)現(xiàn)的具體功能在此文件中完成。
3.3 應(yīng)用層程序
應(yīng)用層程序用Visual C++6.0來(lái)開(kāi)發(fā),它可以直接調(diào)用底層的設(shè)備驅(qū)動(dòng)程序。利用VC開(kāi)發(fā)的應(yīng)用軟件具有高效、美觀(guān)、操作方便等優(yōu)點(diǎn)。
圖5 軟件流程圖
如圖5所示,本系統(tǒng)需要通過(guò)軟件下載固件程序,對(duì)ADC、放大模塊、采集模塊進(jìn)行控制,同時(shí)還要接收或者發(fā)送數(shù)據(jù)。在采集開(kāi)始前,可以先將命令發(fā)送出去,實(shí)現(xiàn)在固件程序中定義的相應(yīng)功能,如通過(guò)FX2口線(xiàn)控制前置放大模塊等。然后可以讀取傳送到主機(jī)的數(shù)據(jù),或者向設(shè)備發(fā)送數(shù)據(jù)等。
本文作者創(chuàng)新點(diǎn): 本文設(shè)計(jì)的USB2.0為接口的數(shù)據(jù)采集卡,采樣及數(shù)據(jù)傳輸速度都達(dá)到了24Mb/s,達(dá)到國(guó)內(nèi)先進(jìn)水平。同時(shí)該系統(tǒng)具有簡(jiǎn)單實(shí)用,硬件成本低,構(gòu)造簡(jiǎn)單,復(fù)用性良好,功能強(qiáng)大的特點(diǎn),也是該系統(tǒng)的優(yōu)勢(shì)之處。
評(píng)論