《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
王寶珠, 楊 永, 林永峰, 常秀穎
河北工業(yè)大學(xué) 信息工程學(xué)院, 天津 300401
摘要: 設(shè)計(jì)了基于USB2.0接口的數(shù)據(jù)采集系統(tǒng)。系統(tǒng)硬件主要由信號(hào)調(diào)理電路、USB2.0芯片CY7C68013及A/D轉(zhuǎn)換器MAX125組成。軟件部分主要包括固件設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)三部分。
中圖分類號(hào): TN919
文獻(xiàn)標(biāo)識(shí)碼: 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ī)模集成電路與計(jì)算機(jī)技術(shù)的飛速發(fā)展,數(shù)據(jù)采集在語(yǔ)音處理、智能儀器、工業(yè)自動(dòng)化及生物醫(yī)學(xué)工程等眾多領(lǐng)域中的地位日益突出,并且對(duì)數(shù)據(jù)采集的各項(xiàng)技術(shù)指標(biāo)要求越來(lái)越高。傳統(tǒng)的數(shù)據(jù)采集卡主要有PCI卡或者ISA卡,這些采集卡都存在著各種各樣的缺陷,比如傳輸速度慢、不支持熱插拔、安裝不方便、受計(jì)算機(jī)地址、中斷和插槽的限制,可擴(kuò)展性差等[1]。
    近年來(lái),USB接口以其傳輸速度快、成本低、可靠性高、支持即插即用和熱插拔等優(yōu)點(diǎn)[2],迅速成為數(shù)據(jù)傳輸?shù)闹髁?。因此,開(kāi)發(fā)這種基于USB2.0的高速數(shù)據(jù)采集系統(tǒng),代表了現(xiàn)代數(shù)據(jù)采集和傳輸?shù)陌l(fā)展趨勢(shì),必將被越來(lái)越多的用戶所接受。
1 系統(tǒng)工作原理與硬件結(jié)構(gòu)
    基于USB接口的數(shù)據(jù)采集系統(tǒng)的硬件部分主要包括信號(hào)調(diào)理電路、A/D轉(zhuǎn)換電路、USB控制電路三部分。PC機(jī)端的應(yīng)用程序通過(guò)USB主機(jī)發(fā)送控制信號(hào),通知CY7C68013開(kāi)始數(shù)據(jù)采集。當(dāng)CY7C68013接收到控制信號(hào)以后,通過(guò)GPIF模式發(fā)送控制波形到MAX125,控制其開(kāi)始的數(shù)據(jù)轉(zhuǎn)換。當(dāng)MAX125接收到控制信號(hào)以后,開(kāi)始進(jìn)行數(shù)據(jù)采集。采集完成后,在USB主機(jī)控制器的控制下,MAX125把轉(zhuǎn)換后的數(shù)字信號(hào)發(fā)送到CY7C68013,最后通過(guò)USB總線把采集到的數(shù)據(jù)發(fā)送到PC機(jī),并進(jìn)行相應(yīng)的處理。
    系統(tǒng)硬件框圖如圖1所示。


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


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

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


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


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


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

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