基于DSP的嵌入式USB主机接口设计

出处:刘 兵 徐家恺 刘 阳 发布于:2011-08-24 20:03:59

  摘要:在简单介绍嵌入式title="USB">USB芯片SL811HS的基础上,给出了DSP的嵌入式USB主机接口软、硬件设计的思路和方法,用以实现DSP和USB设备间的数据传输。

  众所周知,在一个USB拓扑结构中USB主机居于地位,主机发起井控制任何USB数据传输,所有的USB设备都只能和USB主机建立连接,任何两个USB设备之间或两个Host之间无法直接通信。目前大量扮演USB主机角色的是个人电脑PC,随着USB技术的不断发展,USB设备的应用领域日益扩大,如何在非PC环境下使用USB设备已经成为业界关注的热点。

  本文介绍采用TMS320VC54x DSP和嵌入式USB主机芯片的连接,实现USB设备和DSP的数据传输。

  1 SL811HS芯片

  SL811HS是一款双功能的USB接口芯片,即可作为USB主机接口、又可作为USB设备接口,支持USB 1.1规范的全速和低速设备。数据线为8位。内部包括256字节的RAM,其中前16字节作为控制,状态寄存器,用于事务处理、中断控制、状态反馈等,可以对USB主机进行充分控制,剩下的240字节作为数据缓存区。SL811HS工作电压为3.3V,但是Io端口为5V,因此SL811HS可以自由的和5V或3.3V的CPU系统连接。

  SL811HS主机模式下的功能框图如图1所示。在片选信号nCS、读闸门信号nRD、写闸门信号nWR等控制信号、地址线A0和数据总线D0~D7的作用下,它可以映射到处理器的I/O空间或存储器空间。SL811HS片内有256字节的RAM,其中低16字节是控制寄存器和状态寄存器,剩下的240字节用作数据缓存。地址线A0的使用比较特殊,访问芯片时,首先将A0置0,通过D0~D7写入目标RAM地址,然后在下读写周期中,将A0置1,这样D0~D7上就变成访问的数据。在每次读写操作后,RAM地址指针会自动指向下一个数据单元。

  SL811HS片内寄存器分为二部分,部分负责USB的传输,包括USB主机控制寄存器(USB Host Control Register)、USB主机基址寄存器(USB Host Base Address)、USB主机长度寄存器(USB Host Base Length)、USB主机令牌、端点寄存器(USB Host PID, Device Endpoint)、USB状态寄存器(USB Status)、USB主机设备地址寄存器(USB Host Device Address)、USB传输计数器(USB Transfer Count);第二部分负责SL811HS的工作,包括控制寄存器1(Control Register 1)、中断使能寄存器(Interrupt Enable Register)、中断状态寄存器(Interrupt Status Register)、SOF低位计数器(SOF Counter LOW)、硬件版本寄存器(HW Revision Register),SOF高位计数器(SOF Counter HIGH)、控制寄存器2(Control Register 2)。

  处理器通过访问上述寄存器来进行数据传输控制和获取传输状态。另外,SL811HS提供了USB-A和USB-B二组USB主机控制寄存器,因此可以采用乒乓方式进行USB传输。而数据的CRC校验则由芯片自动完成。

  2 硬件设计

  本设计中采用的DSP是TI公司的TMS320VC5402,它有64KB的I/O空间,映射SL811HS非常简单。TMS320VC5402与SL811HS的硬件连接图如图2所示。

  硬件设计很简单,SL811HS的M/S接高电平,工作在主机模式下;DSP的IOSTRB#作为片选nCS输入;读写信号的逻辑表达式分别为:nRD=IOSTRB#+(!R/W#),nWR= IOSTRB#+R/W#;二者的地址线A0和数据线D0~D7对应连接;DSP的输出XF提供硬件复位脉冲。此外,由于SL811HS的中断请求INTR高电平有效,而DSP的中断是下降沿触发,所以INTR要经过非运算后才能接到INT0#上。经过如上的映射,DSP向奇地址I/O空间写数据对选择SL811HS的目标RAM,访问偶地址I/O空间时则传输相应的数据。

  3  软件设计

  3.1 SL811HS存储器读写软件

  SL811HS片内RAM的访问可以用2个函数实现:Wr811hsBuf(u16 address,u16*buffer、u16 length)和Rd811-hsBuf(u16 address,u16*buffer,u16 length),其中的参数分别为SL811HS的RAM地址、DSP数据单元指针和访问字节数,以下给出它们的源代码。

  void Wr811hsBuf(u16 address,u16*buffer,u16 length)

  { port0000=address;//选择SL811HS要写

  //的第1个RAM单元

  While(length--)//将DSP缓冲区的数据

  //逐一写入SL811HS

  port0001=*buffer++;//每写1次,SL811HS

  //自动指向下一个RAM单元

  }

  void Rd811hsBuf(u16 address,u16*buffer,u16 length)

  { port0000=address;//选择SL811HS要读的

  //第1个RAM单元

  While(length--)  //将SL811HS的数据

  //逐一读出放到DSP缓冲区

  *buffer++=port0001;//每读1次,SL811HS

  //自动指向下一个RAM单元

  }

  3.2 USB主机的Firmware设计

  USB的设计困难的就是Firmware(固件)设计,固件编程要遵循复杂的USB规范,所以比硬件设计工作量大得多。

  主机端的固件编程可以基于WINCE、VxWorks、Linux等嵌入式操作系统。Cypress公司网站上有SL811HS在这些RTOS平台上的驱动源码。但如果系统资源较少,功能比较简单,也可以不用RTOS,而直接自己编写SL811HS的USB底层驱动。笔者就是采用了这一方法,故工作量并不大。

  USB事务处理一般由3个阶段组成:令牌阶段、数据阶段和握手阶段。令牌阶段定义了事务处理的类型,包括SETUP、IN和OUT;数据阶段负责运送和传输相关的数据,Data0和Data1二种数据包交替使用,以支持双方的传输同步;握手阶段由收方向发方提供反馈,告知数据是否正确接收。

  在嵌入式USB设计中,固件的部分是USB传输函数usbXfer。usbXfer管理着USB的事务处理,其入口参数有:设备地址UsbAddr、端点地址Endpoint、令牌包类型PID、端点负荷Payload、传输数据总长度Length、DSP数据缓存区指针*Buffer。USB传输函数程序流程图如图3所示。

  USB主机检测到设备连接好后要对其进行配置,称为设备的枚举,该部分固件的是设备请求函数VendorCmd。VendorCmd构建在usbXfer函数之上,通过调用usbXfer进行若干次的控制传输来实现。控制传输由3个阶段组成:建立阶段、数据阶段和状态阶段。建立阶段,主机进行SETUP事务处理,向目标设备发送标准设备请求;数据阶段,由若干个IN事务处理或OUT事务处理组成;状态阶段,主机则完成与数据阶段相反的事务处理,结束本次控制传输。

  设备的枚举过程主要包括以下步骤:(1)主机请求设备控制端点0,以确定缺省管道支持的数据量。(2)主机给USB设备分配1个惟一的地址。(3)主机从描述符中读取配置信息并加以执行。(4)主机验证设备所需要的资源是否可以获得。(5)主机给USB设备发送1个配置值,指出如何使用该设备。

  枚举成功后,主机和设备就可根据设备接口类型,采用相应的接口协议进行数据控制和传输。USB设备类型主要划分为:音频设备类、显示设备类、人机接口类、海量存储器类等。特定的设备类又划分为若干个子类,它们又有可能采用不同的接口协议传输指令和数据。以U盘为例,类代码08h(海量存储器类),子类代码06h(SCSI指令集子类),传输协议50h(Bulk-Only传输协议)。按照这些标准,则U盘的操作过程可分为指令、数据和状态3个阶段,也就是主机首先向设备Bulk-Out端点写包含SCSI的指令块(CBW),然后从Bulk-In读数据或向Bulk-Out端点写数据,从Bulk-In端点读取传输状态(CSW)。

  4  结束语

  嵌入式USB主机硬件一股由USB土机接U芯片和DSP(或MCU)构成,是在非PC环境下应用USB接口的低成本解决方案,日前国际国内在这方面还处于起步阶段,其应用前景非常广阔。本文结合PCI卡的具体应用讨论了基于DSP的嵌入式USB主机的实现方法。


  

参考文献:

[1]. SL811HS datasheet https://www.dzsc.com/datasheet/SL811HS_611618.html.
[2]. TMS320VC5402 datasheet https://www.dzsc.com/datasheet/TMS320VC5402_688959.html.
[3]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.


关键词:DSPUSB接口嵌入式

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!