如何发送超过 64 字节的 HID 数据包?

问题描述

在研究当前项目的 HID 规范时,我偶然发现了以下短语:

使用 USB 术语,设备可以在每个 USB 帧(1 毫秒)发送或接收一个事务。一个事务可能由多个数据包(令牌、数据、握手)组成,但大小限制为低速设备为 8 字节,高速设备为 64 字节。

这让我相信 HID 数据包的最大大小是 64 字节。

但是,检查其他一些设备的报告描述符时,我发现使用了超过 500 字节的数据包。这怎么可能?这些设备是否违反了 USB 规范?如果是这样,这在跨平台兼容性方面意味着什么?

解决方法

据我所知,最新的 HID 规范比最近的 USB 规范要旧得多; IIRC 最新版本是 1.11,可以追溯到 2001 年。

现在有 low-speedfull-speedhigh-speed USB,我认为 HID 规范从未改变以反映这一点。

high-speed 的最大数据包大小为 控制传输 64 字节,中断传输同步传输 为 1024 字节,和 512 字节用于批量传输。请参阅 USB in a NutShell,我认为它是最新的。当然还有其他来源。

我不完全确定这些天是否也适用于 HID 设备,HID 规范没有改变,但我认为现在存在使用较大数据包的高速 HID 设备,如较新的 USB 规范中所述.