有祥云网站产品网页的制作
USB 控制传输(Control Transfer)的重传机制
1. 控制传输的事务结构
控制传输分为三个阶段,每个阶段都有自己的事务,并可能触发重传机制:
- 设置阶段(Setup Stage):主机发送 8 字节的 
Setup Packet。 - 数据阶段(Data Stage):主机或设备发送数据(可选)。
 - 状态阶段(Status Stage):主机和设备确认传输完成。
 
每个阶段基于 USB 事务(Transaction),包括以下内容:
- 令牌包(Token Packet):标识事务类型和数据方向。
 - 数据包(Data Packet):承载实际传输的数据。
 - 握手包(Handshake Packet):用于确认事务状态。
 
2. 协议细节与比特位内容
令牌包(Token Packet)
-  
格式:
SYNC (8 bits) | PID (8 bits) | ADDR (7 bits) | ENDP (4 bits) | CRC5 (5 bits) | EOP- SYNC (8 bits):同步字段,用于设备锁相。
 - PID (8 bits):标识包类型,如 
SETUP(0x2D)和OUT(0xE1)。 - ADDR (7 bits):设备地址,指定目标设备。
 - ENDP (4 bits):端点号,标识目标端点。
 - CRC5 (5 bits):校验令牌包内容的循环冗余校验码。
 - EOP:包结束标志。
 
 -  
重传机制:
- 如果设备未接收到完整或正确的令牌包,它会忽略事务,主机在超时后重发。
 
 
数据包(Data Packet)
-  
格式:
SYNC (8 bits) | PID (8 bits) | DATA (0-1024 bytes) | CRC16 (16 bits) | EOP- SYNC (8 bits):同步字段。
 - PID (8 bits):
DATA0(0xC3)或DATA1(0x4B)表示数据包序号。 - DATA (0-1024 bytes):实际数据,长度由事务决定。
 - CRC16 (16 bits):校验数据包的完整性。
 
 -  
重传机制:
- 如果设备收到数据包但校验失败(CRC16 错误),设备会发送 NAK(0x5A) 或不响应。
 - 主机会根据 NAK 信号进行重传。
 - 数据切换位(Data Toggle):用于标识数据包的序号(
DATA0或DATA1),主机和设备通过序号同步避免重复数据。 
 
握手包(Handshake Packet)
-  
格式:
SYNC (8 bits) | PID (8 bits) | EOP- SYNC (8 bits):同步字段。
 - PID (8 bits): 
ACK (0xD2):设备正确接收数据。NAK (0x5A):设备暂时无法接收数据。STALL (0x1E):设备无法处理请求。
 
 -  
重传机制:
- 如果主机未收到 
ACK,或者收到NAK/STALL,它会触发重试逻辑。 - 重传次数由主机控制器实现,通常重试 3 次后报错。
 
 - 如果主机未收到 
 
3. 重传逻辑触发点
以下情况可能触发控制传输的重传:
-  
令牌包丢失或损坏:
- 如果设备未检测到完整的令牌包,则不响应,主机会超时后重传。
 
 -  
数据包丢失或损坏:
- 如果设备检测到 
CRC16错误,发送NAK,主机会重传。 - 如果数据序号不匹配(
DATA0或DATA1),设备会忽略,主机重新发送。 
 - 如果设备检测到 
 -  
握手包丢失:
- 如果主机未收到 
ACK,会重新发送数据包。 
 - 如果主机未收到 
 
4. 示例流程:控制传输中的重传
假设主机与设备进行以下控制传输:
-  
主机发送
Setup Packet:- 主机发送令牌包和 
DATA0,设备校验后发送ACK。 - 如果设备未发送 
ACK,主机会重传。 
 - 主机发送令牌包和 
 -  
主机发送数据(数据阶段):
- 主机发送 
DATA1包。 - 设备检测 
CRC16错误,返回NAK。 - 主机重发数据,直到收到 
ACK。 
 - 主机发送 
 -  
状态阶段:
- 主机发送 
IN令牌包,设备返回ACK确认完成。 - 如果主机未收到 
ACK,会重传。 
 - 主机发送 
 
5. 比特位重传的关键技术
- PID 检测:通过 PID 校验机制,设备和主机能检测包类型和有效性。
 - CRC 校验:对令牌包和数据包进行错误检测。
 - NAK 反馈:设备未准备好时,返回 
NAK请求重传。 - 超时机制:主机设定超时时间,未收到响应会重发。
 
通过上述比特位级别的校验和反馈机制,USB 控制传输实现了可靠的重传逻辑,有效保证数据完整性和可靠性。
