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