来自:https://hellocode.blog.csdn.net/article/details/112207915
这一篇我们将会讲解在学习USB协议中务必要掌握的知识点,罗列如下(后期文章逐一攻克):
1.USB描述符
大家一定要知道,所有USB描述符都是存储在USB设备中的。USB描述符有设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,HID类设备会多出HID描述符、报告描述符、物理描述符三种描述符,描述符架构如下图。我们需要深入学习每一种描述符的数据结构及作用,并且要知道它在代码里面是如何实现的,后期我们在学习对应描述符的时候会带着大家分析STM32、ZYNQ 7000两个硬件平台的USB对应设备代码实现,这样结合实战,大家对理论学习更为深入。
2.USB传输
USB传输分为控制传输、同步传输、批量传输、中断传输四种,其中批量传输、同步传输每次传输需要一个或多个事务,中断传输一次需要一个事务,;控制传输包括三个过程(建立过程、数据过程、状态过程),建立过程和状态过程分别需要一个事务,数据过程则可能包含0个多个事务。看实例协议分析,要知道transfer是传输,transaction为事务。
2.1 批量传输(由一个事务组成)
2.2 同步传输(由一个事务组成)
2.3 中断传输(由一个事务组成)
2.4 控制传输(建立过程和状态过程由1个事务组成,数据过程由0个或者多个事务组成)
我们可以看下面这张图,控制传输有三种类型,控制写传输、控制读传输、无数据的控制传输三种。控制写传输和控制读传输数据阶段是根据传输情况可有可无,无数据控制传输无数据阶段。
控制写传输:
控制读传输:
无数据控制传输:
3.USB事务
事务通常由两三个包组成:令牌包,数据包和握手包。为什么说是通常呢?因为有一个特例同步传输的事务中没有握手包,只有令牌包和数据包。事务就是完成一件事的意思,完成一个事务需要发送或者接受几包数据。
4.USB包(☆☆☆☆☆)
USB包(packet)是学习USB协议中最最最重要的东西,包(packet)是USB传输的最小单位,所有的东西都是组织成包(packet)发送出去的,再次强调,USB包是学习USB协议中最最最重要的东西。下面这张图为包的组成结构,由SOP、SYNC、Packet Content、EOP四部分组成,其中Packet Content最为核心,Packet Content由PID、地址、帧号、数据、CRC组成。后面会一一讲解。
5.USB枚举
通过学习枚举,我们可以了解描述符、传输、事务、包在USB协议中充当的作用以及USB的工作原理,后期会讲解。