USB通讯协议¶
传输类型,事务,包的关系¶
USB的4种传输类型
- 控制传输(Control Transfer)
- 批量传输(Bulk Transfer)
- 中断传输(Interrupt Transfer)
- 同步传输(Isochronous)
每种传输都由若干个事务(Transation)组成
每个事务由一个或多个包(Packet)组成
包(Packet)¶
包(Packet)是USB系统中信息传输的基本单位,其组成如下
- 同步字段(SYNC),用来产生同步作用
- 包标识符字段(PID),表示数据分包类型
- 数据字段(可以包含ADDR, ENDP, FrameNumber, DATA)
- 循环冗余校验字段(CRC)
- 包结尾字段(EOP)
|SYNC|PID|DATA|CRC |–|–|–|– |8bit:FS/LS,32bit:HS||ADDR,ENDP,FrameNumber,Data|
包(Packet)类型¶
根据PID的不同,可以将包分为
- 令牌(Token)
- 数据(Data)
- 握手(Handshake)
- 特殊(Special)
重要的包类型如下
SOF Packets¶
SOF包由Host发送给Device
- 对于full-speed(FS)总线,每隔1.00 ms±0.0005ms发送一次
- 对于high-speed(HS)总线,每隔125 μs±0.0625μs发送一次
|Field|PID|FrameNumber|CRC5| |–|–|–|– |Bits|8|11|5|
Data Packets¶
|Filed|PID|DATA|CRC16| |–|–|–|– |Bits|8|0-8192|16|
数据包类型有4种(DATA0,DATA1,DATA2,MDATA),由PID来区分
事务(Transation)¶
在USB上数据信息的一次接收或发送的处理过程称为事务处理
一个事务由一系列的Packets组成
- 一个token packet
- 可选的data pcket
- 可选的handshake packet
- 可选的special packet
传输类型¶
- 控制传输(Control Transfer)
- 批量传输(Bulk Transfer)
- 中断传输(Interrupt Transfer)
- 同步传输(Isochronous)
批量传输(Bulk Transfer)¶
- 用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机,存储设备等
- 批量传输是可靠的传输,需要握手包来表明传输的结果
中断传输(Interrupt Transfer)¶
- 中断传输由IN或OUT事务组成
- 中断传输在流程上除不支持PING 之外,其他的跟批量传输是一样的
- 中断传输方式总是用于对设备的查询,以确定是否有数据需要传输.因此中断传输的方向总是从USB设备到主机
同步传输(Isochronous Transfer)¶
它由两种包组成
- token
- data
同步传输不支持handshake和重传能力,所以它是不可靠传输
实时传输一般用于麦克风,喇叭,UVC Camera等设备