一、简介
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 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。
USB 采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应。握手包表示了传输的成功与否。
数据包:USB 总线上数据传输的最小单位,包括 SYNC、数据及 EOP 三个部分。其中数据的格式针对不同的包有不同的格式。但都以 8 位的 PID 开始。PID 指定了数据包的类型(共 16 种)。令牌包即指 PID 为 IN/OUT/SETUP 的包。
端点(Endpoint):是 USB 设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持 2 组端点(2 个输入,2 个输出),高速和全速设备最多支持 15 组端点。
USB 设备连接到 HOST 时,HOST 必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB 设备的即插即用特性即依赖于此。
USB 体系定义了四种类型的传输,它们是:
控制传输:主要用于在设备连接时对设备进行枚举以及其他因设备而异的特定操作。
中断传输:用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。
批量传输:用于对延迟要求宽松,大量数据的可靠传输,如 U 盘等。
同步传输:用于对可靠性要求不高的实时数据传输,如摄像头、USB 音响等。
注意:不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务、可占用 USB 带宽的限制以及最大包长度有一定的差异。
三、传输类型
-
控制传输:
控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从 HOST 到Device 的 SETUP 事务传输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT 传输表明请求是否成功完成。
控制传输对于最大包长度有固定的要求。对于高速设备该值为 64Byte;对于低速设备该值为 8;全速设备可以是 8 或 16 或 32 或 64。