USB传输类型:
1.控制传输:非周期性, 突发(用于命令和状态的传输)
2.大容量数据传输(Bulk):非周期性,突发(大容量数据的通信, 数据可以占用任意带宽, 并容忍延迟)
3.同步传输:周期性.(持续性的传输, 用于传输与时效相关的信息, 并且在数据中保存时间戳的信息)
4.中断传输:周期性, 低频率(允许有限延迟的通信)
USB传输格式:
SOP SYNC packet content EOP**
packet content格式:
PID(8bit) 地址(7+4) 帧号 数据 CRC(5bit)
packet分四大类(不同的类型包, 以上的组成部件有所不同):
命令(Token) Packet
帧首(Start of Frame) Packet
数据(Data) Packet
握手(Handshake) Packet
Packet Identifier数据包类型:
PID类型 PID名称 对应的packet种类
Token令牌 OUT/INT/SETUP/SOF 令牌包、SOF包
Data数据 DATA0/DATA1/DATA2/MDATA 数据包
Handshake ACK/NAK/STALL/NYET 握手包
Special PRE/ERR/SPLIT/PING
-
地址
1.设备地址
Addr0 ~ Addr62.端点地址
ENDP0 ~ ENDP3 (LS:最多3个端点, FS/HS设备最多16个端点) -
帧号
11位
主机每发出一个帧,帧号都会自动加1
当帧号达到7ffh时, 将归零重新开始计数
仅在每个帧的帧首传输一次SOF包. -
帧格式
SOF 同步传输 中断传输|控制传输|大容量传输
全速1ms,高速设备:125us -
数据
根据传输类型的不同,数据域的数据长度从0到1024字节不等.
control bulk interrupt isoch
hs | fs | ls hs | fs | ls hs | fs | ls hs | fs | ls
数据包长度 64 64 8 512 64 N.A 1024 64 8 1024 1023 N.A
- CRC
–>Token CRC
计算地址域和帧号域的CRC
G(X) = X(5幂) + X(2幂) + 1
–>DATA CRC
计算数据域数据的CRC
G(X) = X(16幂) + X(15幂)+ X(2幂) + 1
Token类型:
(PID(8bit) + 地址(7+4bit) + CRC(5bit))
以下三种PID可选
>>IN
>>OUT
>>SETUP
eg.
SYNC SETUP ADDR|ENDP CRC5 EOP
00000001 0xB4 3 0 0x0A 250.000ns
(PID(8bit) + 帧号 + CRC(5bit))
SOF包, LS/FS每1MS一个帧.HS每125us一个帧.
eg.
SYNC SOF FRAME# CRC5 EOP
00000001 0xA5 1611 0x11 250.000ns
DATA Paket类型:
(PID(8bit) + 数据(0~1024 bit) + CRC(16bit))
>>DATA0
>>DATA1
>>DATA2
>>DATAM
eg.
SYNC DATA0 Data CRC16 EOP
00000001 0xA5 80 06 00 01 00 00 12 00 0x072f 250.000ns
Handshake Packet
(PID(8bit))
>>ACK:传输正确完成
>>NAK:设备暂时没有准备好接收数据, 或没有准备好发送数据
>>STALL:设备不能进行传输
>>NYET/ERR:仅用高速传输,设备没有准备好或出错
eg.
SYNC ACK EOP
00000001 0x4B 233.330ns