基于USB數(shù)據(jù)采集系統(tǒng)的設(shè)計開發(fā)
目前,國內(nèi)外的數(shù)據(jù)采集系統(tǒng)常用的數(shù)據(jù)采集卡有RS-232、RS-485卡、PCI卡、ISA卡等。這些數(shù)據(jù)采集卡雖然有各自的優(yōu)點,但是也有各自的缺點。例如:RS-232、RS-485卡的傳輸速度較慢,PCI卡、ISA卡需要插在主機(jī)的PCI插槽或ISA插槽上,使用不方便等。通用串行總線(USB)是一種新的接口方式,具有連接方便、支持熱插拔、無需外接電源、傳輸速度高、功耗低等優(yōu)點。USB 2.0的最大傳輸速率高達(dá)480Mbps。因此,基于USB的數(shù)據(jù)采集系統(tǒng)在通信、遙感、智能儀器儀表、工業(yè)自動化等領(lǐng)域得到了廣泛應(yīng)用。
1 系統(tǒng)硬件設(shè)計
該數(shù)據(jù)采集系統(tǒng)的硬件部分主要由A/D轉(zhuǎn)換器AD7829,LPC2132微處理器,USB2.0接口芯片ISP1581和PC機(jī)組成。USB數(shù)據(jù)采集系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
數(shù)據(jù)采集系統(tǒng)的工作原理:由傳感器采集的信號經(jīng)調(diào)制電路放大、濾波等處理后,進(jìn)入由微處理器控制的AD7829進(jìn)行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字量進(jìn)入微處理器LPC2132并暫存在其中,隨后由USB接口芯片將數(shù)字量傳遞給PC機(jī)進(jìn)行數(shù)據(jù)處理,同時將PC機(jī)端的客戶應(yīng)用程序發(fā)出的控制信號通過USB接口傳送到以LPC2132為核心的數(shù)據(jù)采集系統(tǒng)[1]。
1.1 USB接口芯片
該數(shù)據(jù)采集系統(tǒng)選用ISP1581作為USB接口芯片,ISP1581是Philips公司推出的一款高性價比的USB2.0接口電路,支持7個IN端點,7個OUT端點和一個固定控制IN/OUT端點。ISP1581支持SUB2.0的自檢工作模式和USB1.1的返回工作模式,可以在高速或全速條件下正常運行。內(nèi)部集成有串行接口引擎(SIE)、PIE、8KB的FIFO存儲器、數(shù)據(jù)收發(fā)器、PLL的12MHz晶體振蕩器和3.3V的電壓調(diào)整器。該電路可直接與ATA/ATAPI外設(shè)相連,并具有高速DMA接口。傳輸速率最高可達(dá)480Mbps/s[2]。
1.2主控芯片和A/D轉(zhuǎn)換芯片
為了滿足速度的要求,主控芯片選用LPC2132。LPC2132是Philips公司的一款基于ARM7TDMI-STM 內(nèi)核的微控制器,帶有64kB的嵌入的高速Flash存儲器和16kB片內(nèi)靜態(tài)RAM。多達(dá)47個5V的通用I/O口,1個8路10位A/D轉(zhuǎn)換器,1個10位D/A轉(zhuǎn)換器,可提供不同的模擬輸出。多個串行接口,包括2個16C550工業(yè)標(biāo)準(zhǔn)UART、2個高速I2C接口(400kbit/s)、SPITM 和SSP。通過片內(nèi)PLL可實現(xiàn)最大為60MHz的CPU操作頻率[3]。
雖然LPC2132自帶1個8路A/D轉(zhuǎn)換器,但是其每通道轉(zhuǎn)換時間是2.44us,達(dá)不到高速數(shù)據(jù)采集的要求,因此選用AD7829模數(shù)轉(zhuǎn)換器。AD7829是一個8路8位模數(shù)轉(zhuǎn)換器,最大轉(zhuǎn)換率2Mbps,可以滿足系統(tǒng)設(shè)計要求。
1.3硬件接口電路
該數(shù)據(jù)采集系統(tǒng)硬件連接圖如圖2所示。
圖2硬件連接示意圖
模擬信號經(jīng)AD7829轉(zhuǎn)換后變?yōu)閿?shù)字量,數(shù)據(jù)先存放在LPC2132的寄存器里,再由LPC2132將數(shù)據(jù)傳送給ISP1581,在此將ISP1581的緩沖區(qū)定義為8個,分別寫入8路轉(zhuǎn)換后的數(shù)據(jù)。而PC機(jī)通過USB接口與ISP1581連接,ISP1581負(fù)責(zé)分類和解釋PC機(jī)發(fā)來的信號,具體操作流程如下:PC機(jī)發(fā)送給USB設(shè)備的數(shù)據(jù)以包的形式寫入ISP1581的緩存中,當(dāng)緩存被寫滿或數(shù)據(jù)發(fā)送完畢后,ISP1581就給LPC2132發(fā)中斷信號,LPC2132 響應(yīng)中斷信號進(jìn)入中斷服務(wù)程序執(zhí)行相應(yīng)的包處理。USB設(shè)備不能主動向主機(jī)發(fā)送數(shù)據(jù),只有當(dāng)PC機(jī)要求USB設(shè)備發(fā)送數(shù)據(jù)時,LPC2132才將主機(jī)需要的數(shù)據(jù)寫入ISP1581相應(yīng)端點的緩存中[4]。
2 系統(tǒng)軟件設(shè)計
本數(shù)據(jù)采集系統(tǒng)的軟件部分主要由:固件程序設(shè)計、應(yīng)用程序設(shè)計和USB驅(qū)動程序設(shè)計三部分組成。
2.1固件程序設(shè)計
固件程序中AD7829的轉(zhuǎn)換脈沖/CONVST是由LPC2132 的P0.18 口發(fā)出,當(dāng)AD7829轉(zhuǎn)換結(jié)束后輸出有效低電平,LPC2132接到有效電平后,發(fā)下一路地址(通過A0,A1,A2的高低電平配置)給AD7829,然后讀數(shù)據(jù),當(dāng)AD7829的/RD和/CS信號有效時,將數(shù)據(jù)讀人LPC2132的數(shù)據(jù)緩沖區(qū)的同時將下一路的地址打人,這樣循環(huán)采集8路模擬輸入,直到數(shù)據(jù)采集結(jié)束。
LPC2132與ISP1581之間的通信時靠LPC2132給ISP1581發(fā)送命令和數(shù)據(jù)來實現(xiàn)的。通過ISP1581的INT中斷信號與微控制器LPC2132的EINT0口相連,當(dāng)接收或發(fā)送數(shù)據(jù)成功時會產(chǎn)生中斷,固件程序?qū)@些中斷進(jìn)行響應(yīng)并完成設(shè)備的配置。設(shè)備固件程序采用Keil C進(jìn)行編寫,包括主循環(huán)程序、中斷服務(wù)程序、USB標(biāo)準(zhǔn)請求處理和批量數(shù)據(jù)傳送請求處理4部分。如圖3所示。
圖3 固件程序框圖
2.2 應(yīng)用程序設(shè)計
應(yīng)用程序包括Win32DLL程序和用戶應(yīng)用程序。Win32動態(tài)連接庫是包含共享函數(shù)庫的二進(jìn)制文件,可以被多個應(yīng)用程序同時使用??蛻魬?yīng)用程序則是實現(xiàn)數(shù)據(jù)采集系統(tǒng)功能的軟件程序,在本系統(tǒng)中采用Visual C++進(jìn)行編寫。
2.3 USB系統(tǒng)驅(qū)動程序設(shè)計
USB系統(tǒng)驅(qū)動程序采用分層結(jié)構(gòu)模型,如圖 4 所示。選用Microsoft公司提供的Windows驅(qū)動開發(fā)工具Windows DDK。
圖 4 USB分層驅(qū)動模型
應(yīng)用程序通過Win32 子系統(tǒng)利用一個Windows定義的軟件接口(API)來同根集線器驅(qū)動程序進(jìn)行通信。而USB根集線器驅(qū)動程序則要通過USBDI(通用串行總線驅(qū)動程序接口) 來實現(xiàn)同通用串行總線驅(qū)動程序(USBD)的通信。然后, US2BD會選擇兩種主控制器驅(qū)動程序之一來同其下方的主控制器進(jìn)行通信。最后,主控制器驅(qū)動程序會直接實現(xiàn)對USB 物理總線的訪問。在USB可用之前, 必須對其進(jìn)行配置和接口選擇, 然后所選擇接口的各個管道才是可用的。在USBDI的基礎(chǔ)上進(jìn)行編程將大大簡化, 用戶不用關(guān)心IRP的類型, 而只需要在相應(yīng)的分發(fā)例程中通過構(gòu)造USB塊并將其通過USBDI發(fā)送下去,就可以實現(xiàn)對USB設(shè)備的控制[5]。
3 結(jié)束語
USB數(shù)據(jù)采集系統(tǒng)優(yōu)于傳統(tǒng)的實時數(shù)據(jù)采集系統(tǒng),它具有安裝方便,支持即插即用,易于擴(kuò)展,電磁干擾小,性價比高等優(yōu)點。系統(tǒng)采用ARM7 芯片LPC2132和USB 2.0接口控制芯片ISP1581,實現(xiàn)數(shù)據(jù)采集系統(tǒng)的軟硬件設(shè)計開發(fā)。在實驗測試中,使用信號發(fā)生器生成8路模擬信號并將其接到數(shù)據(jù)采集系統(tǒng)的輸入端,在PC機(jī)上可顯示出對應(yīng)的8路模擬信號波形,單路采樣率為150 kSPS,達(dá)到系統(tǒng)設(shè)計的要求,證明了設(shè)計的正確性和實用性。
參考文獻(xiàn)
[1] 王立萍,吳黎明.基于嵌入式USB數(shù)據(jù)采集系統(tǒng)的設(shè)計開發(fā) [J]. 電子測量技術(shù),2007,30(9):24~26
[2] ISP1581 Users Manual [Z].Philips Corp
[3] 周立功,張華.深入淺出ARM7[M].北京:北京航空航天大學(xué)出版社,2005.52~53.
[4] 張廣利,閻有運.基于AT89S52的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計[J] .儀器儀表用戶,2008,03:33~35.
[5] 周沖,劉鎮(zhèn).基于AT89S52的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計[J] .科學(xué)技術(shù)與工程,2007,7(22):5935~5938