USB入门系列(二)USB事务处理(上)

USB事务处理(上)

​ USB的事务处理分为三个阶段,这三个阶段的作用分别和can的标准帧很像。

  1. 令牌阶段(包含了本次数据的类型信息)
  2. 数据阶段(包含了本次数据的数据信息)
  3. 握手阶段(包含传输是否成功的状态信息)

​ 而每个阶段都由同步字段 + 信息包 + EOP组成。令牌阶段的信息包又叫做令牌包;数据阶段的信息包又叫做数据包;握手阶段的信息包叫做握手包。

一、令牌阶段

​ 令牌阶段是USB事务处理必须包含的阶段。

1.1 同步字段(SYNC)

作用:因为USB没有时钟线,同步字段可以保证所有信息包的同步。同步字段在不同速度下的USB协议中有不一样的格式。
因为反向不归零(NRZI)编码,遇到0翻转,这样给一个序列的0,1信号可以有助于时钟同步。同步字段的最后一位为1是为了时钟恢复,是同步字段和数据字段的标志

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

1.2 令牌包

有七种令牌包

  • IN令牌包
  • OUT令牌包
  • SETUP令牌包
  • PING令牌包
  • SOF令牌包
  • SOLIT令牌包
  • PRE令牌包

二、数据阶段

​ 数据阶段包含本次传输的数据,最大的数据量为1024字节。

2.1 同步字段(SYNC)

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

2.2 数据包

数据包字段 位数 作用
PID字段 8位 指明数据包的类型
数据字段 0~1024*8位 包含了传输的数据
CRC字段 16位 循环冗余校验字段
PID字段
  • 低四位:类型字段
  • 高四位:校验字段(类型字段的补码,有点红外信号的感觉)
数据字段
  • 低速USB: 最大长度8字节
  • 全速USB:最大长度为1023字节
  • 高速USB:最大长度为1024字节

三、握手阶段

​ 握手阶段由接收方向发送方报告此次数据传输是否成功。

3.1 同步字段(SYNC)

低速和全速

同步字段长度为8位,数据为1000 0000B(先发送低位再发送高位,先发送7个0,最后一位发送1)

高速

同步字段长度为32位,数据为8000 0000H(先发送低位再发送高位,先发送31个0,最后一位发送1)

3.2 握手包

握手包由仅有一个包标识字段(8个位)组成,有5种状态

  • ACK握手包
  • NAK握手包
  • STALL握手包
  • NYET握手包
posted @ 2024-08-27 22:01  小兜兜me  阅读(60)  评论(0编辑  收藏  举报