新闻中心

EEPW首页>嵌入式系统>设计应用> 基于TMS320C54xx DSP的USB接口实现

基于TMS320C54xx DSP的USB接口实现

作者: 时间:2012-06-29 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257400.htm

2 TMS320C54XX和AN2131Q接口芯片的硬件连接

芯片选用TI公司的TMS320VC5409,Tms320VC5409是定点芯片,它使用改进的哈佛结构,8级流水线操作,最高速度可以达到166MIPS。

在AN2131Q芯片和DSP芯片之间采用FIFO(First In First Out SRAM)芯片连接,可以使接口芯片和DSP之间的最大数据交换速度超过总线的速度,使之不成为数据传输的瓶颈,从而使DSP和主机间的数据传输速度只受协议限制。

由于AN2131Q芯片内嵌8位8051处理器,所以使用两片8位FIFO芯片实现USB接口和DSP之间的双向通信。FIFO选用具有1K×9bit内存的IDT72V02。从AN2131Q或者DSP传输的数据首先保存在FIFO中,然后再由DSP或者AN2131Q读走,从而使得数据的传输不会出现堵塞情况,其硬件连接框图如图2所示。


由于选用的FIFO只有双端数据总线和状态信号,没有地址总线,所以DSP采用I/O译码方式访问FIFO。FIFO状态信号有空(EF)、半满(HF)和满(FF),它们都是低有效。合理利用这三个信号可以很有效地提高FIFO的读写效率。例如利用HF,如果其无效,表示FIFO中的数据没有达到半满,此时不用查询FF就可以向FIFO中写入一块数据,只要数据块的大小等于或小于FIFO容量的一半,FIFO肯定不会满溢出。这样就可以大大提高FIFO的写入速度。

3 TMS320C54XX DSP芯片和AN2131Q芯片的软件连接

AN2131Q芯片和TMS320C54XX DSP芯片之间的软件连接包括四个部分:AN2131Q对FIFO1的写、AN2131Q对FIFO2的读、DSP对FIFO1的读、DSP对FIFO2的写。为了描述方便,将FIFO1的三个状态信号称之为:EF1、HF1和FF1,将FIFO2的状态信号称为EF2、HF2和HF2。

3.1 AN2131Q写FIFO1

当USB总线上有数据要传送至DSP时,AN2131Q查询HF1。若HF1无效,AN2131Q一次向FIFO1写入一个数据包。包大小要小于或等于FIFO1容量的一半,写每一个字节时不需再查询FF1。

3.2 DSP读FIFO1

DSP每次从FIFO1中读入一个数据包。每读一个字节前,DSP需要查询EF1,只有当EF1无效(FIFO1不空)时,DSP才可能进行读操作。

3.3 DSP写FIFO2

当DSP有数据要传送至主机时,DSP把数据打包,每次向FIFO2中写入一包数据。方法同AN2131Q写FIFO1,只不过DSP查询的信号是HF2。写完一包后,DSP向AN2131Q发一个中断信号,DSP在写下一包数据时要等待AN2131Q的应答。AN2131Q应答的方法是利用DSP的外部中断INT1中断DSP。

3.4 AN2131Q读FIFO2

AN2131Q收到DSP发出的中断信号,应答DSP后,从FIFO2中读入一包数据,不用再查询EF2。

3.5 数据包格式

每个数据包由包头和数据两部分构成如图3所示。包头长度为一个字节,指明以字节为单位包中数据(不含包头)的长度。包中的数据要少于或等于64字节,即最大的包总长度为65字节。


3.6 DSP中断AN2131Q的方法

通过操作控制字向AN2131Q发一个负脉冲,下降沿有效,时序要求如图4所示。


3.7 DSP读FIFO状态

方法一是DSP通过读I/O地址0xxx xxxx xxxx x010b可获得状态信号EF1和HF2。方法二是DSP通过置TMS320VC5409状态寄存器ST1中的XF位,从BIO引脚上获取状态信号。当XF置1时,BIO引脚反映HF2的电平,当XF置0时反映EF1的电平。

4 AN2131Q芯片驱动程序的实现

AN2131Q芯片的一个特点就是能够按照个人需要通过下载和重列举动态地改变设备性能。AN2131Q芯片内部有不可改变的存储单元存放特有的代理号(VID)和产品号(PID),VID/PID将绑定主机中的某个设备驱动程序,而该驱动程序的唯一任务就是向AN2131Q下载程序代码。
用户需要编写三个程序来实现USB设备的使用。一个是负责USB接口调用程序,用于PC机识别USB设备;另一个是安装USB的信息文件,用于对USB设备的一些说明;第三个是AN2131Q使用的程序,用于对数据的传输。下面对这三个程序分别做一些简单的说明。

4.1 负责USB接口调用程序

Cypress提供了制作该程序的模板。首先,将KEIL51编译生成的16进制文件转换为可写入USB RAM中的二进制文件。然后将该二进制文件拷入模板中,调用DDK(Device Driver Kit),在DDK环境下对模板进行编译,生成驱动程序的系统文件。USB通过GPD(General Purpose Driver)实现上层软件与USB的通信。GPD提供一种用户模式的界面,完成USB设备的请求和数据传输。Cypress的开发工具包中提供了其开发面板的源程序,而其开发面板的设计就是基于GPD的。这使得开发者在例子程序的指引下,能快速地编写出用于通信的应用软件。GPD的设计思想是服务于一般用户的,其接口函数具有通用性。通过GPD提供的接口函数的原型,可以实现各种USB操作。包括实现负责USB设备的请求(即打开USB设备);负责USB的I/O口控制;通过改变IOCTL(I/O Control Code)实现各种操作。

4.2 安装USB的信息文件

安装文件的任务就是将驱动程序文件绑定到特定的VID/PID。主要说明哪一个文件是负责USB接口调用程序,哪一个文件是AN2131Q需要下载的文件。Crypress公司提供了一个标准的USB安装信息文件。然而用户还需要将自己对USB设备的描述(包括说明、版本号、日期、生产商等信息)加到安装信息文件中。

4.3 AN2131Q使用的程序

AN2131Q使用的程序是在PC机找到USB设备后下载到AN2131Q芯片内的程序,此程序实现AN2131Q对FIFO和USB接口的监控和读写数据。这个文件因为涉及到下层硬件的连接,不可能提供通用的模板,需要用户自己编写。


上一页 1 2 下一页

关键词:TMS320C54xxDSPUSB

评论


相关推荐

技术专区

关闭