新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320VC5402 I/o資源配置及與USB通信

        TMS320VC5402 I/o資源配置及與USB通信

        作者: 時間:2008-06-16 來源:網絡 收藏

        0 引言

        DSP(數字信號處理器)芯片具有高性能、低功耗、資源多等特點,其獨特的6總線哈佛結構,使其能夠6條流水線同時工作,工作頻率達到100 MHz。具有2個緩沖串口BSP、8位并行EHPI(增強主機接口)、可編程的等待狀態發生器等,可以滿足數據處理控制的要求。

        針對此應用系統接口數據量大、對速度要求高、實時控制的特點,本項目采用高速(通用串行總線)接口實現了高速的數據處理與傳輸。是一種新型接口技術,是計算機和外圍設備接口的一種總線標準。它支持熱插拔、即插即用,連接簡單。本文將介紹VC5402的GPI()(I/0)及CY7C68013與外設的從(Slave)FIF0接口方式。

        1系統原理

        本系統以TI公司的 DsP為主控制器,主要分為神經信號處理電路、神經刺激電路和信號傳輸電路3部分。系統首先根據相應的控制信號選通神經微電極陣列的某路或多路測點,發出相應的刺激信號,并在對腦細胞進行電刺激的同時記錄細胞反應,并將采集到的神經信號數據通過口傳送到上位機,進行病理分析,從而實現了對電刺激的控制和腦信號的高速實時傳輸和處理。該系統可根據所建的腦電信號數據庫,模擬產生與運動相應的神經信號,分別對不同的腦區域進行電刺激,達到治療的目的。系統

        方案如圖l所示。

        除了使用VC54x系列中常用的GPIO外,還為用戶提供了多個可選擇的GPIO:HPI一8和McBSP。可與各類存儲器直接接口。

        USB2.0控制器選擇Cypress公司的FX2系列產品cY7C68013。EZUSB FX2是Cypress公司生產的世界上第1個USB2.0的集成微控制器,包括1個805l處理器、1個SIE(串行接口引擎)、1個USB收發器、8.5 kB片上RAM、4 kB FIF0存儲器和1個GPIF(通用可編程接口),總線標準傳輸速度達480 Mbit/s,足夠滿足高速外設的速率要求。其結構如圖2所示。

        2 TMs320VC5402 I/o

        由于本系統含有多個處理模塊,而且在同一時刻,神經微電極陣列要選通多路同時進行神經電刺激、信號采集及USB傳輸。DSP芯片的GPIO資源不夠用,需要擴展I/0以滿足需求。因此,本項目將EHPI配置為8位通用I/O,用做數據線與cY7C68013。將McBSP配置為通用I//0,用做CY7C68013的控制線。

        2.1。EHPI-8用做GPIO

        FMS320VC5402的8位EHPI將DSP設置為從模式來完成與主處理機之間的通信任務,使得主機和DSP均可以訪問DSP上存儲器。但HPI.8的8位雙向數據總線也可以用做GPIO引腳。這個功能僅當HPI-8接口禁止時有效,即當HPIENA引腳在復位過程中被置為低電平時有效。可通過GPIOCR(通用輸入/輸出控制寄存器)和GPIOSR(通用輸入/輸出狀態寄存器)這兩個存儲器映射寄存器用來控制HPI.8數據引腳的GPIO功能。

        GPIOCR的方向位(DIRx)用來設置HD0~HD7是輸入還是輸出。如圖3所示。定時器1輸出位TOUTl只對那些有兩個定時器的器件才有效,它控制定時器l輸出到HINT引腳上。當系統只有1個定時器時,該位被保留。當HPI一8接口使用時,TOuTl位和DIRx為被強迫置零,并且通用輸入/輸出引腳只能處于輸入模式。

        GPIO引腳(HDx,x=0:7)的狀態可以用GPIOSR中的位來監控。如圖4所示。當一個HDx引腳被設定為輸入端時(通過對GPIOCR中的DIRx位寫入一個"O"),GPIOSR中對應的位可以被讀取以確定這個引腳上探測到的邏輯值。同樣,當一個HDx引腳被設定為一個輸出端時,驅動到這個引腳上的邏輯值被寫人GPIOCR中的相應位。

        要把HPI一8的數據引腳當做GPIO引腳使用,首先要對這些引腳進行適當的設置,然后可以通過讀寫GPIOSR來監控或操作這些引腳。

        2.2 McBSP用做GPIO

        TMS320VC5402是54x系列中最早引入McBSP(多通道緩沖串行口)的芯片。該串行口在以下兩個條件成立時(串口引腳CLKX、FSX、DX、CLKR、FSR和DR可以被用作GPIO引腳,而不作為串口引腳):

        a)串口的相關部分(發送端或接收端)處于復位狀態,即SPCR[1,2]中

        b)串口的相關部分的GPIO引腳功能被啟用,即PCR中的(R/X)IOEN=l。

        PcR(引腳控制器)說明了將McBSP的引腳配置成通用I/0引腳的位,如圖5所示。

        表l列出了詳細的配置情況。

        以Fs(R/x)為例,Fs(R/x)M=0設置該引腳為輸入,而Fs(R/x)M=l則設置該引腳為輸出。當FS(R/x)配置為輸出時,驅動到FS(R/x)引腳上的值是存儲在Fs(R/x)P中的值。如果Fs(R/x)配置為輸入,那么Fs(R/x)P變為只讀位,它反映Fs(R/x)信號的狀態。類似地,CLK(R/x)引腳也可由CLK(R/X)M和CLK(R/x)P如此配置。

        DX總是用做輸出,當發送端被選做GPIO引腳時,PCR中DX-STA3、位的值被驅動到DX上;DR總是作為輸入,并且它的值保存在PCR的DR.STAT位中;因為cLXS總足作為McBSP的輸入并且影響發送和接收操作,所以若要配置CIXS為通用的輸入引腳,則發送端和接收端必須都處于復位狀態,且保證(R/x)IOEN=l。

        3 CY7C68013與TMs320VCl5402硬件連接

        CY7C68013與DSP的連接方法有主/從兩種接口方式:可編程接口GPIF和從FIFO。可編程接口GPIF是主機方式,可以由軟件編寫讀寫控制時序,靈活方便,幾乎可以和所有8/16 bit接口的控制器、存儲器和總線進行無縫連接。

        從FIFO方式是從機方式,外部控制器可以像對待普通FIFO一樣對FX2內的多個緩沖區進行讀寫。從FIFO接口也可以靈活配置以適應不同的需要。

        本方案采用從FIFO方式,異步讀寫,屬從機方式。圖6為cY7C68013與rMS320C5402硬件連接圖。



        FLAGA、FLAGB和l FIAGC是C68013內部FIFO的狀態標志,VC5402由已配置為通用I/O口的McB-sP口來獲得FIFO的空、半滿和滿等狀態信息,實現對C68013內部FIFO的選擇,并完成對CYTC68013進行讀寫操作控制。Vc5402數據包提交由配置為通用I/O的EHPI-8口實現。工作過程為:DSP通過USB向Pc發送數據時,先查看空、半滿和滿3個狀態信號,再向USB寫入適當大小的數據,以保證數據不會溢出。Pc機經USB向DSP發送命令字時,USB按中斷方式通知DSP讀取命令字。因方案采用USB2.0高速模式,所以IJSB端口D+、D一線上使用15 kΩ,電阻連接到3.3 V電源。

        4 uSB2.O軟件設計

        USB軟件包括固件設計、驅動程序設計和主機端應用程序的設計3方面的工作。

        4.1固件設計

        固件是運行在USB2.0總線控制器中的程序,功能主要包括:實現芯片初始化;處理USB標準設備請求,加載后與主機驅動配合完成接口設備的第2次枚舉;處理與TMS320VC5402的數據交換;處理與主機之間的USB接口的數據交換。

        Cypress公司為FX2芯片提供基于Keil C51開發的固件函數庫(Ezusb.1ib)和固件框架(frame Work)。利用這些固件架構,用戶開發的主要工作是根據自定義設備修改periph.c。本系統中CY7C68013主要完成接收并處理USB驅動程序的請求、將數據實時上傳至PC。方案選擇CY7C68013工作于異步從FIFO模式。將4 kB的FIFO對應到兩個端點(EndPoint),即End-Point2和EndPoint6,相應的寄存器操作為:EP2CFG=OxA0,EP6CFG=0xE2。:EndPoint2與EndPoint6分別對應2 kB的內部FIFO),用以存放LISB需要上傳與接受的數據。其中EndPoint2為OUT。型,從主機接收數據;EndPoint6為IN型,向主機發送數據。相應的寄存器操作為EP2FIFOCFG=0xl l,EP6 FIFOCFG=0x0D。EndPoint2與End.Point6設置成自動批量(BULK)傳輸

        方式,即在數據傳輸過程中不需cY7C68013的8051內核參與。這種方式相對于其他USB2.0定義的傳輸方式具有數據可靠、傳輸速率高等特點,是最常用的傳輸方式。因此,periph.c中無需在用戶功能函數TD-Poll()中添加代碼,而只在TD-lnit()函數中設置芯片工作方式即可。為了完善整個LiSB傳輸功能,提高固件健壯性,還給FlFO添加了自動清空復位功能。

        4.2驅動程序設計

        USB設備驅動程序包含USB總線驅動程序和USB設備驅動程序。USB總線驅動程序由windows操作系統提供(USBD.SYS),用戶不需要知道USB總線驅動程序的工作細節;USB設備驅動程序位于USB總線驅動程序之上,通過向USB總線驅動程序發送包含USB請求的IRP來實現對USB設備信息的發送或接收。USB設備驅動程序可使用cY7C68013開發包中提供的通用驅動程序,該程序可不加修改經DDK編譯后直接使用。它是CypreSS公司為了方便用戶開發IJSB接口而提供的[7]。

        4.3主機端應用程序設計

        系統中主機端應用程序的主要任務是:從DsP中高速讀取信號采集處理后的數據,存儲,顯示處理結果,向DsP發送控制命令。應用程序的開發使用了VC++6.0。由于EZ-USB FX2的開發板提供了主機端驅動程序,所以在進行應用開發時,可直接調用Win-dows API函數對win32子系統進行Win32調用,實現對USB設備的I/O操作。

        應用程序在執行時,首先使用CreateFile()來建'立與外設的連接,從而打開設備驅動程序,獲得設備句柄。如果createFile()函數返回成功,就可對設備進行讀寫操作,一般采用ReadF、ile、writeFile。然后根據該句柄調用DeviceIoConlml()來完成數據傳輸,Devi.celoControl()函數執行返回后,數據放在計算機的緩

        沖區,可以將緩沖區的數據進行顯示和存儲。當程序需要處理多個事務時,應采用異步方式打開接口。FX2是多端點通信,但其本身只能準雙工通信。兇此,采用異步通信方式能很好協調程序事務。

        圖7是運用VC++6.O編寫的界面,用以存進行USB調試時監測數據的傳輸情況。

        5結束語

        本系統采用高速DSP作為主控制器,通過對cY7C68013的軟硬件設計和DSP擴展I/O口的配置,實現了高速DSP系統的USB2.0接口,滿足了高速腦電信號數據采集與傳輸的要求。隨著DSP技術的發展,若在系統中使用更高頻率的DSP,可以實現更快的運算和傳輸。最終用于假肢裝置的控制信息源,實現靈活動作。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富顺县| 巴南区| 津市市| 武安市| 河间市| 甘洛县| 定州市| 台东市| 石景山区| 筠连县| 花莲县| 建平县| 临高县| 长武县| 广宗县| 金秀| 社会| 松桃| 康平县| 长治县| 若羌县| 双柏县| 东安县| 宁远县| 连江县| 阜南县| 新竹市| 广南县| 惠来县| 梨树县| 元谋县| 达拉特旗| 靖州| 沛县| 廉江市| 奉节县| 子长县| 西乌| 永靖县| 探索| 玛曲县|