楊傳文,陳春俊
(西南交通大學機械工程學院,四川成都 610031)
現代工業的快速發展,傳統的數據采集方法已很難滿足現代信息技術實時高效的需求。USB以其傳輸速度快、支持熱插拔、即插即用、可擴展性強等優點[1],廣泛應用于人們生產、生活之中。USB2.0規范能夠提供高達480Mb/s的傳輸速度,雖然USB3.0傳輸速度比USB2.0高,但現今應用仍以USB2.0為主,因此本文所述的數據采集系統采用USB2.0接口進行設計。
系統總體設計結構如圖1所示,系統由信號調理電路、A/D 轉換電路、DSP 主控制器、USB接口電路、PC 組成。總體來說本系統分為兩大部分:數據采集部分和數據傳輸部分。 PC USB接口提供的5V 電壓,能夠滿足系統需求。因此,系統電源由USB 接口提供,通過USB 供電還可以減少由于使用外接電源而引進的工頻干擾。

圖1 系統的總體結構圖
TI 公司的28系列TMS320F28335 DSP 作為主控制器,但主控芯片內部程序空間和數據空間RAM 僅為34KB,明顯不夠用,因此外擴了一個256KB的RAM-IS61LV25616-12T。在外擴RAM中開辟2塊512大小的數據緩沖區,用于對采集到的數據進行預存儲。
信號在進行A/D 轉換之前,經過信號調理電路對信號進行預處理,用以減少干擾的影響,提高信號的信噪比。
A/D 轉換電路采用美信公司MAX1320模數轉換芯片。其片選信號CS 連接到主控制器的GPIO4;主控芯片的EPWM2B 信號與它的COVNST 相連,作為A/D 轉換的啟動信號,可以通過設置EPWM的頻率值,實現已知固定頻率的數據轉換;EOC與ELOC 分別連接至主控芯片的GPIO7與GPIO16,用以產生主控制器的中斷信號,通知主控制器讀取并行數據線上的數據。
USB 接口電路設計是本系統設計的核心部分,USB 接口電路由CY7C68013A 及其外圍電路構成,主要完成數據從主控芯片到PC的高速連續傳輸及控制命令從PC 傳到主控芯片。USB 接口電路如圖2所示。

圖2 USB 接口電路設計
CY7C68013A 采用上電自動復位方式進行復位操作。CY7C68013A時鐘信號由一個24MHz 石英晶振提供,晶振的兩個管腳連至CY7C68013A的XTAL1、XTAL2引腳。在本系統中,USB 設備是工作于Slave FIFO模式,作為主控芯片的一個外設,其片選信號引腳PA.7/*SLCS#連接至主控芯片的Zone6的選通信號XZCS6n,輸出使能信號SLOE和讀寫控制信號SLRD、SLWR 分別接至主控芯片對應的讀寫控制信號XRD、XWE0。數據線接主控芯片的低16位數據接口XD[0…15]。芯片通過I2C 總線外接了一個EEPROM 用于存儲設備啟動所需信息。CY7C68013內部有4KB 內部FIFO,通過FIFOADDR[0,1]分別選通EP2、EP4、EP6、EP8,其選通信號連接至地址線的XA1與XA2。
系統的軟件設計主要包括CY7C68013A 固件程序及其驅動程序設計、主控芯片程序設計、上位機應用程序設計。
3.1.1 固件程序設計
固件程序設計是開發CY7C68013A 芯片的核心,CY7C68013A 有3種工作模式:Master GPIF、PORTS、Slave FIFO模式[2-4]。本系統的特點是快速持續傳送大量數據,同時對于數據傳輸的準確性——完備性要求很高,故采用異步通信模式,使CY7C68013A工作于異步Slave FIFO模式,固件程序完成CY7C68013A 芯片初始化和配置工作。
固件設計采用Cypress 公司提供的固件函數框架,使用Keil uVision4集成開發環境,最后通過Cypress 公司的EZ-USB Control Panel 控制面板完成固件程序的裝載。通過編寫的TD_Init()初始化函數,即可實現對它的初始化工作,主要配置語句如下:

CY7C68013A 配置為異步Slave FIFO模式,8051內核不對數據進行處理,將傳輸數據進行自動打包(AUTOIN=1)處理,采用批量傳輸方式,總線寬度為16位,使用EP6作為IN 端點,配置成2緩沖512字節,將數據傳至PC。EP2作為OUT 端點,上位機的控制命令通過EP2傳至主控制器。EP2、EP6分別映射到主控制器zone6的0x10FC00、0x10FC06地址,主控制器向地址0x10FC06寫數據,即把數據寫入EP6。
3.1.2 設備驅動程序設計
USB 設備驅動程序設計是開發本系統的一個關鍵,USB 驅動程序設計主要完成應用程序與USB 設備的通信協議的實現。在開發驅動程序的時,采用的開發包是Driver Studio 3.2和Microsoft 公司的WinXP_DDK,并以VC++6.0作為輔助開發環境,利用CYPRESS 公司提供的基于EZ-USB FX2的外設連接通用設備驅動程序包[5-6],對該驅動程序包稍加修改,使之成為適合本系統能自動下載固件和完成設備重枚舉功能的驅動程序。
主控制器程序主要完成數據采集和數據傳輸的功能,使用CCS3.3開發環境。程序流程圖如圖3所示。

圖3 主控制器程序流程圖
數據采集在中斷服務程序中完成,利用完成一組轉換信號ELOC 觸發一次中斷,繼而在中斷服務程序里完成對8個通道數據的讀取,把MAX1320端口數據寄存器的數據讀入RAM所開辟的數據緩沖區里。每進入一次中斷程序就執行一次清除中斷標志,以接收下一次中斷,進行下一次數據采集。MAX1320芯片啟動A/D 轉換的啟動觸發信號是通過主控芯片的EPWM2B 信號觸發,通過設置TBPRD 寄存器更改EPWM 波形的頻率,從而實現要求固定已知頻率的A/D 轉換。
當前存儲數據的緩沖區滿之后,把數據寫入CY7C68013A 端點EP6所對應的地址0x10FC06,交由USB 送入上位機。并采用開辟的另外一塊緩沖區來繼續接收數據。
上位機應用程序設計利用VC++6.0開發工具完成,上位機程序向USB 設備發送各種命令信號,接收USB 設備傳送的數據并對接收的數據進行存儲、顯示操作。上位機應用程序調用CreateFile()函數用來獲取USB 設備的句柄,用以確認有USB設備連接到主機,獲取USB 設備句柄之后調用DeviceIoControl()函數向USB 設備驅動程序發送I/O 請求完成數據的讀寫操作[7-8],USB 端點寄存器的數據通過此句柄函數傳送給上位機,既而進行存儲、顯示等操作。
選用一個標準正弦信號作為信號源進行實驗驗證,信號頻率20Hz、幅值0~3V,系統采樣頻率為5 kHz,圖4為系統所采集數據的分析結果。

圖4 測試結果分析圖
圖4的分析結果可知,本系統采集的數據的時域信號波形與信號源吻合,對采集的數據進行FFT 變換,得到信號最大頻率點值為19.53 Hz,考慮到數字信號的離散性,兩個頻率點之間有一定的信息損耗,故測試結果是準確的,系統滿足設計要求。
[1]寇靜.基于端口模式的CY7C68013固件程序設計[J].微計算機信息,2010,26(2-2):116-117,120.
[2]Cypress Semiconductor.EZ-USB FX2 Technical Reference Manual[Z].2001.
[3]馬俊濤,李振宇.Slave FIFO模式下CY7C68013和FPGA的數據通信[J].中國傳媒大學學報:自然科學版,2009(6):38-44.
[4]王靜紅,劉教民..采用CY7C68013芯片的系統固件程序設計[J].河北師范大學學報,2008,32(2):169-173.
[5]胡文靜,陳松.基于EZ-USB芯片CY7C68013的驅動程序設計[J].計算機應用研究,2005(9):220-221,228.
[6]徐夏,雷明.基于CY68013的數據通信系統設計[J].微計算機信息,2009,25(6-2):198-199,205.
[7]李國柱.基于單片機和USB接口的數據采集系統設計[J].計算機應用技術,2009(4):65-67,75.
[8]張禮勇,王娟,張旭輝.基于CY7C68013的電力線載波通信模塊設計[J].哈爾濱理工大學學報,2008,13(1):14-17.