[STM32F4] STM32F429用作 USB 主机经全速集线器接入低速设备时枚举失败

[复制链接]
98|22
spicy 发表于 2026-9-4 15:25 | 显示全部楼层
低速设备枚举成功的那50%场景,是否跟插入顺序有关?比如先插全速设备再插低速,或者反过来,这会影响集线器端口速度协商的初始状态。
stormwind123 发表于 2026-9-4 17:12 | 显示全部楼层
STM32F429 的OHCI或EHCI内核?F4系列用的是内置FS OTG核,不是标准OHCI,它的硬件对低速事务的支持本就有限,你可能需要检查硬件端的前导使能寄存器是否在每个事务前都被重写。
七毛钱 发表于 2026-9-4 18:39 | 显示全部楼层
建议你在枚举失败的卡死点抓取USB总线信号,对比成功和失败两次的帧间隔、令牌包和响应时间,大概率会发现低速设备的NAK响应没有被主机正确重试。
今天会画卧蚕吗 发表于 2026-9-4 20:50 | 显示全部楼层
你的集线器驱动可能只处理了端口连接和复位事件,但没有处理端口启用失败或速度协商错误的状态码,这些状态在低速设备接入时更容易触发。
又见江南雨 发表于 2026-9-4 22:21 | 显示全部楼层
低速设备的枚举超时时间应该比全速设备更长,因为低速设备响应更慢,如果你沿用全速的100ms超时,50%的设备刚好超出就失败,另50%勉强来得及。
在海边聆听 发表于 2026-9-5 12:11 | 显示全部楼层
既然通信成功后完全正常,说明物理层和协议解析没问题,问题极大概率集中在枚举初期的主机端事务调度器,它在低速设备还未分配地址前没有正确降速,建议优先检查事务预处理函数。
才没有脸红 发表于 2026-9-5 13:20 | 显示全部楼层
你加了PREamblePID只是满足了低速设备通信的电平要求,但全速集线器在处理低速前导包时有时序抖动,这个抖动会直接导致枚举阶段的事务分裂失败。
故里说长安 发表于 2026-9-5 14:58 | 显示全部楼层
枚举失败率50%说明问题不在协议层,而在物理层或帧起始间隔的同步上,建议你用示波器抓一下集线器端口使能后的SOF波形,看是否每个帧都稳定。
没有太阳的晴天 发表于 2026-9-5 16:36 | 显示全部楼层
低速设备枚举成功后就完全正常,说明问题出在主机获取设备描述符之前的那个复位-恢复序列,很可能是你发送的复位信号宽度刚好在临界值,集线器转发时会有随机延迟。
海滨消消 发表于 2026-9-5 19:30 | 显示全部楼层
失败场景下主机卡死在枚举流程,建议打印出当前USB总线状态寄存器,大概率是等待事务完成位一直不置位,说明集线器根本没把低速设备的回应送到主机端。
甜心puppy 发表于 2026-9-5 20:53 | 显示全部楼层
你的代码里可能没有单独处理低速设备的帧间隔微调,全速设备用1ms帧,低速设备也需要1ms帧但允许的时钟偏差更小,集线器转发的SOF抖动超过0.05%就会让低速设备复位接收逻辑。
等凌晨日出 发表于 2026-9-5 21:36 | 显示全部楼层
建议检查你的集线器驱动在端口使能后是否重新初始化了该端口的微帧调度器,F429的OHCI兼容层对低速事务的调度队列长度有限,队列溢出时新事务直接被丢弃。
茉璃夏 发表于 2026-9-5 22:15 | 显示全部楼层
失败概率正好50%这个数值很可疑,可能和你的代码里某个条件判断用了随机未初始化变量有关,或者是集线器端口电源开启的软启动时间与主机枚举重试次数刚好形成拍频效应。
Henryko 发表于 2026-9-4 13:11 | 显示全部楼层
低速设备枚举失败,考虑检查HUB端口复位流程,确保使用PORT_RESET命令,而不是全局复位。同时,观察时钟精度,确保USB时钟稳定。
Bowclad 发表于 2026-9-5 12:45 | 显示全部楼层
检查你的时钟源和分频设置,确保USB时钟稳定,同时观察失败时的枚举波形,重点看PRE-PID和SET_ADDRESS包。
ClarkLLOTP 发表于 2026-9-6 14:41 | 显示全部楼层
检查USB时钟和集线器,可能时序或兼容性问题导致枚举失败。
CarterERO 发表于 2026-9-7 15:44 | 显示全部楼层
检查时钟源和时序,可能时钟精度问题导致低速设备采样出错。
EmmaTT 发表于 2026-9-8 12:49 | 显示全部楼层
检查你的时钟源和分频设置,确保USB时钟稳定,同时确认集线器端口复位命令正确执行。
MessageRing 发表于 2026-9-9 13:36 | 显示全部楼层
低速设备枚举失败,可能是PRE-PID时序问题,检查时序间隙是否满足规范。同时,考虑更换不同品牌集线器测试,排除hub兼容性问题。
ForgottenRealm 发表于 2026-9-10 14:02 | 显示全部楼层
低速设备枚举失败,可能是PRE-PID时序问题,检查时钟和hub端口复位流程。同时,考虑更换hub或增加重试机制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0