环球滚动:深入理解USB通信协议(详解)
一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。
USB总线上的情形是怎样的?
包是 USB 总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。
(资料图)
USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP);包的基本格式如下图:
2.1 PID类型(即包类型)
2.2 Token Packets
2.3 Start-of-Frame(SOF) Packets
2.4 Data Packets
2.5 Handshake Packets
一个token packet
可选的data pcket
可选的handshake packet
可选的special packet
3.1 输入(IN)事务处理
3.2. 输出(OUT)事务处理
3.3 设置(SETUP)事务处理
控制传输 (Control Transfer)
中断传输 (Interrupt Transfer)
批量传输 (Bulk Transfer)
同步传输 (Isochronous)
4.1 控制传输 (Control Transfer)
建立阶段(Setup)
数据阶段(无数据控制没有此阶段)(DATA)
状态阶段(Status)
4.1.1 建立阶段
4.1.2 数据阶段
控制读取(读取USB描述符)
控制写入(配置USB设备)
无数据控制
最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。
4.1.3 状态阶段
4.2 批量传输 (Bulk Transfer)
token
data
4.4 同步传输(Isochronous Transfer)
token
data
同步传输适用于必须以固定速率抵达或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦 克风、喇叭、UVC Camera等设备。实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。
原文:https://blog.csdn.net/myarrow/article/details/8484113
关注我【一起学嵌入式】,一起学习,一起成长。
觉得文章不错,点击“分享”、“赞”、“在看” 呗!
关键词: