??? 摘? 要: 基于通用串行總線(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)