STM32F407无HAL库实现USB-OTG FS:枚举未收到配置描述符请求
STM32F407 USB-OTG FS枚举卡重复设备描述符请求的解决经验
问题场景
基于STM3240G-EVAL开发板(STM32F407核心),手动实现USB-OTG FS设备(不使用HAL库),已完成setup数据包接收、设备描述符发送、set_address命令处理,但枚举阶段始终收不到配置描述符请求,主机持续重复发送设备描述符请求。
排查过程
- 用
dmesg和Wireshark验证:设备描述符、地址确认零长度包已正常发送至主机,USB时钟配置无问题 - 观察到主机两次发送wLength=64的设备描述符请求,
dmesg输出设备枚举错误日志
根因定位
主机接收完设备描述符后,会发送一个零长度ACK包。若未显式配置USB外设的OUT端点(端点0)来接收这个ACK包,外设会返回NAK给主机。主机认为之前的设备描述符传输未完成,因此不断重复发起设备描述符请求,导致枚举流程停滞。
解决方案
显式配置USB-OTG FS外设的OUT端点(端点0),使其具备接收主机发送的零长度ACK包的能力,确保枚举流程能正常推进至配置描述符请求阶段。
内容的提问来源于stack exchange,提问作者Martin kala
相关产品推荐
相关产品推荐

