USB3 ClearFeature传输(ENDPOINT_HALT)
2026-06-02
本文链接为:http://www.usbzh.com/article/detail-1682.html ,欢迎转载,转载请附上本文链接。

本次是EP0控制传输(ADDR=1),标准三段式:SETUP → OUT → IN(Status),整体时序逻辑和上一组SET_FEATURE高度一致,同样出现NRDY→ERDYUSB3信用流控。
1. 事务拆解
T31:控制请求前置
CLEAR_FEATURE + wIndex=0x0081,标准USB清除端点暂停,目标端点:IN端点0x01,主机发起清除Halt。
T154【SETUP+OUT阶段】
- SETUP:
bRequest=CLEAR_FEATURE,wValue=0,wIndex=0x0081,指定清除EP1 IN的HALT状态; - OUT数据包:
02 01 00 00 81 00 00 00(8字节载荷)下发至设备EP0-OUT; - 设备ACK:OUT数据正常接收。
T155:设备ERDY上报
设备发送ERDY:IN端点缓冲区空闲就绪,通知主机可发起IN状态读取。
T156【IN状态阶段触发NRDY】(关键)
主机发起IN Status令牌,设备回复NRDY:
含义:设备固件正在处理
CLEAR_FEATURE清除端点暂停逻辑,EP0-IN暂无空闲缓存,主动流控,主机暂停IN调度。
T157:设备ERDY解除阻塞
固件处理完端点复位逻辑,释放IN缓冲,再次ERDY通知主机恢复传输。
T158:最终IN+ACK收尾
主机重新发起IN状态事务,设备返回状态数据,主机ACK,整条CLEAR_FEATURE控制传输正常结束。
2. NRDY产生原因(同EP0固有逻辑)
- 固件处理耗时:主机OUT阶段收包完毕后立刻发起IN状态查询,MCU正在执行端点1去HALT、复位端点硬件状态,EP0-IN缓存被占用无法应答,回复NRDY暂缓主机;
- xHCI主机调度过快:USB3主机流水线下发,OUT ACK未完成就排队IN令牌,设备来不及准备IN状态应答;
- NRDY+ERDY是USB3规范正常合规流控,不是错误,仅拉长单次控制传输耗时。
3. 优化消除临时NRDY方案
- 固件:收到OUT数据后置软标记,处理完CLEAR_FEATURE、释放IN FIFO后再允许应答IN;
- IP配置:增大EP0-IN硬件FIFO深度,避免命令处理占用缓存;
- 主机驱动:控制传输OUT完成后小幅延时再发起IN状态。
USB3总线分析仪传输抓包分析





