ST意法半导体
直播中

万航渡路

9年用户 1409经验值
擅长:电源/新能源
私信 关注
[问答]

STM32H743+USB3300传输采集的数据前几次会丢包怎么解决?

使用STM32H743+USB3300来传输采集的ADC数据,裸机,多通道实时采集传输,一包数据大小是120KB,问题就是每次上电,接收到指令后传输都会丢失数据,多传输几次才会正常,正常后就是稳定的,丢包只会出现在USB断开重连后,要多发几次才会不丢包,有知道的佬吗。使用官方的USB库移植,和Cubemx配置也一样有此问题。使用的是CDC虚拟串口的USB高速HS模式,在其他论坛也有遇到同样问题的,如下图:

回帖(1)

丁冬芹

2025-3-11 17:14:30

在使用STM32H743 + USB3300进行高速数据传输时,尤其是通过USB CDC虚拟串口传输大块数据(如120KB)时,可能会遇到上电或重连后丢包的问题。这种现象通常与USB初始化、缓冲区管理、时序或硬件配置有关。以下是一些可能的解决方案和调试建议:




1. 检查USB初始化时序



  • 问题原因:USB初始化可能未完全完成,导致前几次传输时USB协议栈未准备好。

  • 解决方案

    • 确保在USB初始化完成后(如HAL_PCD_Start())等待足够的时间再进行数据传输。

    • 使用CDC_Transmit_FS()发送数据前,检查USB连接状态(如USBD_CDC_HandleTypeDef中的state字段)。





2. 优化缓冲区管理



  • 问题原因:USB传输缓冲区可能未正确配置或管理,导致数据丢失。

  • 解决方案

    • 确保USB缓冲区大小足够大,以容纳120KB的数据包。

    • 使用双缓冲区或环形缓冲区来管理数据,确保在USB传输完成前不会覆盖数据。

    • 检查CDC_Transmit_FS()的返回值,确保数据已成功发送。





3. 调整USB传输速率



  • 问题原因:USB传输速率可能过高,导致前几次传输时协议栈未完全同步。

  • 解决方案

    • 在初始化后,先发送少量数据(如1KB)进行“热身”,然后再发送大块数据。

    • 使用HAL_Delay()在每次传输之间增加少量延时,确保USB协议栈有足够时间处理。





4. 检查硬件配置



  • 问题原因:USB3300的硬件配置可能存在问题,导致前几次传输不稳定。

  • 解决方案

    • 检查USB3300的电源和复位引脚,确保上电和复位时序正确。

    • 检查USB3300的时钟信号(如24MHz),确保稳定且无抖动。

    • 确保USB3300的PHY配置寄存器已正确初始化。





5. 调试USB协议栈



  • 问题原因:USB协议栈可能存在初始化或状态管理问题。

  • 解决方案

    • 使用调试工具(如Wireshark或USB分析仪)捕获USB通信数据,分析前几次传输失败的原因。

    • 检查USBD_CDC_HandleTypeDef中的状态标志,确保USB连接已建立且处于正确状态。





6. 更新固件和库



  • 问题原因:使用的STM32 HAL库或USB库可能存在已知问题。

  • 解决方案

    • 更新STM32CubeMX和HAL库到最新版本。

    • 检查ST官方是否有相关问题的修复补丁或应用笔记。





7. 测试其他USB模式



  • 问题原因:CDC虚拟串口模式可能不适合大块数据传输。

  • 解决方案

    • 尝试使用其他USB类(如MSC或自定义类)进行数据传输。

    • 如果条件允许,测试USB批量传输模式(Bulk Transfer),它更适合大块数据传输。





8. 添加重试机制



  • 问题原因:前几次传输失败可能是由于硬件或协议栈未完全准备好。

  • 解决方案

    • 在代码中添加重试机制,如果传输失败,则重新发送数据。

    • 例如,检查CDC_Transmit_FS()的返回值,如果失败则延时后重试。





9. 参考社区解决方案



  • 你提到在其他论坛也看到类似问题,可以尝试参考社区中的解决方案。例如:

    • 检查USB PHY的复位和初始化时序。

    • 调整USB中断优先级,确保USB中断能够及时处理。





10. 总结


通过以上方法,可以逐步排查和解决STM32H743 + USB3300在USB重连后丢包的问题。建议从USB初始化时序、缓冲区管理和硬件配置入手,结合调试工具分析具体原因。如果问题依然存在,可以联系ST官方技术支持或在社区中寻求帮助。


希望这些建议对你有所帮助!

举报

更多回帖

发帖
×
20
完善资料,
赚取积分