Сравнение передачи HID на разных конечных точках

Я использую SiLabs C8051F320, настроенный как HID для потоковой передачи данных АЦП (в отчетах 64 или 32 байт) на ПК. Я основываю свой HID на примере кода SiLabs с bInterval = 1 и экспериментирую с конечной точкой 1 (EP1) по сравнению с конечной точкой 2 (EP2).

Согласно таблице данных C8051F320, когда конечные точки находятся в режиме разделения, EP1 равен 64B, а EP2 - 128B, когда не используется двойная буферизация. У меня EP1 как 64B без двойной буферизации и 32B при двойной буферизации. EP2 - это 64B, независимо от того, имеет ли он двойную буферизацию или нет. Данные АЦП составляют 2 байта на выборку, поэтому на один отчет передается 31 выборка в отчете размером 64 байт и 15 выборок в отчете 32 байт.

1) EP1 без двойной буферизации (64B на отчет) правильно передает данные АЦП 22,5kSps 2) EP1 с двойной буферизацией (32B на отчет) правильно передает данные ADC 11,5kSps 3) EP2 без двойной буферизации (64B на отчет) выполняет не передает данные АЦП 22,5 кГц / с должным образом (я не проверял, какая максимальная частота дискретизации) 4) EP2 с двойной буферизацией (64 байт на отчет) сэмплы 22,5 кГц данных АЦП должным образом 5) Кажется, что время для заполнения отчета с образцами должно быть длиннее, чем bInterval. Например, если bInterval было 10 вместо 1, то EP1 без двойной буферизации правильно передает потоки 3kSps.

Правильно ли выглядит приведенный выше сценарий? Почему EP1 обеспечивает более быструю передачу, чем EP2? Почему время заполнения отчета должно быть больше, чем bInterval?


person tosa    schedule 25.02.2013    source источник


Ответы (1)


Кажется, что время заполнения отчета сэмплами должно быть больше, чем bInterval.

Правильно: HID использует конечные точки типа прерывания, они могут передавать один отчет каждые bInterval мс. Это позволяет рассчитать максимальную скорость передачи данных при 64 байта * 1000 Гц = 64000 байтов в секунду. Если в выборке 2 байта, максимальная частота дискретизации составляет 32 кГц.

Почему EP1 обеспечивает более быструю передачу, чем EP2?

Я не вижу причин для такого поведения, кроме ошибки программирования.

Примечание. Протокол HID - плохой выбор для потоковой передачи данных. Конечные точки массового типа обеспечивают гораздо более высокую пропускную способность данных.

person Turbo J    schedule 01.03.2013