STM32
直播中

丁冬芹

7年用户 1304经验值
私信 关注
[问答]

在stm32f407上使用两路custom hid(FS和HS)与上位机通信,遇到的两个疑问求解

最近在STM32f407上使用两路custom hid(FS和HS)与上位机通信,遇到两个棘手的问题:
1、在主程序中通过FS和HS周期给上位机发送数据,打开测试软件接收HS这一路数据,此时热插拔几次FS这一路线缆,可能会导致HS这一路数据中断。重新插入FS线缆,HS数据恢复。
2、插入FS和HS线缆,stm32f407一直保持上电,上位机多次重启,可能会出现上位机接收不到HS这一路数据。
这两个问题困扰我很久,包括网上搜索资料,请教同事,都没找到答案。
测试发现问题1时,HS一直是USB_BUSY状态无法恢复。我试着通过清发送缓冲区、清断点状态、延长发送时间,都无法解决这个问题。
以下是我的配置和部分代码:
(1)、MX配置界面:


中断配置为默认配置。
(2)、程序配置代码:
报告描述符:

宏定义长度:


主程序代码:

异常处理代码:

请大家帮忙看下,是什么原因导致出现这种问题,帮忙解答一下。感激不尽。



回帖(1)

艾玛

2024-5-21 17:21:28
针对您在STM32F407上使用两路Custom HID(FS和HS)与上位机通信时遇到的两个问题,我为您提供以下解决方案:

问题1:热插拔FS线缆可能导致HS数据中断

1. 确保FS和HS线路的电源管理正确设置。在热插拔FS线缆时,可能会影响HS线路的电源供应。检查电源管理配置,确保在热插拔过程中,HS线路的电源供应不会受到影响。

2. 在FS线路热插拔时,可能会影响到HS线路的USB中断。在FS线路热插拔后,尝试重新初始化HS线路的USB中断。

3. 在FS线路热插拔后,检查HS线路的USB状态。如果发现HS线路处于USB_BUSY状态,尝试通过软件重置HS线路的USB设备,以恢复正常通信。

问题2:上位机多次重启可能导致接收不到HS数据

1. 确保STM32F407的USB设备驱动程序在上位机上正确安装。如果驱动程序出现问题,可能会导致上位机无法正确识别和通信。

2. 在上位机重启后,尝试重新初始化HS线路的USB设备。这可以通过发送一个重置信号或重新初始化USB设备来实现。

3. 检查上位机的USB端口。如果上位机的USB端口存在问题,可能会导致通信中断。尝试更换USB端口,或者使用USB集线器来扩展USB端口。

4. 在STM32F407上实现一个心跳机制,定期发送数据包以保持与上位机的连接。这样,在上位机重启后,STM32F407可以主动重新建立连接。

5. 检查STM32F407的USB通信缓冲区。确保缓冲区足够大,以避免在上位机重启时数据丢失。

6. 如果问题仍然存在,可以尝试使用USB协议分析器来诊断问题。这可以帮助您找到导致通信中断的根本原因。

总之,针对这两个问题,您需要从硬件和软件两个方面进行排查和解决。希望这些建议能对您有所帮助。
举报
×
20
完善资料,
赚取积分