首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TMS320VC5402 I/o资源配置及与USB通信

TMS320VC5402 I/o资源配置及与USB通信

引言

       DSP(数字信号处理器)芯片TMS320VC5402具有高性能、低功耗、资源多等特点,其独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100 MHz。具有2个缓冲串口BSP、8位并行EHPI(增强主机接口)、可编程的等待状态发生器等,可以满足数据处理控制的要求。

  针对此应用系统通信接口数据量大、对速度要求高、实时控制的特点,本项目采用高速USB(通用串行总线)接口实现了高速的数据处理与传输。USB是一种新型接口技术,是计算机和外围设备接口通信的一种总线标准。它支持热插拔、即插即用,连接简单。本文将介绍VC5402的GPI()(I/0)资源配置及CY7C68013与外设的从(Slave)FIF0接口方式。

  1系统原理

  本系统以TI公司的TMS320VC5402 DsP为主控制器,主要分为神经信号处理电路、神经刺激电路和信号传输电路3部分。系统首先根据相应的控制信号选通神经微电极阵列的某路或多路测点,发出相应的刺激信号,并在对脑细胞进行电刺激的同时记录细胞反应,并将采集到的神经信号数据通过USB口传送到上位机,进行病理分析,从而实现了对电刺激的控制和脑信号的高速实时传输和处理。该系统可根据所建的脑电信号数据库,模拟产生与运动相应的神经信号,分别对不同的脑区域进行电刺激,达到治疗的目的。系统方案如图l所示。

  TMS320VC5402除了使用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,可以实现更快的运算和传输。最终用于假肢装置的控制信息源,实现灵活动作。
返回列表