Перейти к содержанию
    

C8051F340 SiLabs работа с USB

Здравствуйте,

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

 

Необходимо передать эти данные в компьютер, с компьютера также будут поступать значения переменных (установка генерируемых частот), но не регулярно. Не знаю какой режим работы USB выбрать в этом случае.

Вроде как должен подойти режим по прерываниям, но у него минимальное время запросов 1 мс и размер пакета 64 байта(откуда такое ограничение?)

По изохронному режиму как-то мало информации и примеров реализации, но на данный момент он кажется наиболее предпочтительным.

По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ранее в USBXpress работа по прерываниям не предусматривалась и весь обмен мог идти только по инициативе компа. Может конечно сейчас что то изменилось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте,

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

 

Необходимо передать эти данные в компьютер, с компьютера также будут поступать значения переменных (установка генерируемых частот), но не регулярно. Не знаю какой режим работы USB выбрать в этом случае.

Вроде как должен подойти режим по прерываниям, но у него минимальное время запросов 1 мс и размер пакета 64 байта(откуда такое ограничение?)

По изохронному режиму как-то мало информации и примеров реализации, но на данный момент он кажется наиболее предпочтительным.

По поводу балка сомневаюсь, в итоге к хосту будет подключено два описанных устройства и одно, на которое будут подаваться команды управления (поток данных не значительный) не будет ли возникать слишком длинных задержек передачи и переполнений буфера?

 

Добрый день!

 

Конечно использовать Bulk или MSD не стоит! Не удобно это для таких задач! Эти режимы используются для передачи больших файлов или работы с внешними дисками.

Использовать Int тоже не очень удобно - канал все время занят...

Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...

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

Изменено пользователем Onic777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...имеется МК F340...80 Кбайт/с... Не знаю какой режим работы USB выбрать в этом случае...

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

 

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

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

Какие требования к задержкам передачи?

 

...Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...

Если на компьютере установлена Windows 7 или Windows 8, то следует использовать WinUSB. Тогда не нужно будет устанавливать драйвер.

How to install WinUSB.sys without a custom INF?

WinUSB example from Jan Axelson

 

...Для Вашей системы лучше всего подходит режим HID...

HID не обеспечит скорость обмена 80 Кбайт/с на USB Full Speed. Для него потолок 64 Кбайт/с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Какие требования к задержкам передачи?

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

 

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

 

Ранее в USBXpress работа по прерываниям не предусматривалась и весь обмен мог идти только по инициативе компа. Может конечно сейчас что то изменилось?

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

 

Добрый день!

 

Конечно использовать Bulk или MSD не стоит! Не удобно это для таких задач! Эти режимы используются для передачи больших файлов или работы с внешними дисками.

Использовать Int тоже не очень удобно - канал все время занят...

Кроме того, недостатками Bulk и Int является необходимость установки драйверов, которые имеют обыкновение криво садиться...

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

 

Как я понял HID, MSD и т.д. это стандартные классы устройств, а режимы работы USB это Bulk, Interrupt и Isochronus. Использование стандартных классов позволяет избежать необходимости в самостоятельном написании драйверов.

Изменено пользователем Aloc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Три отдельных платы, каждая со своим МК соответственно. Если на IN использовать endpoint 3 с максимальным размером без разделения в 512 байт, то запросы пакетов должны быть не реже, чем раз в 6 мс для каждого из двух устройств...
Да, c потоками от АЦП все ясно - 80*3 Кбайт/с. И проблем быть не должно. Какие требования к задержкам для команд управления?

 

Три отдельных платы, каждая со своим МК соответственно...
На всякий случай, почитайте тему 8 датчиков MMA8451Q на 1 USB, как лучше сделать

 

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

Чтение обмена по USB шине, прочитать обмен подключившись к проводам - на всякий случай...

Ну и, выполните поиск в подфоруме RS232/LPT/USB/PCMCIA/FireWire по ключевой фразе "анализатор USB протокола"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

Да, c потоками от АЦП все ясно - 80*3 Кбайт/с. И проблем быть не должно. Какие требования к задержкам для команд управления?

 

Особых требований для задержек команд управления нет, ну и АЦП всего два, для третьего устройства только управление.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...