三尺秋水 发表于 2024-3-15 23:17:11

stm32f407 开启两路(FS和HS) Custom HID,与上位机通信偶尔中断

最近在stm32f407上使用两路custom hid(FS和HS)与上位机通信,遇到两个棘手的问题:

1、在主程序中通过FS和HS周期给上位机发送数据,打开测试软件接收HS这一路数据,此时热插拔几次FS这一路线缆,可能会导致HS这一路数据中断。重新插入FS线缆,HS数据恢复。

2、插入FS和HS线缆,stm32f407一直保持上电,上位机多次重启,可能会出现上位机接收不到HS这一路数据。

这两个问题困扰我很久,包括网上搜索资料,请教同事,都没找到答案。

测试发现问题1时,HS一直是USB_BUSY状态无法恢复。我试着通过清发送缓冲区、清断点状态、延长发送时间,都无法解决这个问题。

以下是我的配置和部分代码:

(1)、MX配置界面:

!(data/attachment/forum/202403/15/231158tuwgbh4pgduq4ehc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "5b963315de8a3aef9e928021f099e9c.png")

!(data/attachment/forum/202403/15/231214fzg24v22xxxsfw2e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "eb7b547bc5196196b9cca98e801d710.png")

中断配置为默认配置。

(2)、程序配置代码:

报告描述符:

!(data/attachment/forum/202403/15/231321rvbljxg5alx5btxs.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "181ede212569a36cf56bf08cde868d6.png")

宏定义长度:

!(data/attachment/forum/202403/15/231353cy776vy6sr6jo6o3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "821decc84a16b57a63f9bec16f1e61a.png")

!(data/attachment/forum/202403/15/231408ss2v26jc6v6ogsjs.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "e2be49035657a69569e065dde32c7b5.png")

主程序代码:

!(data/attachment/forum/202403/15/231434s6fbvktdt4jgwjkv.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "fbf78301c6e1988844ce2569a293145.png")

异常处理代码:

!(data/attachment/forum/202403/15/231510yvg5jt54jeu5jplg.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "25aeaa2f80605a1b918ee71417e5e83.png")

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

butterflyspring 发表于 2024-3-20 12:17:07

1. Class data 是不是共用了一个 ? 应该分开用

2. USBD_DEBUG_LEVEL2   通过串口打印出USB 信息来进一步分析。
页: [1]
查看完整版本: stm32f407 开启两路(FS和HS) Custom HID,与上位机通信偶尔中断