《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計
基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計
王寶珠, 楊 永, 林永峰, 常秀穎
河北工業(yè)大學(xué) 信息工程學(xué)院, 天津 300401
摘要: 設(shè)計了基于USB2.0接口的數(shù)據(jù)采集系統(tǒng)。系統(tǒng)硬件主要由信號調(diào)理電路、USB2.0芯片CY7C68013及A/D轉(zhuǎn)換器MAX125組成。軟件部分主要包括固件設(shè)計、驅(qū)動程序設(shè)計和應(yīng)用程序設(shè)計三部分。
中圖分類號: TN919
文獻(xiàn)標(biāo)識碼: B
Design of data acquisition system based on USB interface
WANG Bao Zhu, YANG Yong, LIN Yong Feng, CHANG Xiu Ying
College of Information Engineering, Hebei University of Technology, Tianjin 300401, China
Abstract: A data acquisition system based on USB2.0 is designed. In the hardware design part, signal processing circuit、USB2.0 serial chip CY7C68013 and A/D convertor MAX125 are included. The software part mainly consists of three parts: firmware design, driver program design and application program design.
Key words : universal serial bus; speech signal; general programmable interface

    隨著大規(guī)模集成電路與計算機技術(shù)的飛速發(fā)展,數(shù)據(jù)采集在語音處理、智能儀器、工業(yè)自動化及生物醫(yī)學(xué)工程等眾多領(lǐng)域中的地位日益突出,并且對數(shù)據(jù)采集的各項技術(shù)指標(biāo)要求越來越高。傳統(tǒng)的數(shù)據(jù)采集卡主要有PCI卡或者ISA卡,這些采集卡都存在著各種各樣的缺陷,比如傳輸速度慢、不支持熱插拔、安裝不方便、受計算機地址、中斷和插槽的限制,可擴(kuò)展性差等[1]。
    近年來,USB接口以其傳輸速度快、成本低、可靠性高、支持即插即用和熱插拔等優(yōu)點[2],迅速成為數(shù)據(jù)傳輸?shù)闹髁?。因此,開發(fā)這種基于USB2.0的高速數(shù)據(jù)采集系統(tǒng),代表了現(xiàn)代數(shù)據(jù)采集和傳輸?shù)陌l(fā)展趨勢,必將被越來越多的用戶所接受。
1 系統(tǒng)工作原理與硬件結(jié)構(gòu)
    基于USB接口的數(shù)據(jù)采集系統(tǒng)的硬件部分主要包括信號調(diào)理電路、A/D轉(zhuǎn)換電路、USB控制電路三部分。PC機端的應(yīng)用程序通過USB主機發(fā)送控制信號,通知CY7C68013開始數(shù)據(jù)采集。當(dāng)CY7C68013接收到控制信號以后,通過GPIF模式發(fā)送控制波形到MAX125,控制其開始的數(shù)據(jù)轉(zhuǎn)換。當(dāng)MAX125接收到控制信號以后,開始進(jìn)行數(shù)據(jù)采集。采集完成后,在USB主機控制器的控制下,MAX125把轉(zhuǎn)換后的數(shù)字信號發(fā)送到CY7C68013,最后通過USB總線把采集到的數(shù)據(jù)發(fā)送到PC機,并進(jìn)行相應(yīng)的處理。
    系統(tǒng)硬件框圖如圖1所示。


1.1 信號調(diào)理電路和電源電路
    擬電壓范圍為-5 V~+5 V,所以在輸入信號進(jìn)入之前必須進(jìn)行相應(yīng)的處理。本設(shè)計所采集的語音信號的電壓范圍是0~30 mV,初步調(diào)理之后的電壓范圍為0~2 V,為了得到所需的增益,采用同相輸入放大電路對初步調(diào)理后的電壓放大。完成電壓轉(zhuǎn)換后,還必須由低通濾波器濾除高頻信號,在本設(shè)計中,采用4階巴特沃斯濾波器。濾波電路和放大電路所采用的放大器為OP07,其輸入電壓范圍為±3 V~±22 V。本設(shè)計采用開關(guān)電源供電,提供的輸出電壓為±5 V、12 V,其中,MAX125需要5 V的數(shù)字電源和±5 V的模擬電源工作,運算放大器的供電電壓為5 V和-5 V,而系統(tǒng)中USB2.0芯片采用3.3 V供電,為此,需要電源轉(zhuǎn)換模塊以獲得系統(tǒng)所需要的電源電壓值,其中5 V轉(zhuǎn)3.3 V電壓用到AS1117-3.3系列芯片。
1.2 USB控制電路
    USB2.0傳輸芯片采用CYPRESS公司的CY7C68013A-56PIN,芯片的商標(biāo)號是FX2。EZ-USB FX2微處理器是世界上第一款集成USB2.0的微處理器,具有增強型的8051內(nèi)核性能、集成度高、方便靈活的軟配置和快捷的軟件開發(fā)工具等主要特性[3]。該芯片的內(nèi)部結(jié)構(gòu)如圖2所示,其中主要包括USB2.0收發(fā)器、串行引擎(SIE)、增強型的8051內(nèi)核、16 KB的RAM、4 KB的FIFO存儲器、I/O接口、8位數(shù)據(jù)總線、16位地址總線和通用可編程接口(GPIF)。


    EZ-USB FX2是整個系統(tǒng)的控制核心,除了完成與上位機的USB總線通信,還要實現(xiàn)對A/D采樣電路的控制。CY7C68013本身有一個4 KB的內(nèi)部FIFO存儲器,可以滿足常規(guī)的數(shù)據(jù)采集的需求,更重要的是其內(nèi)部還提供了一個用于控制FIFO存儲器的通用可編程接口(GPIF),大大方便了用戶的需求[4],而且在GPIF的控制下,內(nèi)部的FIFO利用其高速緩沖區(qū)可以在不需要固件的參與下與USB之間進(jìn)行自動高速通信。GPIF是一個內(nèi)置接口控制器,用來取代外接的控制邏輯,可以工作在內(nèi)部時鐘(30 MHz或48 MHz),也可以由外部時鐘驅(qū)動(5 MHz~48 MHz)。GPIF的核心實際上是一個可編程狀態(tài)機,最多可產(chǎn)生6個控制信號和9位地址總線。4個用戶定義的波形描述符控制這個狀態(tài)機,一般來講,有單次讀取、單次寫入、連續(xù)讀取、連續(xù)寫入4個波形[5]。在GPIF模式下,讀和寫的操作都是從EZ-USB的角度來說的。即一個讀波形數(shù)據(jù)傳輸表示數(shù)據(jù)從外部邏輯傳輸?shù)紼X-USB的內(nèi)部FIFO,而一個寫波形數(shù)據(jù)傳輸表示數(shù)據(jù)傳輸從EZ-USB內(nèi)部的FIFO發(fā)送到外部邏輯。FX2用4個波形描述符來控制各個狀態(tài),這些波形描述符可動態(tài)地配置給任何一個端點FIFO。配置后GPIF將依據(jù)波形描述符產(chǎn)生相應(yīng)的邏輯控制CTL及握手信號RDY來和外界接口,以滿足向FIFO讀寫數(shù)據(jù)的需要。GPIF的數(shù)據(jù)總線可以是8位,也可以是16位,本設(shè)計采用16位數(shù)據(jù)總線。
1.3 硬件連接圖
    EZ-USB FX2接口芯片和MAX125芯片的連接圖如圖3所示。

 
2 系統(tǒng)軟件設(shè)計
 系統(tǒng)的軟件設(shè)計主要包括固件設(shè)計、驅(qū)動程序設(shè)計和應(yīng)用程序設(shè)計3部分。
2.1 固件程序設(shè)計
    固件程序是整個程序設(shè)計的核心,它主要負(fù)責(zé)處理PC機發(fā)送來的各種USB設(shè)備請求,并與外圍電路進(jìn)行交換,存放在主機上,當(dāng)系統(tǒng)上電或連接時將其自動下載到芯片的RAM中,并由8051執(zhí)行。固件程序主要包括設(shè)備初始化和GPIF波形控制。固件程序流程如圖4所示。


    USB的固件程序是由main主函數(shù)處開始執(zhí)行的,在主函數(shù)中,主要的初始化有:初始化休眠模式、遠(yuǎn)程呼喚和自供電;初始化用戶設(shè)備。其中設(shè)備初始化包括FX2工作模式的配置和數(shù)據(jù)采集參數(shù)的配置。FX2工作模式配置主要包括時鐘模式和端點配置,用到的寄存器有CPUCS和EP2CFG。端點0作為控制傳輸,端點2作為輸入端點,傳輸方式為批量傳輸。這部分程序主要位于TD_Init( )中,此外還包括對生成的GPIF.C中的GPIF寄存器的初始化函數(shù)GPIFInit()的調(diào)用。
    GPIF編程主要包括GPIF工作模式的初始化、GPIF波形描述符配置、GPIF觸發(fā)三部分內(nèi)容。GPIF工作模式初始化主要是對寄存器IFCONFIG、EP2FIFOCFG進(jìn)行配置,即IFCONFIG=0xFA,EP2FIFOCFG=0x09。GPIF對MAX125的控制是按照GPIF波形描述符所表達(dá)的時序進(jìn)行的。根據(jù)MAX125提供的讀寫時序,本系統(tǒng)利用CYPRESS提供的開發(fā)工具GPIF Designer設(shè)計了GPIF波形描述符。GPIF觸發(fā)過程是在TD_Poll()中實現(xiàn)的,其中寫AD控制字波形的代碼為:XGPIFSGLDATLXH=gdata[13:8],XGPIFSGLDATLXL=gdata[7:0];啟動GPIF FIFO讀傳輸?shù)拇a為:GPIFTRIG=GPIFTRIGRD|GPIF_EP2。
2.2 驅(qū)動程序設(shè)計
    設(shè)備驅(qū)動程序的主要作用是使操作系統(tǒng)能夠識別USB設(shè)備,并建立起主機和設(shè)備之間的通信。USB驅(qū)動程序采用WDM驅(qū)動模型[6],支持即插即用功能。在WDM驅(qū)動程序模型中,每個硬件設(shè)備至少有兩個驅(qū)動程序。其中一個驅(qū)動程序為功能驅(qū)動程序,即硬件設(shè)備驅(qū)動程序,它了解使硬件工作的所有細(xì)節(jié),負(fù)責(zé)初始化I/O操作、處理I/O操作完成時所帶來的中斷事件,并為用戶提供一種設(shè)備適合的控制方式。另一個為總線驅(qū)動程序,由操作系統(tǒng)提供,它位于USB功能驅(qū)動程序的下面,負(fù)責(zé)管理硬件與計算機的連接。
    在Windows操作系統(tǒng)下,開發(fā)WDM驅(qū)動程序可以選擇DDK開發(fā)工具。主要有4個驅(qū)動例程:入口例程、即插即用例程、分發(fā)例程以及電源管理例程。
 入口例程,即DriverEntry例程,由操作系統(tǒng)的I/O管理器在設(shè)備驅(qū)動功能加載時進(jìn)行調(diào)用,主要負(fù)責(zé)WDM驅(qū)動程序的初始化。
 即插即用例程實現(xiàn)USB設(shè)備的熱插拔和動態(tài)配置。當(dāng)設(shè)備與計算機連接時,系統(tǒng)自動識別并調(diào)用其DriverEntry例程,自動選擇并加載合適的驅(qū)動程序。當(dāng)設(shè)備從系統(tǒng)中移除時,自動處理相應(yīng)的清除工作。其驅(qū)動例程主要有兩個:AddDevice例程和IRP_MJ_PNP例程。AddDevice例程用于完成設(shè)備的添加。IRP_MJ_PNP例程主要負(fù)責(zé)處理系統(tǒng)即插即用管理器發(fā)出的PnP信息,包括啟動設(shè)備、停止設(shè)備、刪除設(shè)備等。
 分發(fā)例程用于處理各種I/O請求,每個分發(fā)例程都對應(yīng)一個Win32函數(shù)。常用的分發(fā)例程主要有IRP_MJ_CREATE例程和IRP_MJ_CLOSE例程。
 電源管理例程負(fù)責(zé)設(shè)備的掛起與喚醒。
2.3 應(yīng)用程序設(shè)計
 上位機應(yīng)用程序給用戶提供一個操作采集系統(tǒng)的界面,將采集到的數(shù)據(jù)以多種方式顯示給用戶,用戶也可以對采集到的數(shù)據(jù)進(jìn)行分析處理。應(yīng)用程序采用Visual C++集成開發(fā)環(huán)境,利用MFC編程,主要功能有:開啟和關(guān)閉USB設(shè)備、檢測USB設(shè)備、設(shè)置USB設(shè)備傳輸管道、設(shè)置數(shù)據(jù)采集端口、實時地從USB接口采集數(shù)據(jù)、顯示并分析數(shù)據(jù)。應(yīng)用程序流程圖如圖5所示。


   應(yīng)用程序使用Win32的API函數(shù)CreateFile()來創(chuàng)建和打開設(shè)備,并返回該設(shè)備的句柄。當(dāng)對設(shè)備進(jìn)行讀取時,首先調(diào)用打開并獲得指定的USB設(shè)備的句柄,然后對指定管道進(jìn)行復(fù)位,準(zhǔn)備接收數(shù)據(jù),然后啟動接收數(shù)據(jù)線程。應(yīng)用程序通過使用標(biāo)準(zhǔn)的Win32 API函數(shù)DeviceIoControl()調(diào)用驅(qū)動程序中定義的宏代碼IO_PICUSB_
CTRL_READ來執(zhí)行這部分操作,而驅(qū)動程序與設(shè)備之間的通信中,DeviceIoControl()調(diào)用被轉(zhuǎn)化成一個帶有IRP_MJ_DEVICE_CONTROL功能代碼的IRP。關(guān)閉USB設(shè)備需調(diào)用CloseHandle()函數(shù), 其調(diào)用方式為CloseHandle(hDevice),其中hDevice為在調(diào)用CreateFile()函數(shù)時返回的設(shè)備句柄。
3 試驗結(jié)果與分析
    圖6為本數(shù)據(jù)采集系統(tǒng)在批量傳輸下的應(yīng)用程序界面。圖中曲線是對模擬語音信號采集生成的波形圖。實驗表明,該基于USB2.0接口的數(shù)據(jù)采集系統(tǒng)可實現(xiàn)對語音信號的采集,傳輸速度能達(dá)到30 Mb/s,具有很強的抗干擾性,完全滿足設(shè)計和使用要求。在保存數(shù)據(jù)和退出應(yīng)用程序前,應(yīng)先停止采集。保存數(shù)據(jù)時,通過在“保存”欄中選擇對應(yīng)的選項,就可以保存數(shù)據(jù)。


    本文所設(shè)計的基于USB2.0接口的數(shù)據(jù)采集系統(tǒng)具有8路輸入14位分辨率的性能,可滿足語音處理、工業(yè)自動化及生物醫(yī)學(xué)工程中心電信號等領(lǐng)域中大多數(shù)場合的數(shù)據(jù)采集要求。不僅克服了傳統(tǒng)采集系統(tǒng)的缺陷,而且充分利用USB優(yōu)點,提高了傳輸速度,給用戶帶來許多方便。本文的創(chuàng)新點在于采用USB接口進(jìn)行微處理器與上位機之間的通信,并結(jié)合CY7C68013特有的GPIF編程技術(shù),有效提升了整個系統(tǒng)數(shù)據(jù)采集速率,在實際應(yīng)用中取得了良好的效果。
參考文獻(xiàn)
[1]     肖忠祥.數(shù)據(jù)采集原理[M].西安:西北工業(yè)大學(xué)出版社,2001.
[2]     邊海龍.USB2.0設(shè)備的設(shè)計與開發(fā)[M].北京:人民郵電出版社,2004.
[3]     錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用. 北京:北京航空航天大學(xué)出版社,2006.
[4]     尹偉,婁淑琴.基于GPIF模式的USB接口電路的設(shè)計和實現(xiàn)[J].儀器儀表用戶,2008(2):61-62.
[5]     Cypress Semiconductor Corporation.EZ-USB FX2 technical  reference manual[Z].2001.
[6]     胡文靜,陳松.基于EZ-USB芯片CY7C68013的驅(qū)動程序設(shè)計[J].計算機應(yīng)用研究,2005,22(9):221.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。