Usb 不同端点上的HID传输比较

Usb 不同端点上的HID传输比较,usb,hid,adc,Usb,Hid,Adc,我正在使用配置为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个样本

我正在使用配置为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流正确地为3ksp

上述情景看起来正确吗?为什么EP1允许比EP2更快的传输?为什么报告填写时间需要比bInterval长

似乎用样本填充报告的时间必须比bInterval长

正确:HID使用中断类型终结点,它们可以每间隔毫秒传输一个报告。这允许您以每秒64字节*1000 Hz=64000字节的速度计算最大数据速率。 一个样本中有2个字节,这将导致32kHz的最大采样率

为什么EP1允许比EP2更快的传输

除了编程错误之外,我看不出这种行为的原因

注意:HID协议对于流数据来说是一个糟糕的选择。批量类型端点允许更高的数据吞吐量

似乎用样本填充报告的时间必须比bInterval长

正确:HID使用中断类型终结点,它们可以每间隔毫秒传输一个报告。这允许您以每秒64字节*1000 Hz=64000字节的速度计算最大数据速率。 一个样本中有2个字节,这将导致32kHz的最大采样率

为什么EP1允许比EP2更快的传输

除了编程错误之外,我看不出这种行为的原因

注意:HID协议对于流数据来说是一个糟糕的选择。批量类型端点允许更高的数据吞吐量