《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業(yè)界動態(tài) > 基于USB總線的實時數據采集系統(tǒng)設計

基于USB總線的實時數據采集系統(tǒng)設計

2009-04-13
作者:周振宇 谷海穎

??? 摘? 要: 基于通用串行總線(USB)的實時數據采集系統(tǒng)的設計嚴格遵循USB1.1協議,充分體現USB便捷、易擴展、低成本、低干擾的特點。詳細介紹系統(tǒng)的USB設備驅動程序、設備固件、應用程序的具體設計。?

??? 關鍵詞: 通用串行總線? 實時數據采集? 設備驅動程序

?

??? 現代工業(yè)生產和科學研究對數據采集的要求日益提高。目前比較通用的是在PC或工控機內安裝數據采集板卡,如A/D卡及422、485卡。這些數據采集設備存在以下缺陷:安裝麻煩;價格昂貴;受計算機插槽數量、地址、中斷資源限制,可擴展性差;在一些電磁干擾性強的測試現場,無法專門對其做電磁屏蔽,導致采集的數據失真。?

??? 通用串行總線(Universal Serial Bus,簡稱USB)是1995年康柏、微軟、IBM、DEC等公司為了解決傳統(tǒng)總線的不足推廣的一種新型串行通信標準。該總線接口具有安裝方便、高帶寬、易擴展等優(yōu)點,已經逐漸成為現代數據傳輸的發(fā)展趨勢?;赨SB的數據采集系統(tǒng)充分利用USB總線的上述優(yōu)點,有效解決了傳統(tǒng)數據采集系統(tǒng)的缺陷。?

1 系統(tǒng)硬件設計?

1.1 硬件總體結構?

??? USB實時數據采集系統(tǒng)硬件模塊包括A/D轉換器、微控制器、USB通信接口和多路模擬開關。硬件總體結構如圖1所示。?

1.2 USBN9602芯片?

??? USB接口芯片采用National Semiconductor公司的一種專用芯片USBN9602。該芯片內部集成微處理器接口、FIFO存儲器、時鐘發(fā)生器、串行接口引擎(SIE)、收發(fā)器、3.3V電壓轉換器,支持DMA、微波接口,內部結構如圖2所示。?

?

?

??? 微控制器通過8位的并行接口傳送A/D采集的數據,存儲在FIFO存儲器中;一旦FIFO存滿,SIE立刻對數據進行處理,其中包括:同步模式識別、并/串轉換、位填充/解填充、CRC產生與校驗、地址識別、握手響應與產生、USB特殊事件(Reset、Suspend、Resume)檢測;最后由收發(fā)器通過數據線(D+、D-)傳送數據至PC。上述過程嚴格遵守USB1.1協議。USBN9602與89C52的具體實現電路如圖3所示。?

?

?

2 系統(tǒng)軟件設計?

??? 系統(tǒng)軟件包括USB設備驅動程序、設備固件、應用程序。?

2.1 USB設備驅動程序開發(fā)?

??? USB系統(tǒng)驅動程序采用分層結構模型:較高級的USB設備驅動程序和較低級的USB 函數層。其中USB函數層由兩部分組成:較高級的通用串行總線驅動程序模塊(USBD)和較低級的主控制器驅動程序模塊(HCD)。它們的層次關系如圖4所示。?

?

?

??? 在上述USB分層模塊中,USB函數層(USBD及HCD)由Windows98提供,負責管理USB設備驅動程序和USB控制器之間的通信;加載及卸載USB驅動程序;與USB設備通用端點(endpoint)建立通信來執(zhí)行設備配置、數據與USB協議框架和打包格式的雙向轉換任務。目前Windows98提供了多種USB設備驅動程序,但并不針對實時數據采集設備,因此需采用DDK開發(fā)工具設計專用的USB設備驅動程序??梢杂伤膫€模塊實現:初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實現模塊。?

??? 初始化模塊提供一個DriverEntry入口點來執(zhí)行大量的初始化函數。?

??? 即插即用管理模塊實現USB設備的熱插拔及動態(tài)配置。當硬件檢測到USB設備接入時,Windows98查找響應的驅動程序,并調用它的DriverEntry例程,PnP管理器調用驅動程序的AddDevice例程,告訴它添加了一個設備;然后,驅動程序為USB設備建立一個FDO(功能設備對象),在此處理過程中,驅動程序收到一個IRP_MN_START_DEVICE 的 IRP,包括設備分配的資源信息。至此,設備被正確配置,驅動程序開始與硬件進行對話。當然,在設備運行過程中,如果設備的狀態(tài)發(fā)生變化(拔除、暫停等),PnP管理器也同樣發(fā)出相應的IRP,由驅動程序進行相應的處理。?

??? 電源管理模塊負責設備的掛起與喚醒。?

??? I/O功能實現模塊完成I/O請求的大部分工作。當應用程序提出I/O請求時,它調用Win32 API函數DeviceIoControl來向設備發(fā)出命令。然后,由I/O管理器構造一個IRP并設置其MajorFunction域為IRP_MJ_DEVICE_CONTROL。USB設備驅動程序收到該IRP后,取出其中的控制碼,并利用一個開關語句來找到對應的例程入口。?

2.2 設備固件(firmware)設計?

??? 設備固件是設備運行的核心,采用匯編語言設計。其主要功能是控制芯片USB9602接受并處理USB驅動程序的請求(如請求設備描述符、請求或設置設備狀態(tài)、請求設備設置、請求或設置設備接口等共10種USB1.1標準請求);控制芯片USB9602接受應用程序的控制指令;控制A/D模塊的數據采集;通過USB9602存儲數據并實時上傳PC。其程序主框圖如圖5所示。

?

?

??? 在圖5中,ALT事件表示硬件檢測到USBN9602處于下列狀態(tài):Reset、Resume、Suspend,由ALTEV寄存器匯報并產生中斷。?

2.3 應用程序設計?

??? PC機或工控機應用程序是數據實時采集系統(tǒng)的中心,采用Visual C++ 5.0編程。其功能主要有:開啟或關閉USB設備、檢測USB設備、設置USB數據傳輸管道(pipe)、設置A/D狀態(tài)和數據采集端口、實時從USB接口采集數據、顯示并分析數據。USB程序主框圖如圖6所示。?

?

?

??? 由于USB9602提供的FIFO不超過64字節(jié),當FIFO存滿后,USB9602自動將數據打包即時請求讀入數據,由SIE自動發(fā)送數據包。程序獲得數據后,需延遲至下組數據包準備完畢,從而保證程序與設備采集頻率同步。另外,當系統(tǒng)啟動A/D模塊后程序持續(xù)執(zhí)行,并采用多線程編程發(fā)出停止采集和關閉USB設備的命令。?

3 基于USB總線的數據實時采集系統(tǒng)特點?

??? 基于USB總線的數據實時采集系統(tǒng)設計上嚴格遵循USB1.1協議,其性能特點如下:?

??? (1)安裝方便,支持即插即用。安裝時可在不關機不打開機箱的情況下將設備插入USB插槽,運行驅動程序即可,以后可直接對設備熱插拔。?

??? (2)易擴展。最長傳輸距離5m,采用Hub或中繼器可達30m;最多對外可接127個設備。?

??? (3)供電方便。USB總線直接利用主機電源為外設提供最大5V 500mA的電流,系統(tǒng)無需另備電源。?

??? (4)電磁干擾影響極小。由于本產品放置在計算機機箱外,不受箱內的板間電磁干擾。如在電磁干擾較嚴重的環(huán)境下,可以為該產品專門設計屏蔽方案。?

??? (5)性價比高。遠優(yōu)于傳統(tǒng)的實時數據采集系統(tǒng)。?

??? (6)實時采集,實時顯示。?

參考文獻?

1 Compaq, Intel, Microsoft, NEC. Universal Serial Bus?Specification. Revision 1.1, September 23, 1998?

2 National semiconductor. USBN9602 (Universal Serial?Bus)Full Speed Function Controller With DMA Support.November 1998?

3 史 波,田 凱.通用串行總線USB技術概述.信息技術,2001; 4.?

4 毛德柱,周 凱.智能尋位加工技術中USB接口數據傳輸方式的應用研究.電子技術應用, 2000;26(3)

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。