打印

GD32F450 HS设备 USB传输间隔较大

[复制链接]
1040|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hzfxs|  楼主 | 2025-5-23 10:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hzfxs 于 2025-5-23 10:49 编辑

各位坛友们:
      本人在开发GD32F450 HS接口 自定义HID设备时,发现一直发送数据给host,发送的间隔会有概率突然变大,1ms-20ms不等,正常时间隔是125us,目前我这边的HID描述符将bInterval已经配置成1。
       有哪位大神遇到过类似问题,请问有什么解决方法。

使用特权

评论回复
沙发
飞思啦| | 2025-5-23 13:41 | 只看该作者
间隔时间变大是通过usb抓包工具确认的吗?

使用特权

评论回复
板凳
dffzh| | 2025-5-23 14:24 | 只看该作者
本帖最后由 dffzh 于 2025-5-23 14:31 编辑

有概率发送周期变大,说明可能是程序跑着跑着任务调度变慢了导致的;
说不定是USB主机侧数据处理和调度延时导致的,尽管USB设备是按125us周期发送;
你用抓包工具wireshark抓USB数据包看下是不是主机没有及时发送请求令牌。
wireshark抓USB数据包的操作,看下我发的帖子:
https://bbs.21ic.com/icview-3445360-1-1.html

使用特权

评论回复
地板
hzfxs|  楼主 | 2025-5-23 14:33 | 只看该作者
飞思啦 发表于 2025-5-23 13:41
间隔时间变大是通过usb抓包工具确认的吗?

你好,我是通过BUSHOUND抓包发现间隔不对,然后在USBHS_EP1_In_IRQHandler中断函数设置了一个flag,最后发现是进入这个USBHS_EP1_In_IRQHandler函数的时间点的间隔就有长有短

使用特权

评论回复
5
hzfxs|  楼主 | 2025-5-23 14:45 | 只看该作者
dffzh 发表于 2025-5-23 14:24
有概率发送周期变大,说明可能是程序跑着跑着任务调度变慢了导致的;
说不定是USB主机侧数据处理和调度延时 ...

你好,请问用bushound这款软件可以抓到令牌包么?

使用特权

评论回复
6
dffzh| | 2025-5-23 14:54 | 只看该作者
本帖最后由 dffzh 于 2025-5-23 15:12 编辑
hzfxs 发表于 2025-5-23 14:45
你好,请问用bushound这款软件可以抓到令牌包么?

我没用过,但是应该是可以的,另外,数据传送类型,你用的是中断传输还是批量传输?

使用特权

评论回复
7
dffzh| | 2025-5-23 15:06 | 只看该作者
hzfxs 发表于 2025-5-23 14:33
你好,我是通过BUSHOUND抓包发现间隔不对,然后在USBHS_EP1_In_IRQHandler中断函数设置了一个flag,最后 ...

USB中断优先级配置的什么?

使用特权

评论回复
8
dffzh| | 2025-5-23 15:09 | 只看该作者
hzfxs 发表于 2025-5-23 14:45
你好,请问用bushound这款软件可以抓到令牌包么?

你的USB设备是不是类似于鼠标或者键盘这种输入设备,那是可以主动向USB主机发送数据的。

使用特权

评论回复
9
飞思啦| | 2025-5-23 16:24 | 只看该作者
dffzh 发表于 2025-5-23 15:09
你的USB设备是不是类似于鼠标或者键盘这种输入设备,那是可以主动向USB主机发送数据的。 ...

USB的本质是被动设备,都是通过主设备来读取数据,从设备只能准备好数据,在主设备中断时,读取数据

使用特权

评论回复
10
dffzh| | 2025-5-23 16:40 | 只看该作者
飞思啦 发表于 2025-5-23 16:24
USB的本质是被动设备,都是通过主设备来读取数据,从设备只能准备好数据,在主设备中断时,读取数据 ...
有道理,不然那么多USB设备都随意发数据到USB主机,那通信岂不乱套了。
这样看来,楼主还是排查一下USB主机这块的程序看下,可能性比较大。

使用特权

评论回复
11
hzfxs|  楼主 | 2025-5-23 17:15 | 只看该作者
dffzh 发表于 2025-5-23 16:40
有道理,不然那么多USB设备都随意发数据到USB主机,那通信岂不乱套了。
这样看来,楼主还是排查一下USB主机 ...

我这边用的是中断传输,USB中断优先级算是比较高的,我也试过把其他非USB中断关掉过试了,也是有间隔不一致的问题。

使用特权

评论回复
12
hzfxs|  楼主 | 2025-5-23 17:18 | 只看该作者
dffzh 发表于 2025-5-23 16:40
有道理,不然那么多USB设备都随意发数据到USB主机,那通信岂不乱套了。
这样看来,楼主还是排查一下USB主机 ...

刚才使用Wireshark抓取了一下数据,看起来host是有发请求,但设备确实等了挺久才响应。请问还有啥排查方向么?

数据.png (95.01 KB )

数据.png

使用特权

评论回复
13
goyhuan| | 2025-5-24 11:41 | 只看该作者
好贴,请问哪个抓包软件更先进?

使用特权

评论回复
14
zhouyong77| | 2025-5-25 11:15 | 只看该作者
数据发送逻辑导致的

使用特权

评论回复
15
hzfxs|  楼主 | 2025-5-26 09:23 | 只看该作者
goyhuan 发表于 2025-5-24 11:41
好贴,请问哪个抓包软件更先进?

你好,我常用的是bushound,主要是日常抓数据是够用的。Wireshark看起来可以抓到更详细的过程,也是可以的

使用特权

评论回复
16
hzfxs|  楼主 | 2025-5-26 09:24 | 只看该作者
zhouyong77 发表于 2025-5-25 11:15
数据发送逻辑导致的

你好,请问方便说明一下哪方面逻辑有异常么?谢谢。

使用特权

评论回复
17
dffzh| | 2025-5-26 09:26 | 只看该作者
本帖最后由 dffzh 于 2025-5-26 09:30 编辑
hzfxs 发表于 2025-5-23 17:18
刚才使用Wireshark抓取了一下数据,看起来host是有发请求,但设备确实等了挺久才响应。请问还有啥排查方 ...

因为是时间问题,所以就测试一些与时间相关的问题;
可以从HID设备接收主机发来的请求开始排查呗,比如从收到请求到发出数据这期间,程序做了什么导致时间变长?反正就是HID设备的接收,处理到发送这块,你看下,测试一下相关时间。

使用特权

评论回复
18
tpgf| | 2025-5-26 12:15 | 只看该作者
如果中断优先级设置不当,可能导致USB任务被其他高优先级任务抢占导致数据发送延迟。建议检查并优化中断优先级配置,确保USB中断优先级足够高,

使用特权

评论回复
19
hzfxs|  楼主 | 2025-5-27 11:07 | 只看该作者
tpgf 发表于 2025-5-26 12:15
如果中断优先级设置不当,可能导致USB任务被其他高优先级任务抢占导致数据发送延迟。建议检查并优化中断优 ...

你好,目前优先级已经调整至最高优先级了,依旧还有问题

使用特权

评论回复
20
hzfxs|  楼主 | 2025-5-27 11:22 | 只看该作者
dffzh 发表于 2025-5-26 09:26
因为是时间问题,所以就测试一些与时间相关的问题;
可以从HID设备接收主机发来的请求开始排查呗,比如从 ...

你好,我是这么确认的,我这边的USB帧中断(每125us左右出现一次)是一直可以看到的,但是发送USB数据后的完成中断会存在延误,这期间我把USB中断已经调至最高级,并关闭了其他中断,且USB帧中断的优先级是比发送数据的完成中断优先级低的,但是不会卡主,只有发送数据的完成中断会看到延误现象

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝