Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C8051F340 SiLabs работа с USB
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Aloc
Здравствуйте,
имеется МК F340 на него с внешнего АЦП с частотой 10 кГц поступает 8 байт данных, т.е. 80 байт/мс или 80 Кбайт/с.

Необходимо передать эти данные в компьютер, с компьютера также будут поступать значения переменных (установка генерируемых частот), но не регулярно. Не знаю какой режим работы USB выбрать в этом случае.
Вроде как должен подойти режим по прерываниям, но у него минимальное время запросов 1 мс и размер пакета 64 байта(откуда такое ограничение?)
По изохронному режиму как-то мало информации и примеров реализации, но на данный момент он кажется наиболее предпочтительным.
По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?
vladec
Ранее в USBXpress работа по прерываниям не предусматривалась и весь обмен мог идти только по инициативе компа. Может конечно сейчас что то изменилось?
Onic777
Цитата(Aloc @ Oct 17 2013, 21:23) *
Здравствуйте,
имеется МК F340 на него с внешнего АЦП с частотой 10 кГц поступает 8 байт данных, т.е. 80 байт/мс или 80 Кбайт/с.

Необходимо передать эти данные в компьютер, с компьютера также будут поступать значения переменных (установка генерируемых частот), но не регулярно. Не знаю какой режим работы USB выбрать в этом случае.
Вроде как должен подойти режим по прерываниям, но у него минимальное время запросов 1 мс и размер пакета 64 байта(откуда такое ограничение?)
По изохронному режиму как-то мало информации и примеров реализации, но на данный момент он кажется наиболее предпочтительным.
По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?


Добрый день!

Конечно использовать Bulk или MSD не стоит! Не удобно это для таких задач! Эти режимы используются для передачи больших файлов или работы с внешними дисками.
Использовать Int тоже не очень удобно - канал все время занят...
Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...
Для Вашей системы лучше всего подходит режим HID, т.к. не требует драйверов и комплекс оборудования работает в режиме командно-информационной сети, в которой компьютер - Host - выдает команды, а остальные устройства выполняют команды и отвечают. Так что рекомендую поработать в этом направлении.
Konst_777
Цитата(Aloc @ Oct 17 2013, 21:23) *
...имеется МК F340...80 Кбайт/с... Не знаю какой режим работы USB выбрать в этом случае...

Bulk на Full Speed легко справится с таким потоком данных.

Цитата(Aloc @ Oct 17 2013, 21:23) *
...По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?

Если контроллер один, то к хосту будет подключено одно устройство USB с несколькими endpoint-ами. По описанию задачи - с двумя конечными точками.
Какие требования к задержкам передачи?

Цитата(Onic777 @ Oct 18 2013, 10:40) *
...Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...

Если на компьютере установлена Windows 7 или Windows 8, то следует использовать WinUSB. Тогда не нужно будет устанавливать драйвер.
How to install WinUSB.sys without a custom INF?
WinUSB example from Jan Axelson

Цитата(Onic777 @ Oct 18 2013, 10:40) *
...Для Вашей системы лучше всего подходит режим HID...

HID не обеспечит скорость обмена 80 Кбайт/с на USB Full Speed. Для него потолок 64 Кбайт/с.
Aloc
Цитата(Konst_777 @ Oct 18 2013, 17:51) *
Если контроллер один, то к хосту будет подключено одно устройство USB с несколькими endpoint-ами. По описанию задачи - с двумя конечными точками.
Какие требования к задержкам передачи?

Три отдельных платы, каждая со своим МК соответственно. Если на IN использовать endpoint 3 с максимальным размером без разделения в 512 байт, то запросы пакетов должны быть не реже, чем раз в 6 мс для каждого из двух устройств.

А ещё, не подскажите программы для отображения принимаемой информации? Сейчас использую Jungo WinDriver, в нём получаю драйвер, а также можно посмотреть, что принимается.

Цитата(vladec @ Oct 18 2013, 10:35) *
Ранее в USBXpress работа по прерываниям не предусматривалась и весь обмен мог идти только по инициативе компа. Может конечно сейчас что то изменилось?

В приведенных к МК примерах этот режим реализован в TestPanel, он, вроде как, предполагает работу по запросу от хоста, но с гарантированным временем задержки (до 1 мс в full speed), которое прописано в дескрипторе endpoint.

Цитата(Onic777 @ Oct 18 2013, 11:40) *
Добрый день!

Конечно использовать Bulk или MSD не стоит! Не удобно это для таких задач! Эти режимы используются для передачи больших файлов или работы с внешними дисками.
Использовать Int тоже не очень удобно - канал все время занят...
Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...
Для Вашей системы лучше всего подходит режим HID, т.к. не требует драйверов и комплекс оборудования работает в режиме командно-информационной сети, в которой компьютер - Host - выдает команды, а остальные устройства выполняют команды и отвечают. Так что рекомендую поработать в этом направлении.


Как я понял HID, MSD и т.д. это стандартные классы устройств, а режимы работы USB это Bulk, Interrupt и Isochronus. Использование стандартных классов позволяет избежать необходимости в самостоятельном написании драйверов.
Konst_777
Цитата(Aloc @ Oct 18 2013, 17:52) *
Три отдельных платы, каждая со своим МК соответственно. Если на IN использовать endpoint 3 с максимальным размером без разделения в 512 байт, то запросы пакетов должны быть не реже, чем раз в 6 мс для каждого из двух устройств...
Да, c потоками от АЦП все ясно - 80*3 Кбайт/с. И проблем быть не должно. Какие требования к задержкам для команд управления?

Цитата(Aloc @ Oct 18 2013, 17:52) *
Три отдельных платы, каждая со своим МК соответственно...
На всякий случай, почитайте тему 8 датчиков MMA8451Q на 1 USB, как лучше сделать

Цитата(Aloc @ Oct 18 2013, 17:52) *
...А ещё, не подскажите программы для отображения принимаемой информации? Сейчас использую Jungo WinDriver, в нём получаю драйвер, а также можно посмотреть, что принимается...
USB сниффер, Какой софт господа предпочитают?
Чтение обмена по USB шине, прочитать обмен подключившись к проводам - на всякий случай...
Ну и, выполните поиск в подфоруме RS232/LPT/USB/PCMCIA/FireWire по ключевой фразе "анализатор USB протокола"
Aloc
Спасибо за рекомендации.


Цитата(Konst_777 @ Oct 18 2013, 21:17) *
Да, c потоками от АЦП все ясно - 80*3 Кбайт/с. И проблем быть не должно. Какие требования к задержкам для команд управления?


Особых требований для задержек команд управления нет, ну и АЦП всего два, для третьего устройства только управление.
Aloc
А нужны какие-то ещё дополнительные настройки для двойной буферизации, кроме записи бита в соответствующий регистр?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.