реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> C8051F340 SiLabs работа с USB, Выбор режима работы и реализация
Aloc
сообщение Oct 17 2013, 18:23
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



Здравствуйте,
имеется МК F340 на него с внешнего АЦП с частотой 10 кГц поступает 8 байт данных, т.е. 80 байт/мс или 80 Кбайт/с.

Необходимо передать эти данные в компьютер, с компьютера также будут поступать значения переменных (установка генерируемых частот), но не регулярно. Не знаю какой режим работы USB выбрать в этом случае.
Вроде как должен подойти режим по прерываниям, но у него минимальное время запросов 1 мс и размер пакета 64 байта(откуда такое ограничение?)
По изохронному режиму как-то мало информации и примеров реализации, но на данный момент он кажется наиболее предпочтительным.
По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?
Go to the top of the page
 
+Quote Post
vladec
сообщение Oct 18 2013, 06:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Ранее в USBXpress работа по прерываниям не предусматривалась и весь обмен мог идти только по инициативе компа. Может конечно сейчас что то изменилось?
Go to the top of the page
 
+Quote Post
Onic777
сообщение Oct 18 2013, 07:40
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-08-10
Из: Кишинев
Пользователь №: 58 967



Цитата(Aloc @ Oct 17 2013, 21:23) *
Здравствуйте,
имеется МК F340 на него с внешнего АЦП с частотой 10 кГц поступает 8 байт данных, т.е. 80 байт/мс или 80 Кбайт/с.

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


Добрый день!

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

Сообщение отредактировал Onic777 - Oct 18 2013, 07:41


--------------------
Regards,
Oleg Nicolaiciuc (onic777)
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Oct 18 2013, 13:51
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(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 Кбайт/с.
Go to the top of the page
 
+Quote Post
Aloc
сообщение Oct 18 2013, 14:52
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



Цитата(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. Использование стандартных классов позволяет избежать необходимости в самостоятельном написании драйверов.

Сообщение отредактировал Aloc - Oct 18 2013, 15:01
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Oct 18 2013, 17:17
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(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 протокола"
Go to the top of the page
 
+Quote Post
Aloc
сообщение Oct 18 2013, 17:34
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



Спасибо за рекомендации.


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


Особых требований для задержек команд управления нет, ну и АЦП всего два, для третьего устройства только управление.
Go to the top of the page
 
+Quote Post
Aloc
сообщение Nov 1 2013, 09:14
Сообщение #8





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



А нужны какие-то ещё дополнительные настройки для двойной буферизации, кроме записи бита в соответствующий регистр?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 11:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016