TMS320VC5402 I/o資源配置及與USB通信
0 引言
DSP(數(shù)字信號(hào)處理器)芯片TMS320VC5402具有高性能、低功耗、資源多等特點(diǎn),其獨(dú)特的6總線(xiàn)哈佛結(jié)構(gòu),使其能夠6條流水線(xiàn)同時(shí)工作,工作頻率達(dá)到100 MHz。具有2個(gè)緩沖串口BSP、8位并行EHPI(增強(qiáng)主機(jī)接口)、可編程的等待狀態(tài)發(fā)生器等,可以滿(mǎn)足數(shù)據(jù)處理控制的要求。
針對(duì)此應(yīng)用系統(tǒng)通信接口數(shù)據(jù)量大、對(duì)速度要求高、實(shí)時(shí)控制的特點(diǎn),本項(xiàng)目采用高速USB(通用串行總線(xiàn))接口實(shí)現(xiàn)了高速的數(shù)據(jù)處理與傳輸。USB是一種新型接口技術(shù),是計(jì)算機(jī)和外圍設(shè)備接口通信的一種總線(xiàn)標(biāo)準(zhǔn)。它支持熱插拔、即插即用,連接簡(jiǎn)單。本文將介紹VC5402的GPI()(I/0)資源配置及CY7C68013與外設(shè)的從(Slave)FIF0接口方式。
1系統(tǒng)原理
本系統(tǒng)以TI公司的TMS320VC5402 DsP為主控制器,主要分為神經(jīng)信號(hào)處理電路、神經(jīng)刺激電路和信號(hào)傳輸電路3部分。系統(tǒng)首先根據(jù)相應(yīng)的控制信號(hào)選通神經(jīng)微電極陣列的某路或多路測(cè)點(diǎn),發(fā)出相應(yīng)的刺激信號(hào),并在對(duì)腦細(xì)胞進(jìn)行電刺激的同時(shí)記錄細(xì)胞反應(yīng),并將采集到的神經(jīng)信號(hào)數(shù)據(jù)通過(guò)USB口傳送到上位機(jī),進(jìn)行病理分析,從而實(shí)現(xiàn)了對(duì)電刺激的控制和腦信號(hào)的高速實(shí)時(shí)傳輸和處理。該系統(tǒng)可根據(jù)所建的腦電信號(hào)數(shù)據(jù)庫(kù),模擬產(chǎn)生與運(yùn)動(dòng)相應(yīng)的神經(jīng)信號(hào),分別對(duì)不同的腦區(qū)域進(jìn)行電刺激,達(dá)到治療的目的。系統(tǒng)
方案如圖l所示。
TMS320VC5402除了使用VC54x系列中常用的GPIO外,還為用戶(hù)提供了多個(gè)可選擇的GPIO:HPI一8和McBSP??膳c各類(lèi)存儲(chǔ)器直接接口。
USB2.0控制器選擇Cypress公司的FX2系列產(chǎn)品cY7C68013。EZUSB FX2是Cypress公司生產(chǎn)的世界上第1個(gè)USB2.0的集成微控制器,包括1個(gè)805l處理器、1個(gè)SIE(串行接口引擎)、1個(gè)USB收發(fā)器、8.5 kB片上RAM、4 kB FIF0存儲(chǔ)器和1個(gè)GPIF(通用可編程接口),總線(xiàn)標(biāo)準(zhǔn)傳輸速度達(dá)480 Mbit/s,足夠滿(mǎn)足高速外設(shè)的速率要求。其結(jié)構(gòu)如圖2所示。
2 TMs320VC5402 I/o資源配置
由于本系統(tǒng)含有多個(gè)處理模塊,而且在同一時(shí)刻,神經(jīng)微電極陣列要選通多路同時(shí)進(jìn)行神經(jīng)電刺激、信號(hào)采集及USB傳輸。DSP芯片的GPIO資源不夠用,需要擴(kuò)展I/0以滿(mǎn)足需求。因此,本項(xiàng)目將EHPI配置為8位通用I/O,用做數(shù)據(jù)線(xiàn)與cY7C68013通信。將McBSP配置為通用I//0,用做CY7C68013的控制線(xiàn)。
2.1。EHPI-8用做GPIO
FMS320VC5402的8位EHPI將DSP設(shè)置為從模式來(lái)完成與主處理機(jī)之間的通信任務(wù),使得主機(jī)和DSP均可以訪(fǎng)問(wèn)DSP上存儲(chǔ)器。但HPI.8的8位雙向數(shù)據(jù)總線(xiàn)也可以用做GPIO引腳。這個(gè)功能僅當(dāng)HPI-8接口禁止時(shí)有效,即當(dāng)HPIENA引腳在復(fù)位過(guò)程中被置為低電平時(shí)有效??赏ㄟ^(guò)GPIOCR(通用輸入/輸出控制寄存器)和GPIOSR(通用輸入/輸出狀態(tài)寄存器)這兩個(gè)存儲(chǔ)器映射寄存器用來(lái)控制HPI.8數(shù)據(jù)引腳的GPIO功能。
GPIOCR的方向位(DIRx)用來(lái)設(shè)置HD0~HD7是輸入還是輸出。如圖3所示。定時(shí)器1輸出位TOUTl只對(duì)那些有兩個(gè)定時(shí)器的器件才有效,它控制定時(shí)器l輸出到HINT引腳上。當(dāng)系統(tǒng)只有1個(gè)定時(shí)器時(shí),該位被保留。當(dāng)HPI一8接口使用時(shí),TOuTl位和DIRx為被強(qiáng)迫置零,并且通用輸入/輸出引腳只能處于輸入模式。
GPIO引腳(HDx,x=0:7)的狀態(tài)可以用GPIOSR中的位來(lái)監(jiān)控。如圖4所示。當(dāng)一個(gè)HDx引腳被設(shè)定為輸入端時(shí)(通過(guò)對(duì)GPIOCR中的DIRx位寫(xiě)入一個(gè)"O"),GPIOSR中對(duì)應(yīng)的位可以被讀取以確定這個(gè)引腳上探測(cè)到的邏輯值。同樣,當(dāng)一個(gè)HDx引腳被設(shè)定為一個(gè)輸出端時(shí),驅(qū)動(dòng)到這個(gè)引腳上的邏輯值被寫(xiě)人GPIOCR中的相應(yīng)位。
2.2 McBSP用做GPIO
TMS320VC5402是54x系列中最早引入McBSP(多通道緩沖串行口)的芯片。該串行口在以下兩個(gè)條件成立時(shí)(串口引腳CLKX、FSX、DX、CLKR、FSR和DR可以被用作GPIO引腳,而不作為串口引腳):
a)串口的相關(guān)部分(發(fā)送端或接收端)處于復(fù)位狀態(tài),即SPCR[1,2]中
b)串口的相關(guān)部分的GPIO引腳功能被啟用,即PCR中的(R/X)IOEN=l。
PcR(引腳控制器)說(shuō)明了將McBSP的引腳配置成通用I/0引腳的位,如圖5所示。
表l列出了詳細(xì)的配置情況。
DX總是用做輸出,當(dāng)發(fā)送端被選做GPIO引腳時(shí),PCR中DX-STA3、位的值被驅(qū)動(dòng)到DX上;DR總是作為輸入,并且它的值保存在PCR的DR.STAT位中;因?yàn)閏LXS總足作為McBSP的輸入并且影響發(fā)送和接收操作,所以若要配置CIXS為通用的輸入引腳,則發(fā)送端和接收端必須都處于復(fù)位狀態(tài),且保證(R/x)IOEN=l。
3 CY7C68013與TMs320VCl5402硬件連接
CY7C68013與DSP的連接方法有主/從兩種接口方式:可編程接口GPIF和從FIFO??删幊探涌贕PIF是主機(jī)方式,可以由軟件編寫(xiě)讀寫(xiě)控制時(shí)序,靈活方便,幾乎可以和所有8/16 bit接口的控制器、存儲(chǔ)器和總線(xiàn)進(jìn)行無(wú)縫連接。
從FIFO方式是從機(jī)方式,外部控制器可以像對(duì)待普通FIFO一樣對(duì)FX2內(nèi)的多個(gè)緩沖區(qū)進(jìn)行讀寫(xiě)。從FIFO接口也可以靈活配置以適應(yīng)不同的需要。
本方案采用從FIFO方式,異步讀寫(xiě),屬?gòu)臋C(jī)方式。圖6為cY7C68013與rMS320C5402硬件連接圖。
FLAGA、FLAGB和l FIAGC是C68013內(nèi)部FIFO的狀態(tài)標(biāo)志,VC5402由已配置為通用I/O口的McB-sP口來(lái)獲得FIFO的空、半滿(mǎn)和滿(mǎn)等狀態(tài)信息,實(shí)現(xiàn)對(duì)C68013內(nèi)部FIFO的選擇,并完成對(duì)CYTC68013進(jìn)行讀寫(xiě)操作控制。Vc5402數(shù)據(jù)包提交由配置為通用I/O的EHPI-8口實(shí)現(xiàn)。工作過(guò)程為:DSP通過(guò)USB向Pc發(fā)送數(shù)據(jù)時(shí),先查看空、半滿(mǎn)和滿(mǎn)3個(gè)狀態(tài)信號(hào),再向USB寫(xiě)入適當(dāng)大小的數(shù)據(jù),以保證數(shù)據(jù)不會(huì)溢出。Pc機(jī)經(jīng)USB向DSP發(fā)送命令字時(shí),USB按中斷方式通知DSP讀取命令字。因方案采用USB2.0高速模式,所以IJSB端口D+、D一線(xiàn)上使用15 kΩ,電阻連接到3.3 V電源。
4 uSB2.O軟件設(shè)計(jì)
USB軟件包括固件設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)和主機(jī)端應(yīng)用程序的設(shè)計(jì)3方面的工作。
4.1固件設(shè)計(jì)
固件是運(yùn)行在USB2.0總線(xiàn)控制器中的程序,功能主要包括:實(shí)現(xiàn)芯片初始化;處理USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求,加載后與主機(jī)驅(qū)動(dòng)配合完成接口設(shè)備的第2次枚舉;處理與TMS320VC5402的數(shù)據(jù)交換;處理與主機(jī)之間的USB接口的數(shù)據(jù)交換。
Cypress公司為FX2芯片提供基于Keil C51開(kāi)發(fā)的固件函數(shù)庫(kù)(Ezusb.1ib)和固件框架(frame Work)。利用這些固件架構(gòu),用戶(hù)開(kāi)發(fā)的主要工作是根據(jù)自定義設(shè)備修改periph.c。本系統(tǒng)中CY7C68013主要完成接收并處理USB驅(qū)動(dòng)程序的請(qǐng)求、將數(shù)據(jù)實(shí)時(shí)上傳至PC。方案選擇CY7C68013工作于異步從FIFO模式。將4 kB的FIFO對(duì)應(yīng)到兩個(gè)端點(diǎn)(EndPoint),即End-Point2和EndPoint6,相應(yīng)的寄存器操作為:EP2CFG=OxA0,EP6CFG=0xE2。:EndPoint2與EndPoint6分別對(duì)應(yīng)2 kB的內(nèi)部FIFO),用以存放LISB需要上傳與接受的數(shù)據(jù)。其中EndPoint2為OUT。型,從主機(jī)接收數(shù)據(jù);EndPoint6為IN型,向主機(jī)發(fā)送數(shù)據(jù)。相應(yīng)的寄存器操作為EP2FIFOCFG=0xl l,EP6 FIFOCFG=0x0D。EndPoint2與End.Point6設(shè)置成自動(dòng)批量(BULK)傳輸
方式,即在數(shù)據(jù)傳輸過(guò)程中不需cY7C68013的8051內(nèi)核參與。這種方式相對(duì)于其他USB2.0定義的傳輸方式具有數(shù)據(jù)可靠、傳輸速率高等特點(diǎn),是最常用的傳輸方式。因此,periph.c中無(wú)需在用戶(hù)功能函數(shù)TD-Poll()中添加代碼,而只在TD-lnit()函數(shù)中設(shè)置芯片工作方式即可。為了完善整個(gè)LiSB傳輸功能,提高固件健壯性,還給FlFO添加了自動(dòng)清空復(fù)位功能。
4.2驅(qū)動(dòng)程序設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序包含USB總線(xiàn)驅(qū)動(dòng)程序和USB設(shè)備驅(qū)動(dòng)程序。USB總線(xiàn)驅(qū)動(dòng)程序由windows操作系統(tǒng)提供(USBD.SYS),用戶(hù)不需要知道USB總線(xiàn)驅(qū)動(dòng)程序的工作細(xì)節(jié);USB設(shè)備驅(qū)動(dòng)程序位于USB總線(xiàn)驅(qū)動(dòng)程序之上,通過(guò)向USB總線(xiàn)驅(qū)動(dòng)程序發(fā)送包含USB請(qǐng)求的IRP來(lái)實(shí)現(xiàn)對(duì)USB設(shè)備信息的發(fā)送或接收。USB設(shè)備驅(qū)動(dòng)程序可使用cY7C68013開(kāi)發(fā)包中提供的通用驅(qū)動(dòng)程序,該程序可不加修改經(jīng)DDK編譯后直接使用。它是CypreSS公司為了方便用戶(hù)開(kāi)發(fā)IJSB接口而提供的[7]。
4.3主機(jī)端應(yīng)用程序設(shè)計(jì)
系統(tǒng)中主機(jī)端應(yīng)用程序的主要任務(wù)是:從DsP中高速讀取信號(hào)采集處理后的數(shù)據(jù),存儲(chǔ),顯示處理結(jié)果,向DsP發(fā)送控制命令。應(yīng)用程序的開(kāi)發(fā)使用了VC++6.0。由于EZ-USB FX2的開(kāi)發(fā)板提供了主機(jī)端驅(qū)動(dòng)程序,所以在進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),可直接調(diào)用Win-dows API函數(shù)對(duì)win32子系統(tǒng)進(jìn)行Win32調(diào)用,實(shí)現(xiàn)對(duì)USB設(shè)備的I/O操作。
應(yīng)用程序在執(zhí)行時(shí),首先使用CreateFile()來(lái)建'立與外設(shè)的連接,從而打開(kāi)設(shè)備驅(qū)動(dòng)程序,獲得設(shè)備句柄。如果createFile()函數(shù)返回成功,就可對(duì)設(shè)備進(jìn)行讀寫(xiě)操作,一般采用ReadF、ile、writeFile。然后根據(jù)該句柄調(diào)用DeviceIoConlml()來(lái)完成數(shù)據(jù)傳輸,Devi.celoControl()函數(shù)執(zhí)行返回后,數(shù)據(jù)放在計(jì)算機(jī)的緩
沖區(qū),可以將緩沖區(qū)的數(shù)據(jù)進(jìn)行顯示和存儲(chǔ)。當(dāng)程序需要處理多個(gè)事務(wù)時(shí),應(yīng)采用異步方式打開(kāi)接口。FX2是多端點(diǎn)通信,但其本身只能準(zhǔn)雙工通信。兇此,采用異步通信方式能很好協(xié)調(diào)程序事務(wù)。
圖7是運(yùn)用VC++6.O編寫(xiě)的界面,用以存進(jìn)行USB調(diào)試時(shí)監(jiān)測(cè)數(shù)據(jù)的傳輸情況。
本系統(tǒng)采用高速DSP作為主控制器,通過(guò)對(duì)cY7C68013的軟硬件設(shè)計(jì)和DSP擴(kuò)展I/O口的配置,實(shí)現(xiàn)了高速DSP系統(tǒng)的USB2.0接口,滿(mǎn)足了高速腦電信號(hào)數(shù)據(jù)采集與傳輸?shù)囊?。隨著DSP技術(shù)的發(fā)展,若在系統(tǒng)中使用更高頻率的DSP,可以實(shí)現(xiàn)更快的運(yùn)算和傳輸。最終用于假肢裝置的控制信息源,實(shí)現(xiàn)靈活動(dòng)作。
評(píng)論