USB2.0中文协议(简版)-USB2.0体系简介

[复制链接]
查看25976 | 回复21 | 2010-1-16 11:35:40 | 显示全部楼层 |阅读模式
USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。 USB2.0 被设计成为向下兼容的模式,当有全速 (USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。

        USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是 OTG设备。一个USB 系统中仅有一个USB主机;设备包括 USB功能设备和 USB HUB,最多支持 127个设备;物理连接即指的是USB 的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。

        一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地址,那么可最多支持 127个 USB 设备。在实际的 USB 体系中,如果要连接 127 个 USB设备,必须要使用 USB  HUB,而 USB  HUB 也是需要占用地址的,所以实际可支持的 USB 功能设备的数量将小于 127。

USB 体系采用分层的星型拓扑来连接所有 USB设备,如下图所示:



        以 HOST-ROOT  HUB为起点,最多支持 7 层(Tier),也就是说任何一个USB 系统中最多可以允许 5个 USB  HUB 级联。一个复合设备(Compound Device)将同时占据两层或更多的层。

ROOT HUB 是一个特殊的 USB HUB,它集成在主机控制器里,不占用地址。ROOT HUB 不但实现了普通 USB HUB 的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介绍。

“复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带录音话筒的 USB 摄像头等。

        USB 采用轮询的广播 机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。本文来源于www.eenote.com ,版权所有,转载请注明。

        USB 采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应。握手包表示了传输的成功与否。

       数据包:USB 总线上数据传输的最小单位,包括 SYNC、数据及 EOP 三个部分。其中数据的格式针对不同的包有不同的格式。但都以 8 位的 PID 开始。PID 指定了数据包的类型(共 16种)。令牌包即指 PID 为 IN/OUT/SETUP的包。

        端点(Endpoint):是 USB 设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持 2 组端点(2 个输入,2 个输出),高速和全速设备最多支持 15 组端点。  

        管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB设备一旦上电就存在一个信息管道,即默认的控制管道 默认的控制管道默认的控制管道 默认的控制管道,USB 主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。

        USB 设备连接到 HOST 时,HOST 必须通过默认的控制管道对其进行枚举 枚举 枚举 枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB 设备的即插即用特性即依赖于此。

        枚举:是 USB 体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含该子类定义的特殊请求)。通过枚举 HOST 可以获得设备的基本描述信息,如支持的 USB 版本、PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最大包长度)。HOST 根据 PID 和 VID 加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取 100mA 的电流。

USB 体系定义了四种类型的传输,它们是:
控制传输:主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。
中断传输:用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。
批量传输:用于对延迟要求宽松,大量数据的可靠传输,如U盘等。
同步传输:用于对可靠性要求不高的实时数据传输,如摄像头、USB 音响等。
注意:中断传输并不意味这传输过程中,设备会先中断 HOST,继而通知 HOST 启动传输。中断传输也是 HOST 发起的传输,采用轮询的方式询问设备是否有数据发送,若有则传输数据,否则 NAK 主机。

        不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务、可占用USB 带宽的限制以及最大包长度有一定的差异。 USB 设备通过管道和HOST 通信,在默认控制管道上接受并处理以下三种类型的请求:

        1.  标准请求 :一共有11 个标准请求,如得到设备描述、设置地址、得到配置描述等。所有USB 设备均应支持这些请求。HOST 通过标准请求来识别和配置设备。

        2.  类 (class)请求 :USB 还定义了若干个子类,如HUB 类、大容量存储器类等。不同的类又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描述符中可以得到。

        3.  厂商请求 :这部分请求并不是 USB 规范定义的,而是设备生产商为了实现一定的功能而自己定义的请求。

        USB HUB提供了一种低成本、低复杂度的USB 接口扩展方法。HUB的上行PORT 面向 HOST,下行 PORT 面向设备(HUB 或功能设备)。在下行 PORT 上,HUB 提供了设备连接检测和设备移除检测的能力,并给各下行PORT供电。 HUB可以单独使能各下行PORT,不同PORT 可以工作在不同的速度等级(高速/全速/低速)。
        HUB由HUB重发器(HUB Repeater)、转发器(Transaction Translator)以及HUB 控制器(HUB Controller)三部分组成。HUB Repeater是上行PORT 和下行PORT之间的一个协议控制的开关,它负责高速数据包的重生与分发 重生与分发 重生与分发 重生与分发。HUB 控制器负责和 HOST的通信,HOST通过 HUB 类请求和 HUB 控制器通讯,获得关于 HUB 本身和下行 PORT 的 HUB 描述符,进行HUB和下行PORT 的监控和管理。转发器提供了从高速和全速/低速通讯的转换能力,通过 HUB 可以在高速 HOST 和全速/低速设备之间进行匹配。HUB 在硬件上支持 Reset、Resume、Suspend。

        重生与分发:指的是 HUB  Repeater 需要识别从上行(下行)PORT 上接收到的数据,并分发到下行 (上行)PORT。所谓分发主要是指从上行PORT接收到的数据包需要向所有使能的高速下行PORT发送,即广播。

        USB HOST 在USB体系中负责设备连接/移除的检测、HOST 和设备之间控制流和数据流的管理、传输状态的收集、总线电源的供给。
zfs303 | 2010-8-14 14:01:39 | 显示全部楼层
谢谢,学习了一下
lsmfr | 2010-8-16 16:40:32 | 显示全部楼层
希望能对你有所帮助
lsmfr | 2010-8-16 16:44:02 | 显示全部楼层
希望能对你有所帮助
kodec2104 | 2010-9-1 11:06:46 | 显示全部楼层
我也发一个USB资料希望对大家能有所帮助!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
cardtech | 2010-9-4 09:18:53 | 显示全部楼层
谢谢版主和kodec2104的资料分享
影奇 | 2010-10-6 11:44:04 | 显示全部楼层
谢谢了   有点收获
lsmfr | 2010-10-13 21:50:17 | 显示全部楼层
谢谢大家的支持,请继续支持我们
MCU | 2010-10-23 10:52:15 | 显示全部楼层
十分感谢分享
MCU | 2011-2-24 19:14:31 | 显示全部楼层
10# lpjdt


什么叫等待验证会员?
您需要登录后才可以回帖 登录 | 注册

本版积分规则