1.1.枚举
1.1.1.上电连接过程
1.1.2.设备识别过程
1.1.3.枚举过程
1.1.3.1.获取设备描述符(只关注设备描述符中最大数据包长度)
1.1.3.2.设置设备针对主机的唯一从机地址
1.1.3.3.获取完整设备描述符
1.1.3.4.获取配置描述符
-
先获取标准配置描述符(主要获取配置描述符集合长度属性根据其获取配置描述符集合)
-
获取配置描述符集合
-
标准配置描述符
-
接口描述符
-
端点描述符
-
如为HID设备
-
HID描述符
-
报告描述符
-
物理描述符
-
-
1.1.3.5.获取字符串描述符
1.2.传输
1.2.1.事务
1.2.1.1.事务的组成
-
令牌包(以SETUP令牌包为例)
-
数据包(以控制传输中SETUP设置阶段DATA0为例)
-
握手包(以ACK为例)同步传输下的事务没有握手包
1.2.1.2.事务分类(以控制传输为例)
-
SETUP事务
-
DATA IN事务
-
DATA OUT事务
1.2.2.传输分类
1.2.2.1.控制传输:
-
第一阶段:设置阶段(一个SETUP事务)
-
第二阶段:可选有或没有的数据阶段(0个或者多个IN/OUT事务)
-
第三阶段:状态阶段(一个IN/OUT事务)
1.2.2.2.同步传输
-
1个或多个IN/OUT事务
1.2.2.3.批量传输:传输图像
-
1个或多个IN/OUT事务
1.2.2.4.中断传输:传输IMU数据
-
1个IN/OUT事务
1.2.3.数据包同步与重传机制
1.2.3.1.正确数据传输同步原理
-
初始在发送数据之前,假设主机和设备状态都是0。
-
主机会根据当前状态先发送DATA0类型数据包给设备,当设备正确收到数据包后会对自己的状态进行反转(变为1),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为1)
-
如果还需要发送数据包,则主机会发送DATA1类型的数据包(根据自己的当前状态为1决定的),当设备收到正确收到数据包后会进行对自己的状态进行反转(变为0),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为0)。
1.2.3.2.数据被破坏的传输原理(重传机制)
-
初始在发送数据之前,假设主机和设备状态都是0。
-
机制就是初始在发送数据之前,主机和设备状态都是0,主机会先发送DATA0类型数据包给设备,当设备发现数据存在问题后不会对自己的状态进行切换,并给主机发送非应答数据包,当主机接收到非应答数据包后,不会对自己的状态进行切换。
-
主机会在适当的时刻对DATA0数据包进行重传(Retry),直到设备接收正常,设备发现数据包正常了会把自己的状态进行反转,并返回应答数据包,主机在收到应答包后会反转自己的状态。
1.2.3.3.应答包故障的传输原理
-
初始在发送数据之前,假设主机和设备状态都是0。
-
主机会先发送DATAO类型数据包给设备,当设备正确收到数据包后会进行对自己的状态进行反转为1,并给主机发送应答数据包,但是,但是应答包在链路上出故障了,怎么办?当主机收到一个校验有问题应答包,主机不会对自己的状态进行反转,主机该怎么办?往
-
主机会在合适的时间对DATA0数据包进行重发,但是当前设备的状态是1,因此设备会忽略该数据包并保持现在的状态,然后设备会给主机重新在发送一次应答包,当主机正确收到设备的应答包后对自己的状态进行反转。文章来源:https://uudwc.com/A/0rqq9
-
当还需要发送数据包时,主机会根据自己当前的状态(假设为1),会发送DATA1数据包,设备在正确收到DATA1数据包后,会对自己的状态进行反转,并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转。文章来源地址https://uudwc.com/A/0rqq9