STM32
直播中

wufan931111

9年用户 1100经验值
擅长:370217
私信 关注
[问答]

STM320H750 USB通讯必须插拔一次才正常,为什么?

我用的是STM32H750   使用的是 USB_OTG_HS  内部FS   Device Only, Activate -VBUS 用CDC 设备 修改描述符造成普通设备
接上电脑后 Libusb 驱动安装OK
我是两个ENDPOINT   一个 收 一个发,最大64字节
我收上位机发送一个命令后,下位机上传数据
我用BusHound 调试,下发命令正常,但是一读64字节数据,就显示不正常了,但是我插拔一次USB口(板子没断电),再去读就正常了。通讯就一直很正常了,但是每次都是第一次不行,必须重新插拔一次USB才可以
请问这个是什么原因

回帖(1)

李明

2024-5-27 17:27:39
根据您提供的信息,我将尝试分析可能导致这个问题的原因,并提供一些建议。

1. 硬件问题:可能是USB接口或连接器存在问题,导致第一次连接时信号不稳定。您可以尝试更换USB线或检查USB接口是否有损坏。

2. 电源问题:STM32H750在上电后可能需要一定的时间来稳定电源。在这段时间内,USB通信可能不稳定。您可以尝试在上电后等待一段时间再进行通信。

3. 软件问题:可能是STM32H750的固件或驱动程序存在问题。您可以尝试更新固件或驱动程序,或者检查代码中是否有错误。

4. USB枚举问题:在某些情况下,操作系统可能需要重新枚举设备才能正确识别和配置USB设备。这可能是为什么重新插拔USB后通信正常的原因。您可以尝试在代码中添加一些延时,以便操作系统有足够的时间来枚举设备。

5. 描述符问题:您提到修改了描述符,这可能会导致一些问题。请确保描述符正确配置,并且与您的设备兼容。

6. 通信协议问题:请检查您的通信协议是否正确实现,包括数据包的大小、传输速率等。

为了解决这个问题,您可以尝试以下步骤:

1. 检查硬件,包括USB线和接口。
2. 检查电源稳定性。
3. 更新固件和驱动程序。
4. 在代码中添加延时,以便操作系统有足够的时间来枚举设备。
5. 检查描述符配置。
6. 检查通信协议实现。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我能更好地帮助您。
举报

更多回帖

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