熊 焱,朱正鵬,徐玉嬌,劉 鑫,朱旭鋒
(北京航天自動控制研究所,北京 100854)
高速數(shù)據(jù)的傳輸和采集在自動控制和航空航天領(lǐng)域有著廣泛的應(yīng)用,通用串行總線(USB)是連接PC機與外設(shè)的一種通用接口總線,和傳統(tǒng)的串口、并口相比,USB-HID接口具有速率高、高帶寬、靈活性好等優(yōu)點,適用于大批量數(shù)據(jù)和紅外圖像采集與傳輸。本文結(jié)合USB HID(Human Interface Device,人機接口設(shè)備)的優(yōu)勢,選用EZ-USB FX2芯片CY7C68013作為USB接口,通過配置HID描述符,利用大容量FIFO,實現(xiàn)了PC機與DSP芯片TMS320F2812進行高速數(shù)據(jù)傳輸和可視化設(shè)計。
本系統(tǒng)基于HID接口設(shè)計,主要由計算機主機的核心處理器、USB接口芯片、程序存儲器EEPROM、晶振等組成。核心處理器選用TMS320F2812,該芯片是TI公司的一款高性能的32位定點數(shù)字信號處理器,工作主頻最高可達150 MHz[1],系統(tǒng)組成框圖如圖1所示。
圖1 系統(tǒng)組成原理框圖
FX2芯片采用USB接口芯片CY7C68013,主要實現(xiàn)數(shù)據(jù)傳輸,CY7C68013芯片是Cypress公司的EZ-USB FX2系列中一種滿足USB2.0協(xié)議的接口芯片,最高傳輸速率可達480 Mbps[2-3]。集成了1個8051處理器、1個串行接口引擎(SIE)和1個USB2.0收發(fā)器,具有16位外部數(shù)據(jù)接口、8.5 KB片上RAM、4個可編程端點、4個集成的FIFO存儲器以及40個通用GPIO口。CY7C68013芯片結(jié)構(gòu)框圖如圖2所示。
圖2 EZ-USB FX2(CY7C68013)結(jié)構(gòu)框圖[4]
DSP作為主控制器,USB2.0接口協(xié)議芯片CY7C68013選用SLAVE FIFO方式,異步讀寫,從機工作方式。
圖1中的DSP控制器中IOB1、IOB2、IOB3、IOB4為通用端口,XWE為寫入啟用,低電平有效寫入選通脈沖;XRD為讀取啟用,低電平有效讀取選通脈沖;CS為片選引腳;XD[15:0]為16位數(shù)據(jù)總線;XA[18:0]為19位地址總線。
CY7C68013中,FLAGA、FLAGB、FLAGC位FIFO標(biāo)志引腳,表示FIFO的空滿狀態(tài),DSP向FIFO進行數(shù)據(jù)寫入和讀取時,應(yīng)先判斷所使用的端點對應(yīng)的FLAG標(biāo)志位狀態(tài),只有FIFO為空時進行數(shù)據(jù)寫入,FIFO為非空時進行數(shù)據(jù)讀取。SLCS、SLRD、SLOE和SLWR分別為片選信號、讀信號、輸出使能信號和寫信號,CY7C68013具有16位雙向數(shù)據(jù)總線和兩位用于選擇端點緩沖區(qū)的引腳。SCL和SDA用于連接EEPROM,用于存儲固件程序。DSP和68013之間數(shù)據(jù)線通過SN74ALVC164245緩沖器隔離,外部使用24 MHz晶振。USB通信模塊主要硬件電路圖如圖3所示。
數(shù)據(jù)傳輸中核心器件是CY7C68013和TMS-320F2812。在SLAVE FIFO模式下,上位機和USB硬件電路之間的數(shù)據(jù)通信通過DSP和FX2芯片中的FIFO進行交互,根據(jù)USB中斷請求進行數(shù)據(jù)的發(fā)送和讀取。
圖3 USB硬件電路圖
CY68013芯片需要按照HID設(shè)備類的規(guī)范(《HID Usage Tables》)編寫設(shè)備的驅(qū)動程序,設(shè)置對應(yīng)的HID設(shè)備描述符,從而使Windows系統(tǒng)自動識別設(shè)備,實現(xiàn)了設(shè)備的即插即用[5]。
FX2固件程序通過Keil軟件開發(fā)和編譯,編譯生成.hex文件后使用Cypress的EZ-USB-FX2仿真系統(tǒng)提供的開發(fā)工具Control Panel將程序下載到配套的EEPROM中。固件程序的主要作用是通過編寫報告描述符,將本產(chǎn)品配置成HID設(shè)備中的游戲桿類設(shè)備,使之能被Windows系統(tǒng)自動識別。本設(shè)計采用了Cypress公司提供的固件框架,在此基礎(chǔ)上進行了二次開發(fā)[6-7]。
主機與USB設(shè)備的數(shù)據(jù)接口模式為SLAVE FIFO模式,本設(shè)計中,在程序中設(shè)置CPU與芯片接口時鐘都為48 MHZ,設(shè)置EP4為塊傳輸端點,2倍緩沖深度,傳輸方向為IN;設(shè)置EP8為塊傳輸端點,2倍緩沖深度,傳輸方向為OUT,自動輸入方式,外部DSP處理器可以直接和FIFO通信[8]。
本設(shè)計是在固件框架基礎(chǔ)上進行的,采用C語言實現(xiàn),Cypress公司提供了固件開發(fā)框架[4]。
二次開發(fā)時主要對端點的數(shù)目和大小進行設(shè)置。同時還需要對端點的深度設(shè)置、自動傳輸包大小等進行設(shè)置[9]。TD Init{ }函數(shù)部分代碼如下所示:
void TD_Init(void)
{
CPUCS &=~bmCLKOE;
IFCONFIG &=~bmIFCFG1;//SLAVE FIFO接口,內(nèi)部時鐘,異步傳輸
IFCONFIG|=0xCB;
EP8CFG = 0xF2;//OUT端點,BULK傳輸,512字節(jié),2倍緩沖
SYNCDELAY;
EP4CFG = 0xE2;//IN端點,BULK傳輸,512字節(jié),2倍緩沖
PINFLAGSAB=0x00;//FLAGB為EP4的滿標(biāo)志
SYNCDELAY;
PINFLAGSCD=0x00;//FLAGC為EP8的空標(biāo)志
SYNCDELAY;
FIFORESET=0x08;//復(fù)位EP4和EP8 FIFO
SYNCDELAY;
FIFORESET=0x00;
EP8FIFOCFG=0x0D;//設(shè)置EP8的SLAVE FIFO為自動輸入模式,數(shù)據(jù)總線16位
SYNCDELAY;
EP8AUTOINLENH=0x00;//自動提交1字節(jié)包,包長度高3位000
SYNCDELAY;
EP8AUTOINLENL=0x03;//包長度低8位00000011
PORTACFG=0x43;//設(shè)置PA7為SLCS
FIFOPINPOLAR=0x00;//設(shè)置控制信號
PKTEND,SLOE,SLRD,SLWR,EF,FF為低有效
AUTOPTRSETUP |= 0x01;
}
固件程序經(jīng)過Keil軟件編譯生成的.hex文件可通過Hex2Bix.exe轉(zhuǎn)化成.iic文件,通過Control Panel工具可以下載到EEPROM中,如圖4所示。系統(tǒng)上電時程序自動啟動,可以自動被識別為相應(yīng)的HID設(shè)備進行工作。
圖4 HID系統(tǒng)按鍵和位置界面
TMS320F2812作為核心處理器實現(xiàn)對USB接口芯片的數(shù)據(jù)讀寫控制,系統(tǒng)的DSP軟件使用CCS3.3進行設(shè)計,主要包括DSP初始化、數(shù)據(jù)采集處理和USB通信接口部分,下面是DSP讀寫FX2數(shù)據(jù)的部分代碼:
void WriteFIFO(unsigned int i)
{
EALLOW;
GpioDataRegs.GPACLEAR.bit.GPIOA4=1;//164245片選:XUSB_OE低電平
GpioDataRegs.GPACLEAR.bit.GPIOA10=1;//164245方向:B data to A bus
GpioDataRegs.GPASET.bit.GPIOA5=1;
//SLOE高電平
GpioDataRegs.GPACLEAR.bit.GPIOA7=1;
//PKTEND低電平
EDIS;
if(GpioDataRegs.GPADAT.bit.GPIOA9==1) //FLAGB:EP6不滿,執(zhí)行寫操作
{
for(i=0;i<512;i++)
{
* EP6=i;
for(i= 0;i< 5000;i++)
}
}
EALLOW;
GpioDataRegs.GPADAT.bit.GPIOA4=1;
//164245片選:XUSB_OE高電平
EDIS;
}
通過上述硬件電路和軟件系統(tǒng)的設(shè)計,實現(xiàn)了兩套基于USB HID接口的高速數(shù)據(jù)采集系統(tǒng)的實際應(yīng)用。
應(yīng)用一為一套航空領(lǐng)域航電系統(tǒng)中地面控制臺用的油門臺,操作桿上有多個按鈕,并且可以手動推動油門臺操作桿移動。油門臺對外提供USB2.0接口與地面計算機連接,USB接口符合標(biāo)準(zhǔn)的Direct X即插即用接口,可通過計算機可視化界面實時顯示當(dāng)前按鈕狀態(tài)和油門操作桿位置信息。同時該地面油門操作桿還可以隨空中自動油門臺聯(lián)動,即空中油門臺動作的同時帶動地面油門臺動作,因此,該設(shè)備對通信速率和實時性有較高要求,同時還要求具有可視化界面,便于地面人員檢測數(shù)據(jù)。
將油門臺和地面測控計算機連接,油門臺可自動被識別為外部USB設(shè)備,自動安裝設(shè)備驅(qū)動后,依次點擊桌面“開始”、“控制面板”按鈕,在“控制面板”界面下雙擊“游戲控制器”按鈕,彈出“游戲控制器”界面,該界面上共有24個顯示點,依次按壓油門操作桿上的各個按鈕,每個按鈕接通時,在油門臺按鍵USB測試界面中,“按鈕”界面的1、2、3、4、5順序點亮。當(dāng)推動油門臺操作桿從零位向90度方向運動時,界面上的“+”在Y軸方向從下向上線性的變化位置,反之,若推動油門臺操作桿從90度向零位方向運動時,界面上的“+”在Y軸方向從上向下線性的變化位置,并實時顯示當(dāng)前角度位置值,如圖5所示。
圖5 HID系統(tǒng)按鍵和位置界面
應(yīng)用二為一套高速紅外圖像采集系統(tǒng)。編寫相應(yīng)的測試程序,通過與該系統(tǒng)的接口可實現(xiàn)查找設(shè)備、獲取設(shè)備、發(fā)送和接收報表等功能,測試界面如圖6所示。
圖6 HID紅外圖像采集系統(tǒng)測試界面
在將該系統(tǒng)連接到計算機,通過配置相應(yīng)的描述符,系統(tǒng)將被自動識別為HID設(shè)備。通過工具軟件Bus Hound可以獲取計算機和紅外圖像采集系統(tǒng)的通信數(shù)據(jù),可實時監(jiān)測系統(tǒng)的傳輸速率、相應(yīng)速度等參數(shù)。軟件測試結(jié)果如圖7所示,實時獲取的系統(tǒng)傳輸速度最大為40 MB/s,響應(yīng)速度可達10 ms,滿足紅外圖像數(shù)據(jù)傳輸要求。
圖7 Bus Hound軟件測試平臺
本文通過EZ-USB FX2設(shè)計了一種TMS320-2812與計算機之間數(shù)據(jù)高速傳輸方法,實現(xiàn)了基于USB HID接口的高速數(shù)據(jù)和紅外圖像采集系統(tǒng)的應(yīng)用,該系統(tǒng)具有傳輸速度快、結(jié)構(gòu)簡單、實時性和可靠性高等優(yōu)點,適用于大批量數(shù)據(jù)和圖像采集系統(tǒng)。利用HID設(shè)備驅(qū)動程序和固件框架,可以生成不同描述符,開發(fā)出不同的嵌入式設(shè)備,使用方便,靈活性好。