USB equipment firmware procedure development based on DSP
摘要:本文介绍了一种采用TMS320VC5509A自带的USB模块来实现USB数据传输的方案,对该DSP内部的USBCSL)来实现USB设备固件程序的设计,并给出了相关的部分代码。该方案大大降低了系统硬件模块的构造及其传输原理做了分析,详细的介绍了如何利用CCS内部集成的片级支持库(设计的复杂度和调试的难度,提高了系统的集成度和稳定性,适用于便携式设备中。
关键词:TMS320VC5509A;CSL;DSP;USB;固件程序
Abstract: This article introduced a method to realize USB data transmission using the TMS320VC5509A’s own USB module , analyzed the DSP’s interior USB module’s structure and its transmission principle, how to realize the USB firmware procedure design using chip support library which is integrated in CCS has been introduced in detail, and the related partial codes has been given. This method greatly reduced the complexity of the system’s hardware design and the debugging difficulty, it enhanced the system integration rate and the stability, using in the portable equipment is suitable.
KeyWords: TMS320VC5509A;CSL;DSP;USB;Firmware
1.引言
通用串行总线(USB)是一种高传输速率的串行接口总线,由于它具有即插即用、易于扩展、传输速率高、连接简单、使用方便的特点,被广泛的应用于各种计算机外设、数据采集、数字设备以及工业控制等领域中。选取合适的USB控制芯片是USB数据传输系统设计的重要环节,目前常采用USB控制芯片有两类,一类是不带MCU的控制芯片,如PDIUSBD12;而另一类是带MCU的,如EZ—USB系列等。这两类专用的控制芯片都需要通过芯片所提供的接口来与系统处理器进行通信,而本文介绍的USB接口方案没有采用专用的USB控制芯片,而是采用DSP芯片TMS320VC5509A内部集成的USB模块来完成USB通信,使系统硬件设计和调试难度都大大降低,同时也提高了系统的集成度和稳定性。
2.USB接口设计
2.1 TMS320VC5509A简介
TMS320VC5509A是TI推出的高性能、低功耗的定点DSP处理器,CPU频率最高可以运行在200MHz(内核电压工作在1.6v),每个时钟周期可执行一到两条指令,有两个算术逻辑单元(ALU),两个硬件乘法器,是一款具有较高性价比、高集成度、低功耗的DSP芯片,适用于便携式设备中。TMS320VC5509A集成了128K 16Bits RAM、32K 16Bits的ROM,且带有EMIF接口, 可实现与多种存储器之间的无缝连接。片内还有丰富的外设:2个20位的定时器;3个多通道缓冲串口(McBSP);USB全速接口(12Mbps);I2C接口;实时时钟等[1]。
2.2 TMS320VC5509A的USB模块介绍
TMS320VC5509A自带的USB模块支持USB1.1协议全速标准,该USB模块有两个控制端点(仅用于控制传输)和14个通用端点,通用端点支持中断、批量和同步传输。DSP的USB模块由串行接口引擎(SIE)、USB缓冲管理单元(UBM)、缓冲器RAM、USB的DMA控制器和缓冲器RAM仲裁器组成。DSP存储器与USB主机之间的数据传输模型如图(1)所示:在IN事务中,CPU或USB的DMA控制器将准备发送到主机的数据放到缓冲器RAM中,等待USB缓冲管理单元将数据取出后送到串行接口引擎(SIE),由SIE负责数据的发送;在OUT事务中,SIE接收到由主机发来的数据后送到UBM,再送入到缓冲器RAM中,等待CPU或USB的DMA控制器将数据取出后送到DSP的存储器中。
图(1)DSP存储器与USB主机之间的数据传输
2.3 USB 模块的时钟发生器:
USB模块有专门的时钟发生器,独立于CPU的时钟发生器,如图(2)所示,由DSP时钟发生器输出的时钟送入到CPU和其他外设(不包括USB模块),而USB模块的时钟由单独的时钟发生器为它提供。USB模块的时钟可选择用模拟锁相环(APLL)或数字锁相环(DPLL)来产生[3]。模拟锁相环与数字锁相环相比有它独特的优势,TI推荐使用模拟锁相环来产生USB模块的时钟。提供给USB模块的时钟必须设置为48MHz。