我使用配置为HID的SiLabs C8051F320将ADC数据(在64B或32B报告中)流到PC上。我的HID基于SiLabs示例代码,使用bInterval =1,并尝试端点1 (EP1)和端点2 (EP2)。
根据C8051F320的数据表,当端点处于拆分模式时,当不进行双缓冲时,EP1为64B,EP2为128 B。当没有双缓冲时,我的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.5 does ADC数据(我没有检查最大采样率是多少) 4)双缓冲EP2 (每个报表64B)双缓冲EP2数据(每个报表64B)例如,如果bInterval是10而不是1,那么非双缓冲的EP1流3kSp是正确的。
上面的场景看起来正确吗?为什么EP1允许比EP2更快的传输?为什么报告填写时间需要比bInterval长?
发布于 2013-03-01 18:32:32
似乎用样本填写报告的时间必须比bInterval长。
正确: HID使用中断类型端点,它们可以在每个bInterval ms中传输一个报表。这允许您在每秒内计算64 Byte * 1000 Hz = 64000 Bytes的最大数据速率。当样本中有2位字节时,这将导致32 this的最大采样率。
为什么EP1允许比EP2更快的传输?
除了编程错误之外,我看不出这种行为的原因。
注意: HID协议是流数据的糟糕选择。大容量类型端点允许更高的数据吞吐量。
https://stackoverflow.com/questions/15070453
复制相似问题