微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TMS320VC5402 I/o资源配置及与USB通信

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

时间:10-04 来源:3721RD 点击:

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结束语

本系统

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top