update doc

This commit is contained in:
sakumisu
2022-03-16 21:04:10 +08:00
parent 3e160a9e7d
commit ce5097f6b9
12 changed files with 85 additions and 14 deletions

View File

@@ -183,22 +183,77 @@ PID 由一个四位数据包类型字段和一个四位校验字段组成,占
数据字段
^^^^^^^^^^^^^^^^^^^^^^^^
根据传输类型不同,数据字段中的数据长度也是不定的,从 0-1024不等。
.. figure:: img/24.png
CRC 字段
^^^^^^^^^^^^^^^^^^^^^^^^
循环冗余校验CRC用于保护令牌和数据包中的所有非PID字段。PID不包含在包含CRC的分组的CRC校验中。 在执行比特填充之前在发送器中的各个字段上生成所有CRC。 类似地在去除填充位之后在接收器中对CRC进行解码。令牌和数据包CRC为所有单比特和双比特错误提供100的覆盖。 CRC失败被认为表示一个或多个受保护字段已损坏并导致接收器忽略这些字段并且在大多数情况下忽略整个数据包。
.. figure:: img/24.png
- 令牌CRC
为令牌提供五位CRC字段并覆盖INSETUP和OUT令牌的ADDR和ENDP字段或SOF令牌的时间戳字段。 PING和SPLIT特殊令牌还包括一个五位CRC字段。
生成多项式为: GX= X^5 + X^2 + 1
表示该多项式的二进制位模式是00101B。 如果接收到所有令牌位而没有错误则接收器处的五位校验和将为01100B。
- 数据CRC
数据CRC是应用于数据分组的数据字段的16位多项式。
生成多项式是GX= X^16 + X^15 + X^2 + 1
表示该多项式的二进制位模式是1000000000000101B。 如果没有错误地接收到所有数据和CRC位则16位校验和将为1000000000001101B。
USB 包
---------------------
包由字段组成,根据 PID 类型,包分为四大类:令牌包、数据包、握手包、特殊包。此节内容见官方 8.4.1。
.. figure:: img/25.png
算上 SOP,则如图,组成一个完整的包。
.. figure:: img/26.png
令牌包
^^^^^^^^^^^^^^^^^^^^^^^^
令牌包分为SETUP、IN、OUT、SOF其中 SETUP、IN、OUT的字段组成一样如图
.. figure:: img/27.png
- PID 字段定义了数据传输方向为USB主机到USB设备。
- ADDR 字段指明了USB设备地址。
- ENDP 字段:指明了接收数据的端点号。
- CRC 字段用于ADDR字段和ENDP字段进行循环冗余校验。
SOF 包的字段组成,如图:
.. figure:: img/28.png
- PID 字段定义了数据传输方向为USB主机到USB设备。
- 帧号 字段指明了USB传输的帧号其11位。
- CRC 字段用于ADDR字段和ENDP字段进行循环冗余校验。
数据包
^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: img/29.png
- PID 字段:用于指明不同的数据包类型。支持 4 种数据包,分别为: DATAO 、 DATA1 、DATA2 和MDATA。
- 数据 字段:其中包含了传输的数据。其数据的大小根据数据传输类吧和川户需要而定。根据 USB 协议的规定,对于低速 USB 数据传输, 最大长度为8字节对于全速SB 数据传输,其最大长度为 1023 字节;对于高速 USB 数据传输,数据最大长度为 1024 。
- CRC 字段:这里使用 16 位的循环冗余校验来对数据字段进行保护。
握手包
^^^^^^^^^^^^^^^^^^^^^^^^
特殊数据包
握手包由8位的PID构成用于数据传输的末位报告本次数据传输的状成。握手包之后使是整个事务处理的结束信号EOP.
.. figure:: img/30.png
特殊包
^^^^^^^^^^^^^^^^^^^^^^^^
USB 事务