打印
[STM32L0]

USB HID传输间隔太大是哪里限制的?

[复制链接]
310|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2025-5-4 07:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用默认配置做键盘模拟,感觉按键延迟明显,是不是上位机限速?

使用特权

评论回复
沙发
Clyde011| | 2025-5-4 07:20 | 只看该作者
你有没有调过Endpoint大小?

使用特权

评论回复
板凳
公羊子丹| | 2025-5-4 07:20 | 只看该作者
HID默认就是慢,Interval值固定。

使用特权

评论回复
地板
周半梅| | 2025-5-4 07:21 | 只看该作者
Win系统默认会限速传输,没办法。

使用特权

评论回复
5
帛灿灿| | 2025-5-4 07:22 | 只看该作者
是不是用了低速模式?

使用特权

评论回复
6
童雨竹| | 2025-5-4 07:23 | 只看该作者
描述符里设置的polling interval看看。

使用特权

评论回复
7
万图| | 2025-5-4 07:24 | 只看该作者
建议用自定义HID协议会快点。

使用特权

评论回复
8
Wordsworth|  楼主 | 2025-5-4 07:25 | 只看该作者
实测1ms周期也常常有抖动。

使用特权

评论回复
9
Bblythe| | 2025-5-4 07:26 | 只看该作者
USB总线空闲时延迟会低些。

使用特权

评论回复
10
Pulitzer| | 2025-5-4 07:26 | 只看该作者
L072核心速度不高,响应慢。

使用特权

评论回复
11
Uriah| | 2025-5-4 07:27 | 只看该作者
用logic analyzer看传输间隔最清楚。

使用特权

评论回复
12
暖了夏天蓝了海| | 2025-5-14 14:55 | 只看该作者
主机轮询机制,HID设备采用主机轮询方式通信,主机按固定间隔查询设备,此间隔由HID类规范及主机驱动决定,设备无法主动调整。

使用特权

评论回复
13
别乱了阵脚| | 2025-5-14 15:30 | 只看该作者
HID协议对传输间隔有默认限制,如HID报告间隔通常为1ms至几十ms,具体间隔由主机端HID驱动设置,设备端仅能响应查询

使用特权

评论回复
14
夜阑风雨| | 2025-5-14 16:00 | 只看该作者
USB描述符中,端点描述符的bInterval字段定义了中断端点的轮询间隔,该值影响主机查询频率。例如,bInterval设为10ms时,主机每10ms查询一次设备

使用特权

评论回复
15
淡漠安然| | 2025-5-14 17:00 | 只看该作者
最大包长度限制,HID设备单包最大传输64字节,若需传输大数据量,需分多包传输,间接影响传输效率,但不会直接导致间隔增大。

使用特权

评论回复
16
光辉梦境| | 2025-5-14 18:10 | 只看该作者
STM32L0作为低功耗MCU,若处理HID中断或数据拷贝耗时过长,可能无法及时响应主机查询,导致主机端感知的传输间隔增大

使用特权

评论回复
17
三生万物| | 2025-5-14 19:00 | 只看该作者
USB模块的中断优先级、缓冲区配置及双缓冲机制均可能影响传输效率。例如,未启用双缓冲时,数据处理不及时会导致主机重试,增加延迟。

使用特权

评论回复
18
冰春彩落下| | 2025-5-14 20:30 | 只看该作者
保端点描述符中wMaxPacketSize设为64字节(HID最大值),避免因包大小不足导致多次传输。

使用特权

评论回复
19
远山寻你| | 2025-5-14 20:57 | 只看该作者
启用双缓冲机制,通过交替使用两个缓冲区,确保USB模块与CPU可并行处理数据,减少数据拷贝时间对传输的影响

使用特权

评论回复
20
暖了夏天蓝了海| | 2025-5-14 22:48 | 只看该作者
修改bInterval值以缩短轮询间隔(需符合HID规范及主机兼容性)。例如,将bInterval设为1ms可提升响应速度,但可能增加CPU负载

使用特权

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

本版积分规则

79

主题

4816

帖子

1

粉丝