|
基于DSP的USB数据通信系统的设计 |
Design of Data Traffic System Based on DSP and
USB
|
大连理工大学振动工程研究所 宁波 马孝江 苗刚
|
摘 要:本文详述了完整的基于DSP的USB数据通信系统的工作原理。采用目前市场上流行的DSP芯片(TMS320VC33)作为通用串行总线接口芯片(PDIUSBD12)的控制器,研究了该系统具体的硬件和固件实现。
关键词:数字信号处理器 ; 通用串行总线 ; 固件
概述
当今的计算机外部设备,都在追求高速度和高通用性。为了满足用户需求,以 Intel为首的七家公司Intel、Compaq、Microsoft、IBM、DEC、Northern
Telecom及日本NEC于1994年11月推出了USB(Universal Serial Bus 通用串行总线)协议的第一个草案,专用于低中速的计算机外设。1998年Compaq、Intel、Microsoft、NEC四家公司联合发布USB协议1.1版本,规定了两种速度(低速1.5Mb/s和高速12Mb/s)以满足不同需要,很多厂商推出了1.1协议芯片,促进了USB的发展。USB
可把多达127 个外设同时连到用户的系统上,所有的外设通过协议来共享USB 的带宽,其12Mbps的带宽对于键盘鼠标等低中速外设完全足够。(注:在2000
年发布的USB规范版本2.0 中已经将USB 支持的带宽提升到480Mbps。)USB 允许外设在主机和其它外设工作时进行连接、配置、使用及移除,即所谓的即插即用(Plug
&Play)。利用通用串行总线可为计算机和外设间的数据通信提供一个很好的解决方案,这种USB具有传输速度快、连接灵活、使用方便等特点。它作为一种高速的新型总线接口,可支持即插即用设备,并能为外设提供电流且易于扩展。因此,可广泛应用于打印机、扫描仪、大容量的外部数据存储器、数码相机和高速数据采集等多种设备中。
现在的USB生产厂商很多,几乎所有的硬件厂商都有USB 的产品。USB控制器一般有两种类型:一种是MCU集成在芯片里面的,如 Intel的8X930AX、CYPRESS的EZ-USB、SIEMENS的C541U及
MOTOLORA、National Semiconductor等公司的产品;另一种是纯粹的USB接口芯片,仅处理 USB通信,如PHILIPS的PDIUSBD11(I2C接口)、
PDIUSBP11A、PDIUSBD12(并行接口),National Semiconductor的USBN9602、USBN9603、USBN9604等。前一种由于开发时需要单独的开发系统,因此开发成本较高;而后一种只是一个芯片与MCU接口实现USB通信功能,成本较低,而且可靠性高。
PDIUSBD12是Philips公司推出的一种价格便宜、功能完善的并行接口芯片,支持多路复用、非多路复用和DMA并行传输。PDIUSBD12接口芯片遵从协议USB1.1,适合于不同用途的传输类型。PDIUSBD12需要外接微控制器(MCU)来进行协议处理和数据交换,对MCU没有特殊要求,接口方便灵活,设计师可以选用自己熟悉的MCU对芯片进行控制,也可以利用Philips公司的固件(firmware)结构来缩短开发时间、降低风险、减小投资。
PDIUSBD12的性能特点
管脚排列及功能
PDIUSBD12有SO28和TSSOP28两种封装,其管脚排列如图1所示,管脚说明如表1所列。
表1:PDIUSBD12引脚说明(略)
图1 管脚排列图(略)
工作原理
PDIUSBD12的结构原理如图2所示。
PDIUSBD12内部集成的收发器接口可以通过端口电阻直接连到USB通信电缆上。片上集成的1个3.3 V电压调整器为模拟收发器供电,并提供连接到外部1.5
k 上拉电阻的输出电压。作为选择,PDIUSBD12提供集成1.5 k 上拉电阻的SoftConnect技术。1.5 k 上拉电阻集成在PDIUSBD12片内,默认状态下不与Vcc相连,其连接的建立是通过外部/系统微处理器发送命令来实现的。这就允许系统微处理器在决定与USB建立连接之前完成初始化时序。USB总线连接可以重新初始化而不需要拔出电缆。
PDIUSBD12的串行接口引擎PSIE完全实现USB协议层,且完全由硬件实现而不需要固件的参与。该模块的功能包括:同步模式识别、并行/串行转换、位填充/解除填充、CRC校验/产生、PID校验/产生、地址识别以及握手评估/产生。
PDIUSBD12的并行接口使用方便,速度快,可以直接与主流的微处理器进行接口连接。对一个微处理器而言,PDIUSBD12可以看成是一个有8位数据总线和1个地址位(占用2个位置)的存储器件。
PDIUSBD12支持多路复用和非多路复用的地址和数据总线。支持主端点与本地共享RAM之间直接读取的DMA传输,还支持单周期和突发模式的DMA传输。
图2 机构原理框图(略)
图3 (略)
USB数据传输的硬件结构
本系统使用的DSP芯片是美国TI公司生产的TMS320VC33,和PDIUSBD12的连接,如图3所示。本系统采用单独地址和数据总线配置,ALE始终接低电平。地址线A16作为PDIUSBD12的片选,A8作为PDIUSBD12的命令/数据选择线。地址0x8c0100为写命令,数据0x8c0000为读写数据。
TMS320VC33的多位地址和数据总线直接与PDIUSBD12的数据总线相连。PDIUSBD12与TMS320VC33的数据交换采用中断方式,其中断可通过图中的外部中断3(INT3)来完成。在这一方式下,TMS320VC33通过控制PDIUSBD12实现集线器与主机通信,并完成USB协议的处理(即PDIUSBD12的固件)。该协议的处理包括地址设置、端点选择、描述符请求,设置配置等。
图4 中断服务程序流程(略)
USB的固件编程
固件设计的目标是使PDIUSBD12在USB上达到最大的传输速率。PDIUSBD12的固件设计采用中断驱动。当DSP处理前台任务时,USB的传输可在后台进行。这就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。
后台ISR(中断服务程序)和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现,当PDIUSBD12 从USB 收到一个数据包,就对DSP产生一个中断请求,DSP立即响应中断。在ISR中,固件将数据包从PDIUSBD12
内部缓冲区移到循环数据缓冲区,随后清零PDIUSBD12 的内部缓冲区,接收新的数据包。DSP可以继续它当前的前台任务直到完成,然后返回到主循环检查循环缓冲区内是否有新的数据并开始其它的前台任务。
中断服务程序代码处理由PDIUSBD12产生的中断,它将数据从PDIUSBD12的内部FIFO取回到DSP存储器,并建立正确的事件标志,通知主循环程序进行处理。其流程如图4所示。
DSP一旦上电就需要初始化所有端口、存储区、定时器和中断服务程序。之后DSP 将重新连接USB ,包括将Soft_Connect 寄存器设置为ON,确保在DSP
准备好服务D12 之前D12 不会进行操作。
主循环检测建立包时,确认建立标志之前是否被中断服务程序所置位。如果建立标志置位,将向协议层发送一个器件请求进行处理。图5所示的流程图是主程序在前台执行的流程。
图5 主循环流程(略)
结束语
本文介绍的固件设计已应用到智能故障诊断系统现场采集分析仪(PDM2000)中,实现了DSP与PC的通信,同时可供其它具有SIE的USB通信接口芯片开发做参考,也可用来开发实时高速数据采集系统。
|
|
|
|
|
|
|
|