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命令口。
4 软件设计 USB设备开发过程中的软件设计包括设备端的固件设计和计算机端的USB客户驱动程序设计。由于本课题研究的重点是DSP的USB2.0接口设计.而主机驱动软件大部分是公开的,可以直接使用Cypess公司提供的测试软件,因此这里不再多加讨论。 4.1 固件(FirmWare)设计 由于USB2.0接口器件CY7C68001内部集成的串行接口引擎(SIE)能完成所有USB协议层功能。所以,固件任务其实就是控制CY7C68001来执行USB协议的内容并完成数据传输功能。其固件流程如图3所示。 图3 固件流程图
4.2 总线枚举 当一个USB设备接入或拔出时.主机通过枚举过程可对设备必要的状态改变进行鉴别和管理。枚举过程步骤如下: - 通过USB所连接的集线器检测所连接的外设并通过其状态改变管道来通知主机。此时端口处于禁止状态;
- 通过询问集线器获得主机决定改变的正确状态;
- 在主机获知有新的设备连入端口后, 主机最少需要等待100ms来确保插入过程的完成.以及设备供电的稳定,然后,主机将发出一个端口使能信号和相应的端口重启命令;
- 集线器执行相应端口所需的重启过程。检测到重启时,端口必须处于使能状态.USB设备要处于默认状态,并能从VBUS线上得到最大100mA的电流供给。此时设备所有的寄存器和状态都将被重置,并以默认的地址做回应;
- 主机为USB设备分配一个唯一的地址,以使设备转入地址状态;
- 在设备收到地址之前,由于其仍可通过默认地址来访问默认的控制管道,所以,主机可通过读取设备描述符来决定USB设备的默认管道所能使用的最大有效数据载荷;
- 主机读取配置信息,在这一过程中,设备可能需要向主机提交多条配置信息;
- 基于配置信息和USB设备的使用方式,用主机给USB设备分配一个配置值,然后使设备转入配置状态。此时,设备可以从VBUS线上获得其描述符中确定的电流大小。
该系统软件中的主机程序和设备固件执行到这一步就完成了枚举过程。从设备的角度看.设备完成了配置过程,等候具体的应用。当设备被拔除时,集线器会重新发给主机一条通知信息。设备的拔除会使相应的端口处于被禁止状态。根据接收到的设备撤除信息,主机将会更新内建的设备拓扑信息。 5 实验说明 使用Bus Hound软件作为调试工具可监控计算机USB总线Hub的数据传输速度。实际测试时.可使用8 K字节作为标准测试数据。Bus Hound检测到的时间约为640 us.有效数据的传输速度可达到12.5 Mbps。 6 结束语 利用此设计方案,笔者成功地实现了基于TMS320F2812的等离子切割电源控制系统和PC机等具有主USB功能的设备之间的数据通信。并将控制系统处理后的数据实时地传输到设备的USB端口上,然后利用U盘将所需参数传递给等离子切割电源控制系统,从而取得了令人满意的效果。
|