我正在使用配置为 HID 的 SiLabs C8051F320 将 ADC 数据(在 64B 或 32B 报告中)流式传输到 PC。我将我的 HID 基于 SiLabs 示例代码,其中 bInterval = 1 并尝试使用端点 1 (EP1) 与端点 2 (EP2)。
根据 C8051F320 的数据表,当端点处于拆分模式时,EP1 为 64B,EP2 为 128B,而不是双缓冲。没有双缓冲时,我的 EP1 为 64B,双缓冲时为 32B。无论是否双缓冲,EP2 都是 64B。ADC 数据为每个样本 2 个字节,因此每个报告传输 64B 报告中的 31 个样本和 32B 报告中的 15 个样本。
1) 非双缓冲 EP1(每份报告 64B)正确传输 22.5kSps ADC 数据 2) 双缓冲 EP1(每份报告 32B)正确传输 11.5kSps ADC 数据 3) 非双缓冲 EP2(每份报告 64B)可以不能正确流式传输 22.5kSps ADC 数据(我没有检查最大采样率是多少) 4)双缓冲 EP2(每个报告 64B)正确采样 22.5kSps ADC 数据 5)似乎用样本填充报告的时间必须比 bInterval 长。例如,如果 bInterval 是 10 而不是 1,则非双缓冲 EP1 可以正确传输 3kSps。
上面的场景看起来对吗?为什么 EP1 允许比 EP2 更快的传输?为什么报告填充时间需要比 bInterval 长?