×
嵌入式 > 嵌入式开发 > 详情

USB传输机制

发布时间:2020-07-23 发布时间:
|
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枚举图的例子,进一步理解包的结构.




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Recogni:将高端AI芯片推向自动驾驶边缘