2013-02-25 6 views
1

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

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

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

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

ответ

1

Похоже, что время заполнения отчета образцами должно быть длиннее, чем bInterval.

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

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

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

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