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

[复制链接]
 楼主| 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系统默认会限速传输,没办法。
帛灿灿 发表于 2025-5-4 07:22 | 显示全部楼层
是不是用了低速模式?
童雨竹 发表于 2025-5-4 07:23 | 显示全部楼层
描述符里设置的polling interval看看。
万图 发表于 2025-5-4 07:24 | 显示全部楼层
建议用自定义HID协议会快点。
 楼主| Wordsworth 发表于 2025-5-4 07:25 | 显示全部楼层
实测1ms周期也常常有抖动。
Bblythe 发表于 2025-5-4 07:26 | 显示全部楼层
USB总线空闲时延迟会低些。
Pulitzer 发表于 2025-5-4 07:26 | 显示全部楼层
L072核心速度不高,响应慢。
Uriah 发表于 2025-5-4 07:27 | 显示全部楼层
用logic analyzer看传输间隔最清楚。
暖了夏天蓝了海 发表于 2025-5-14 14:55 | 显示全部楼层
主机轮询机制,HID设备采用主机轮询方式通信,主机按固定间隔查询设备,此间隔由HID类规范及主机驱动决定,设备无法主动调整。

别乱了阵脚 发表于 2025-5-14 15:30 | 显示全部楼层
HID协议对传输间隔有默认限制,如HID报告间隔通常为1ms至几十ms,具体间隔由主机端HID驱动设置,设备端仅能响应查询

夜阑风雨 发表于 2025-5-14 16:00 | 显示全部楼层
USB描述符中,端点描述符的bInterval字段定义了中断端点的轮询间隔,该值影响主机查询频率。例如,bInterval设为10ms时,主机每10ms查询一次设备

淡漠安然 发表于 2025-5-14 17:00 | 显示全部楼层
最大包长度限制,HID设备单包最大传输64字节,若需传输大数据量,需分多包传输,间接影响传输效率,但不会直接导致间隔增大。

光辉梦境 发表于 2025-5-14 18:10 | 显示全部楼层
STM32L0作为低功耗MCU,若处理HID中断或数据拷贝耗时过长,可能无法及时响应主机查询,导致主机端感知的传输间隔增大

三生万物 发表于 2025-5-14 19:00 | 显示全部楼层
USB模块的中断优先级、缓冲区配置及双缓冲机制均可能影响传输效率。例如,未启用双缓冲时,数据处理不及时会导致主机重试,增加延迟。

冰春彩落下 发表于 2025-5-14 20:30 | 显示全部楼层
保端点描述符中wMaxPacketSize设为64字节(HID最大值),避免因包大小不足导致多次传输。

远山寻你 发表于 2025-5-14 20:57 | 显示全部楼层
启用双缓冲机制,通过交替使用两个缓冲区,确保USB模块与CPU可并行处理数据,减少数据拷贝时间对传输的影响

暖了夏天蓝了海 发表于 2025-5-14 22:48 | 显示全部楼层
修改bInterval值以缩短轮询间隔(需符合HID规范及主机兼容性)。例如,将bInterval设为1ms可提升响应速度,但可能增加CPU负载

您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

5753

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部