如何发送超过 64 字节的 HID 数据包?
How is it possible to send HID packets longer than 64 bytes?
在研究当前项目的 HID 规范时,我偶然发现了以下短语:
Using USB terminology, a device may send or receive a transaction every USB frame (1 millisecond). A transaction may be made up of multiple packets (token, data, handshake) but is limited in size to 8 bytes for low-speed devices and 64 bytes for high-speed devices.
这让我相信 HID 数据包的最大大小为 64 字节。
但是,在检查其他一些设备的报告描述符时,我发现正在使用超过 500 字节的数据包。这怎么可能?这些设备是否违反了 USB 规范?如果是这样,这在不同平台的兼容性方面意味着什么?
据我所知,最新的 HID 规范比最近的 USB 规范要早得多; IIRC 最新版本是 1.11,可追溯到 2001 年。
最近有 low-speed
、full-speed
和 high-speed
USB,我认为 HID 规范从未更改以反映这一点。
high-speed
的最大数据包大小对于 控制传输 是 64 字节,对于 中断传输 和 等时传输,512 字节用于批量传输。请参阅 USB in a NutShell,我认为它是最新的。当然还有其他来源。
我不完全确定这些天是否所有这些都适用于 HID 设备,HID 规范没有改变,但我假设现在存在使用更大数据包的高速 HID 设备,如更新中所述USB 规格。
在研究当前项目的 HID 规范时,我偶然发现了以下短语:
Using USB terminology, a device may send or receive a transaction every USB frame (1 millisecond). A transaction may be made up of multiple packets (token, data, handshake) but is limited in size to 8 bytes for low-speed devices and 64 bytes for high-speed devices.
这让我相信 HID 数据包的最大大小为 64 字节。
但是,在检查其他一些设备的报告描述符时,我发现正在使用超过 500 字节的数据包。这怎么可能?这些设备是否违反了 USB 规范?如果是这样,这在不同平台的兼容性方面意味着什么?
据我所知,最新的 HID 规范比最近的 USB 规范要早得多; IIRC 最新版本是 1.11,可追溯到 2001 年。
最近有 low-speed
、full-speed
和 high-speed
USB,我认为 HID 规范从未更改以反映这一点。
high-speed
的最大数据包大小对于 控制传输 是 64 字节,对于 中断传输 和 等时传输,512 字节用于批量传输。请参阅 USB in a NutShell,我认为它是最新的。当然还有其他来源。
我不完全确定这些天是否所有这些都适用于 HID 设备,HID 规范没有改变,但我假设现在存在使用更大数据包的高速 HID 设备,如更新中所述USB 规格。