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 が 1 ではなく 10 の場合、ダブル バッファリングされていない EP1 は 3kSps を適切にストリーミングします。
上記のシナリオは正しく見えますか? EP1 が EP2 より高速な転送を可能にするのはなぜですか? レポートの入力時間を bInterval よりも長くする必要があるのはなぜですか?