1.USB的传输机制
(1)USB 选用little edian 字节次序,在总线上先传输一个字节的最低有用位,最终传输最高有用位,选用NRZI 编码,若遇到接连的6 个1 要求进行为填充,即刺进一个0。
(2)数据在USB 总线上的传输以包为单位,包只能在帧内传输。高速USB 总线的帧周期为125uS,全速以及低速USB 总线的帧周期为1mS。
(3)一切的USB 包都由SYNC 开端,高速包的SYNC 宽度为32bit,全速/低速包的SYNC段度为8bit。实践接收到的SYNC 产度因为USB HUB 的联系,可能会小于该值。
(4)USB 选用轮询的播送机制传输数据,一切的传输都由主机建议,任何时刻整个 USB 系统内仅答应一个数据包的传输,即不同物理传输线上看到的数据包都是同一被播送的数据包。
2,USB 数据包的格局
(1)USB 选用“令牌包”-“数据包”-“握手包”的传输机制,
(2)令牌包,PID 之后是7 位的地址和4 位的端点号。令牌包没有数据域,以5 位的CRC 校验和完毕。
(3)SOF 是一类特别的令牌包,帧的开端由一个特定的包(SOF 包)表明,PID 后跟的是11 位的帧编号。
(4)对数据包来说,PID 之后直接跟数据域,数据域的长度为N 字节,数据域后以16 位的CRC 校验和完毕。
(5)握手包仅有PID 域,没有数据也没有校验和。
令牌包中指定数据包去向或许来历的设备地址和端点(Endpoint),然后确保了只要一个设备对被播送的数据包/令牌包作出呼应。令牌包即指PID 为IN/OUT/SETUP 的包。
握手包表明了传输的成功否。握手包即指PID 为ACK/NAK/STALL 的包。
数据包是USB 总线上数据传输的最小单位,包含SYNC、数据及EOP 三个部分。其间数据的格局针对不同的包有不同的格局。但都以8 位的PID 开端。
PID 表征了数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacke)以及特别包4 大类,共16 种类型的PID。详细界说见英文协议第196 页。
3.USB枚举图例
现举一个USB枚举图的比如,进一步理解包的结构.