基于USB 2.0的高速數據采集卡在虛擬儀器中的應用
USB控制器
數據采集接口卡是硬件部分的核心,選擇合適的能適用于USB協(xié)議的芯片是關(guān)鍵。EZ-USB FX2(即CY7C68013)是世界上首批USB2.0集成微控制器。其內部集成了USB2.0的收發(fā)器、串行接口引擎(SIE)、增強的8051微控制器和一個(gè)可編程的串行接口。
在外設未通過(guò)USB接口接到PC機之前,外設上的固件存儲在PC上;一旦外設連接到PC機上,PC先確認外設身份(即讀設備描述符),然后將該外設的固件下載到芯片的RAM中,這樣在開(kāi)發(fā)過(guò)程中當固件需要修改時(shí),可以在PC機上修改好后,下載到芯片中。
固件開(kāi)發(fā)
設備固件是設備運行的核心,它控制整個(gè)硬件系統的運行,并負責處理PC機發(fā)來(lái)的各種USB請求,以完成它們之間的數據傳輸。其主要功能包括控制放大模塊,實(shí)現通道選擇;控制A/D模塊的數據采集;通過(guò)FX2實(shí)時(shí)上傳采集數據給PC;控制FX2芯片接收并處理USB設備驅動(dòng)程序的請求(如設置USB接口狀態(tài)等多種USB協(xié)議標準請求)等。
由于固件的開(kāi)發(fā)流程比較復雜,故本設計中采用C語(yǔ)言進(jìn)行開(kāi)發(fā),這樣比較容易實(shí)現模塊化和分層結構化的程序設計。
EZ-USB FX2固件庫為用戶(hù)提供了底層Keil C函數庫。EZ-USB FX2軟件開(kāi)發(fā)包提供了該庫的目標文件,同時(shí)還提供了該函數庫的源代碼,用戶(hù)可以利用Keil C來(lái)重新編寫(xiě)該函數庫。
EZ-USB FX2固件是使用EZ-USB FX2程序框架或直接使用EZ-USB FX2固件庫開(kāi)發(fā)的程序,這是開(kāi)發(fā)USB外設的重要部分。EZ-USB FX2在其固件程序中把自己定義為USB大存儲類(lèi)、塊傳輸子類(lèi),操作系統中(Win98以上)有相應的USB類(lèi)設備驅動(dòng)程序來(lái)支持這種USB類(lèi)外設。在FX2的固件程序中寫(xiě)入USB通信模塊,就可以實(shí)現主機和USB設備的通信。
固件程序必須包括DSCR.A51(A51宏匯編器)、USBJmpTb.OBJ(目標文件轉換器)和Ezusb.lib(Ezusb C編譯器庫文件和啟動(dòng)代碼)。在固件程序框架中,定義了基本的USB設備的功能,一般不許修改。本設計要實(shí)現的具體功能則在應用層中的固件程序中完成。
應用程序開(kāi)發(fā)
根據實(shí)際要求,本系統需要通過(guò)軟件下載固件程序,以及對ADC、放大模塊、采集模塊進(jìn)行控制,同時(shí)還要接收或者發(fā)送數據。在采集開(kāi)始前,可以先將命令發(fā)送出去,實(shí)現在固件程序中定義的相應功能,如通過(guò)EZ-USB FX2口線(xiàn)控制前置放大模塊等。然后可以讀取傳送到主機的數據,或者向設備發(fā)送數據等。
Visual C++作為一種面向對象的集成開(kāi)發(fā)軟件,它最突出的特性就是封裝性、繼承性和多態(tài)性。所以,我們選用Visual C++來(lái)設計應用程序。
最后將用Visual C++編寫(xiě)好的USB應用程序封裝成DLL,即可在用Labview編寫(xiě)的虛擬儀器最上層應用程序中直接調用。
結語(yǔ)
本文就基于USB2.0的高速數據采集卡在虛擬儀器中的應用做了具體的闡述,將該系統應用于虛擬儀器中可實(shí)現熱插拔,克服了傳統數據采集卡插拔麻煩且擴展槽有限的缺點(diǎn)。USB2.0傳輸率達到480Mbps,可充分滿(mǎn)足高速采集的需求。所以,本文給出的基于USB2.0的高速數據采集卡在虛擬儀器的研制開(kāi)發(fā)中有著(zhù)很強的實(shí)用性和廣闊的應用前景。
參考文獻:
[1].AD9059datasheethttp://www.dzsc.com/datasheet/AD9059_122633.html.
[2].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
[3].AD8321datasheethttp://www.dzsc.com/datasheet/AD8321_1055558.html.
評論