TMS320F2812数字信号处理器是TI公司推出的32位定点DSP控制器芯片,是目前控制领域最先进的处理器之一。其频率高达150MHz,大大提高了控制系统的控制精度和芯片处理能力。然而,DSP与外界高速通信的实现还处于正在研发阶段, 国内各DSP开发版制造商对此也多处于保密状态。鉴于将USB2.0协议应用于以DSP为核心的各类控制系统,可以大大提高DSP系统与外界的通信能力,从而拓宽DSP的应用范围。本文给出了DSP系统与计算机的USB2.0接口方案,从而完成了DSP系统与外界的高速数据传输。
1 接口设计方案
在信号处理系统上实现USB接口扩展的结构框图如图1所示。图中.控制系统将处理结果通过DSP芯片传输给USB控制器,接着由后者驱动USB接口以将数据传给外部器件; 另一方面,USB控制器通过USB接口接收外部器件传来的信息,然后再把它们转发给信号处理系统。图1中的阴影部分表示的是DSP与USB的接口连接.是该文着重介绍的部分。
图1 信号处理系统的USB接口扩展框图
2 芯片介绍
在以TMS320F2812 DSP为核心的嵌入式系统中, 由于处理器的速度快(主频可达150 MHz),处理的数据量大,使用USB1.1及其它内嵌微处理器的总线控制器已经不能满足数据吞吐率的要求。因此,本接口设计选用的是Cypress公司生产的不含微控制器的USB2.0总线接口控制芯片CY7C68001。
CY7C68001可用来连接微处理器或DSP的DMA从装置,该芯片内部不含微处理器,但它集成有USB2.0收发器(物理层)、USB2.0串行接口引擎SIE(链路层、实现底层通信协议)、4 kB的FIFO和电压调节器、锁相环等,CY7C68001可以支持高速(480 Mb/s)或全速(12 Mb/s)传输,采用3.3 V操作电压和24 MHz外部振荡频率,可以选择8位或16位总线方式,具有同步与异步的FIFO接口。
CY7C68001可以向用户提供足够的端口、缓冲区和传输速度,并可提供USB2.0协议要求的全部4种传输方式(控制传输、中断传输、批量传输和同步传输),可以满足用户对各种类型数据传输的需求。其片上的串行接口处理器(SIE)能完成大部分USB协议操作.使用户可以摆脱复杂的协议细节,简化用户配置代码,加快程序开发过程。但是,由于采用的是不带MCU内核的USB接口芯片. USB的应用层协议应该由TMS320F2812编程实现.USB固件的加载必须靠DSP控制CY7C68001来完成。
3 TMS320F2812与CY7C68001的互连
该设计将CY7C68001配置在TMS320F2812的Zone0空间,并采用CY7C68001的异步读写方式来完成二者之间的数据和命令交换。其接口原理电路如图2所示。
图2 TMS320F2812与CY7C68001的接口电路
CY7C68001除了带有存储器接口外.还有一个中断信号/USBINT和4个状态信号(READY、FLAGA、FLAGB和FLAGC)。中断信号/USBINT占用TMS320F2812的外部中断/XINT1,状态信号READY、FLAGA、FLAGB和FLAGC则可配置在本系统的状态寄存器0(sysstat0) 中,并可由TMS320F2812查询。本接口设计由于采用了CPLD.因而增强了系统的灵活性和可扩充性。
3.1 对CY7C68001寄存器的写操作
通过TMS320F2812对CY7C68001的寄存器进行写操作的上体过程如下:
- 将TMS320F2812对I/O空间访问的等待周期设为7;
- 通过检查系统状态寄存器0(sysstat0)位2(USBRDY)等待CY7C68001的Ready线变高;
- 寻址CY7C68001命令口(最低3位地址必须为100B),将10xx,xxxxB写命令字写入命令寄存器(xx,xxxxB代表需寻址的寄存器的子地址);
- 通过检查系统中的状态寄存器0(sysstat0)的位2(USBRDY)来等待CY7C68001的Ready线变高;
- 寻址CY7C68001命令口(最低3位地址必须为100B),将0xxx,D7D6D5D4B数据的高4位命令字写入命令寄存器(D7D6D5D4B代表要写入的数据的高4位);
- 通过检查系统中的状态寄存器0(sysstat0)的位2(USBRDY)来等待CY7C68001的Ready线变高;
- 寻址CY7C68001命令(最低3位地址必须为100B),将0xxx,D3D2D1DOB数据低4位命令字写入命令寄存器(D3D2D1DOB代表要写入的数据的低4位)。
3.2 对CY7C68001寄存器的读操作
用TMS320F2812对CY7C68001的寄存器进行读操作的具体过程如下:
- 把TMS320F2812对I/O空间访问的等待周期设为7;
- 通过检查系统状态寄存器0(sysstat0)位2(USBRDY)等待CY7C68001的Ready线变高;
- 寻址CY7C68001命令口(最低3位地址必须为100B),将11xx,xxxxB读命令字写入命令寄存器(xx,xxxxB代表需寻址的寄存器的子地址);
- 等待CY7C68001申请TMS320F2812的外部中断/XINT1;
- 寻址CY7C68001命令口(最低3位地址必须为100B).并读CY7C68001命令口。