
文章插图
- 【设备忙时】的输出事务处理

文章插图
- 【设备出错】的输出事务处理

文章插图
2.3 设置(SETUP)事务处理
- 【正常】的设置事务处理

文章插图
- 【设备忙时】的设置事务处理

文章插图
- 【设备出错】的设置事务处理

文章插图
3. USB传输类型在USB的传输中,定义了4种传输类型:
- 控制传输 (Control Transfer)
- 中断传输 (Interrupt Transfer)
- 批量传输 (Bulk Transfer)
- 同步传输 (Isochronous)
- 建立阶段(Setup)
- 数据阶段(无数据控制没有此阶段)(DATA)
- 状态阶段(Status)
控制数据由USB系统软件用于配置设备(在枚举时),其它的驱动软件可以选择使用control transfer实现具体的功能,数据传输是不可丢失的 。
3.1.1 建立阶段主机从USB设备获取配置信息,并设置设备的配置值 。建立阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包 。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容(即:在Data Stage中IN或OUT的data包个数,及发送方向,在Setup Stage已经被设定) 。

文章插图
3.1.2 数据阶段根据数据阶段的数据传输的方向,控制传输又可分为3种类型:
- 控制读取(读取USB描述符)
- 控制写入(配置USB设备)
- 无数据控制
- 控制读取
- 控制写入

文章插图
3.1.3 状态阶段状态阶段:用来表示整个传输的过程已完全结束 。
状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段应为IN令牌封包 。
对于【控制读取】而言,主机会送出OUT令牌封包,其后再跟着0长度的DATA1封包 。而此时,设备也会做出相对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包 。
相对地对于【控制写入】传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包 。
3.2 批量传输 (Bulk Transfer)用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等 。
批量传输是可靠的传输,需要握手包来表明传输的结果 。若数据量比较大,将采用多次批量事务传输来完成全部数据的传输,传输过程中数据包的PID 按照 DATA0-DATA1-DATA0-…的方式翻转,以保证发送端和接收端的同步 。
推荐阅读
- 手机2G 3G 4G 5G 通信基站架构演进
- 5G时代,光纤容量接近极限
- 一篇文章讲述清楚SSL握手协议详细流程
- 三层交换机如何配置?如何实现不同vlan间的通信?
- 离婚协议里常见的陷阱和无效约定
- 使用手机离不开充电器,那充电器及USB接口你了解多少呢?
- 质量保证协议书模板 产品质量保证书
- 利用DNS反射绕过防火墙进行通信
- 小米推出新款22.5W充电器,支持10V私有协议,仅售39元
- 华为交换机MSTP公有生成树协议
