在简单介绍USB原理的基础上,给出了嵌入式USB-host功能模块软、硬件设计的思路和方法,用以实现单片机和USB设备间的数据传输。
一、前言
由于各种各样的基于USB的移动设备都集成有USB设备功能,导致具有USB接口的数字设备无法应用到嵌入式系统中。因此,USB主机的嵌入式应用就成了USB领域新的研究的焦点。解决这一问题可在USB设备的嵌入式系统中集成USB Host功能模块,使之具有与USB设备进行数据传输的能力。
二、USB基本原理
USB原理主要定义了以下几点:
(一)USB的物理接口
USB通过四芯线传输信号,其中D+、D-是一对差分模式的信号线,Vcc、GND为电源的正负线。
(二)USB总线的拓扑结构
USB系统主要以主机控制器(Host
Controller)、转接器hub与设备节点(Node)的方式连接组成系统的拓扑结构,最多可以延伸到4个层次。
(三)USB总线协议
USB协议使用物质循环冗余校验(CRC)作为每个标志包以及数据包的差错控制,并有相应的硬件和软件处理。USB传输数据是以包(Packet)的形式进行的,其有三个包:标志包(Token Packet)——用来说明数据传输的类型、方向、USB设备地址和终端号;数据包(Data Packet)——是根据标志包的内容来传输数据;握手包(Handshake
Packet)——是向数据发送者提供反馈信息,以便开始和停止发送数据。
(四)USB传输的数据流类型
USB数据传输是在主机软件和USB设备上的一个特定端口之间进行,USB有四种数据传输类型:控制传输(Control Transfer)、批量传输(Bulk Transfer)、中断传输(Interrupt Transfer)、同步传输(Isochronous Transfer)。其不同的数据传输执行不同的功能。
(五)USB电源管理系统
USB有两种电源分配模式:总线供电(Bus-Powered)模式和独立供电(Self- Powered)模式。
三、USB-host功能模块硬件设计
USB技术规范将使用USB进行数据传输的双方分划为两种角色:Host和Slave,并且规定,数据传输只能发生在Host和Slave之间。在嵌入式系统中集成USB Host功能模块,使之具有与USB Slave设备进行数据传输的能力。
四、USB Host 模块的Firmware设计
USB Host模块设计中最困难的就是Firmware(固件)设计,该模块固件程序主要几个部分组成:对SL811HS进行设置的初始化程序,这部分程序在系统复位后就执行;发现USB设备接入的子程序,并判断该设备是高速设备还是低速设备;并指定其USB地址的子程序,以及其他数据通信的子程序。
以包为基础,USB定义的4种数据传输类型所能达到的传输速度、占用USB总线的宽带、传输数据的总量和应用场合等都是不同的。每种传输方式都由很多个事务来完成。USB事务处理一般由3个阶段组成:令牌阶段、数据阶段和握手阶段。
在USB Host模块中,固件的核心部分是USB传输函数usbXfer。usbXfer管理着USB的事务处理,其入口参数有:设备地址UsbAddr、端点地址Endpoint、令牌包类型PID、端点最大负荷Payload、传输数据总长度Length、数据缓存区指针Bufer。
USB主机检测到设备连接好后要对其进行配置,称为设备的枚举,该部分固件的核心是设备请求函数VendorCmd。VendorCmd构建在usbXfer函数之上,通过调用usbXfer进行若干次的控制传输来实现。控制传输由3个阶段组成:建立阶段、数据阶段和状态阶段。
设备的枚举过程主要包括以下步骤:(1)主机请求设备控制端点0,以确定缺省管道支持的最大数据量。(2)主机给USB设备分配1个惟一的地址。(3)主机从描述符中读取配置信息并加以执行。(4)主机验证设备所需要的资源是否可以获得。(5)主机USB设备发送1个配置值,指出如何使用该设备。枚举成功后,主机和设备就可根据设备接口类型,采用相应的接口协议进行数据控制和传输。
五、结语
USB Host模块在用户需要时,可以读取U盘中的文件进行分析、处理,为用户实现大容量、高速度、可靠数据存储和处理提供了可能性,解决了嵌入式系统大容量存储问题,该模块也可移植到其他嵌入式系统中,应用前景广泛。
投稿要求:
1.内容要求:坚持正确的舆论导向,遵循新闻传媒规律。有自己独到的理论见解,或独特的实践做法。
2.摘要:用第三人称写法,不以“本文”、“作者”等作主语,应是一篇能客观反映文章核心观点和创新观点的表意明确、实在的小短文,切忌写成背景交代或“中心思想”,100-200字为宜。
3.正文标题:内容应简洁、明了,层次不宜过多,层次序号为一、(一)、1、(1),层次少时可依次选序号。
4.正文文字:一般以4000字符为宜,正文用小4号宋体,通栏排版,每版平均2000字符。
5.基金项目: 获得国家基金资助和省部级科研项目的文章请注明基金项目名称及编号,按项目证明文字材料标示清楚。
6.作者简介:姓名(出生年- ),性别,民族(汉族可省略),籍贯,现供职单位全称及职称、学位,研究方向。
7. 来稿请注明作者电话、E-mail,收刊人及详细地址、邮编。
8.其他:请勿一稿两发,并请自留原稿,本刊概不退稿。
投稿邮箱:2191974423@qq.com; 2191974423@qq.com(注明投稿刊物名称)
咨询QQ:280747782; 2191974423
咨询电话:0571-28069909(咨询时间:周一至周六 9:00--17:00)
网址:www.shjbjb.com
欢迎咨询供稿,并诚招各大高校代理约稿人!
注:本杂志社会根据版面安排适当编辑文章内容,作者如不同意论文被修改,请来搞注明。如有基金项目支持,请注明基金项目编号。