调试USB CDC时偶发掉线,感觉像时钟同步没跟上
最近在用F411做CDC虚拟串口,偶尔在传输数据时就掉线,PC端直接提示设备断开。感觉像是某个中断没及时响应,也可能是PLL没锁住。我试过调低系统时钟,掉线频率确实降低了,但不彻底。有没有人碰到过类似的情况?之前我用F405也遇过,最后在驱动里加了reconnect逻辑才稳。 我之前遇到过,结果是USB供电电流不稳,换根线就好了。 试过加一点传输延时吗?有时候主机端太快会丢包。 F4系列的PLL确实挺挑的,可以看看是否启用了HSE Bypass。 我感觉是电磁干扰,USB线太长或者布线不规范也会掉。 你检查一下VDDUSB那脚有没有稳压好,有一次我就是因为没滤波。 是不是用了FreeRTOS?有时候任务切换卡一下USB就断。 建议开一下USB中断的log看看,是不是有error flag。 掉线时灯闪烁情况能帮忙判断,尤其是OTG_FS_VBUS检测。 我觉得可能是时钟源问题,HSE晶振稳定性要查一下。 用示波器检查外部晶振的输出波形幅值是否稳定且有无谐波干扰。 若使用内部HSI时钟,需通过软件校准,但建议优先使用外部晶振。 检查VCO输出频率是否在100-432MHz范围内,避免超出锁相范围。 在PLL供电引脚附近添加10μF钽电容+0.1μF陶瓷电容组合,抑制电源噪声。 试试用LDO替代开关电源,降低纹波至<50mV。 精简中断服务函数,在USB中断中避免复杂操作,仅处理必要标志位和缓冲区切换。 切换至内部时钟测试,若掉线问题消失,那就是外部晶振或PLL配置问题。
页:
[1]