|
|
  |
C8051F340 SiLabs работа с USB, Выбор режима работы и реализация |
|
|
|
Oct 17 2013, 18:23
|
Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585

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

Участник

Группа: Участник
Сообщений: 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)
|
|
|
|
|
Oct 18 2013, 13:51
|
Знающий
   
Группа: Свой
Сообщений: 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 Кбайт/с.
|
|
|
|
|
Oct 18 2013, 14:52
|
Группа: Участник
Сообщений: 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
|
|
|
|
|
Oct 18 2013, 17:17
|
Знающий
   
Группа: Свой
Сообщений: 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 протокола"
|
|
|
|
|
Oct 18 2013, 17:34
|
Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585

|
Спасибо за рекомендации. Цитата(Konst_777 @ Oct 18 2013, 21:17)  Да, c потоками от АЦП все ясно - 80*3 Кбайт/с. И проблем быть не должно. Какие требования к задержкам для команд управления? Особых требований для задержек команд управления нет, ну и АЦП всего два, для третьего устройства только управление.
|
|
|
|
|
Nov 1 2013, 09:14
|
Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585

|
А нужны какие-то ещё дополнительные настройки для двойной буферизации, кроме записи бита в соответствующий регистр?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|