Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB <---> UART/SPI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Alex_lazy
Добрый день, уважаемое сообщество. Есть проблема, может кто подскажет, как её решить. К микроконтроллеру (ATmega128) необходимо подключить три USB-устройства, причём два из них будут "slave", а одно "host". Что посоветуете? Может быть есть МК с OTG (тот же AT90USB1286), только на несколько USB-портов; или VNC1L + FT232 с "правильными" прошивками? Кто с чем работал, поделитесь, пжлст.
Aesthete Animus
2Alex_lazy
А вы уверены, что стоит тут применять USB. Извините, но то, о чем Вы говорите, несколько несуразное архитектурное решение...
zltigo
2Alex_lazy
А Вы уверены,что стоит тут применять AVR? .....
Alex_lazy
Цитата(Aesthete Animus @ Jan 14 2008, 12:58) *
2Alex_lazy
А вы уверены, что стоит тут применять USB. Извините, но то, о чем Вы говорите, несколько несуразное архитектурное решение...


Очень хотелось бы, т.к. предполагается использовать флэшку или ПК и подключать это устройство через USB к другому модулю. А AVR, потому что хорошо изучет и уже используется.
rezident
Цитата(Alex_lazy @ Jan 14 2008, 13:04) *
Очень хотелось бы, т.к. предполагается использовать флэшку или ПК и подключать это устройство через USB к другому модулю. А AVR, потому что хорошо изучет и уже используется.
Обслужить столько USB-контроллеров - два хоста и один слейв (именно так, потому, что ваши два USB-slave должны подключаться к подключаться к USB-host контроллера, обслуживаемых вашим МК) одновременно с помощью AVR нереально. Либо периферийный USB-host контроллер должен обслуживаться собственным (быстродействующим в части транзакции данных) микроконтроллером. Но тогда зачем там AVR?
Вы подумайте зачем вам USB вообще? Какие из его отличительных свойств вам жизненно необходимы? Быстродействующий последовательный интерфейс? Возможность "горячего" подключения? Какой вообще межмодульный поток/объем данных планируется?
Yaumen
Цитата(rezident @ Jan 14 2008, 10:44) *
Обслужить столько USB-контроллеров - два хоста и один слейв (именно так, потому, что ваши два USB-slave должны подключаться к подключаться к USB-host контроллера, обслуживаемых вашим МК) одновременно с помощью AVR нереально. Либо периферийный USB-host контроллер должен обслуживаться собственным (быстродействующим в части транзакции данных) микроконтроллером. Но тогда зачем там AVR?
Вы подумайте зачем вам USB вообще? Какие из его отличительных свойств вам жизненно необходимы? Быстродействующий последовательный интерфейс? Возможность "горячего" подключения? Какой вообще межмодульный поток/объем данных планируется?


Зная о чем идет речь, могу сказать, что USB выбирался по 2-м причинам:

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

2. Основное достоинство - это подключение стандартных USB флешек, на которых можно принести в кармане новые прошивки работы устройства или скачать статистику работы устройства для дальнейшего анализа.

Одновременно могут использоваться ТОЛЬКО следующие конфигурации:
- PC -> USB SLAVE -> Пульт Управления -> USB HOST -> Модуль Процессора
- USB FLASH -> USB HOST -> Пульт Управления -> USB HOST -> Модуль Процессора

Неужели можности AVR не хватит для обслуживания 2-х USB HOST?
rezident
Цитата
1. Отсутствие у современных ноутбуков и КПК интерфейса RS232. Возможно конечно исользование переходников USB-RS232 (так до сих пор и делали), однако решили попробовать обойтись без переходников. Откатиться назад на RS232 успеем всегда.
Если из-за этого, то мост USB-COM это вполне современное и правильное решение.
Цитата
2. Основное достоинство - это подключение стандартных USB флешек, на которых можно принести в кармане новые прошивки работы устройства или скачать статистику работы устройства для дальнейшего анализа.
Это понятно. Удобство в применении готового носителя (USB FlashDrive) и в отсутствии необходимости доп. оборудования для считывания данных на PC. Но мы в такой же ситуации прмименили VNC1L для переноса журнала работы с контроллера на PC. До этого контроллер с FDD выпускался.
Цитата
Одновременно могут использоваться ТОЛЬКО следующие конфигурации:
- PC -> USB SLAVE -> Пульт Управления -> USB HOST -> Модуль Процессора
- USB FLASH -> USB HOST -> Пульт Управления -> USB HOST -> Модуль Процессора
Что-то я не вижу необходимости применения USB при связке "Пульт Управления -> USB HOST -> Модуль Процессора".
Цитата
Неужели можности AVR не хватит для обслуживания 2-х USB HOST?
ИМХО - нет.
Если вам хочется все же попробовать и поэкспериментировать, то посмотрите на MAX3421E. Только не забудьте при этом, что в Пульте управления вам придется реализовывать поддержку FAT.
Yaumen
Цитата(rezident @ Jan 14 2008, 11:15) *
Что-то я не вижу необходимости применения USB при связке "Пульт Управления -> USB HOST -> Модуль Процессора".


Одним из условий разработки было предусмотреть возможность исключить при поставке оборудования Пульт Управления, а это значит, что должна работать связка PC -> Модуль Процессора. Следовательно, если пока не обсуждать применение USB, то в Модуле Процессора должен стоять "чистый" USB-SLAVE (например от FTDI). Теперь если вернуться к наличию Пульта Управления, то для подключения его к Модулю Процессора необходим USB HOST. Вот и все.

Если Вы работали с VNC1L, то может быть подскажите... В приниципе нас вполне бы устроила прошивка от VDAP (в ней один порт используется для USB FLASH, а второй как HOST для FTDI периферии), остается только подключение PC к Пульту Управления. Возможно ли налету менять порт USB FLASH c HOST на SLAVE, например по команде от микроконтроллера или такой возможности нет? Если такое возможно, то на этот вопрос бы закрылся. Мы бы просто управляли назначением этого порта из меню Пульта Управления.
rezident
Цитата(Yaumen @ Jan 14 2008, 14:29) *
Одним из условий разработки было предусмотреть возможность исключить при поставке оборудования Пульт Управления, а это значит, что должна работать связка PC -> Модуль Процессора. Следовательно, если пока не обсуждать применение USB, то в Модуле Процессора должен стоять "чистый" USB-SLAVE (например от FTDI). Теперь если вернуться к наличию Пульта Управления, то для подключения его к Модулю Процессора необходим USB HOST. Вот и все.
А почему нельзя предусмотреть просто еще один интерфейс для подключения пульта? Модуль процессора работает с PC через мост USB-COM, а с Пультом непосредственно через COM-порт (RS232/RS485). Это всего лишь доп. м/с драйвера и разъем.
Цитата(Yaumen @ Jan 14 2008, 14:29) *
Если Вы работали с VNC1L, то может быть подскажите... В приниципе нас вполне бы устроила прошивка от VDAP (в ней один порт используется для USB FLASH, а второй как HOST для FTDI периферии), остается только подключение PC к Пульту Управления. Возможно ли налету менять порт USB FLASH c HOST на SLAVE, например по команде от микроконтроллера или такой возможности нет? Если такое возможно, то на этот вопрос бы закрылся. Мы бы просто управляли назначением этого порта из меню Пульта Управления.
Я лично не работал. Так ... "побаловался", проверяя команды с использованием UART VNC1L. Работал с ней мой коллега. Насколько я знаю "на лету" прошивку менять нельзя. Точнее для смены прошивки нужно переводить VNC1L в режим программирования, чтобы стартанул ее бутлоадер. Недавно появилась давно анонсированная возможность апдейта прошивки непосредственно с USB FlashDrive. Проверяли - работает.
А вообще почитайте про VNC1L сами, у производителя на сайте. Так наверное корректнее будет. http://www.vinculum.com/
Yaumen
Цитата(rezident @ Jan 14 2008, 12:23) *
А почему нельзя предусмотреть просто еще один интерфейс для подключения пульта? Модуль процессора работает с PC через мост USB-COM, а с Пультом непосредственно через COM-порт (RS232/RS485). Это всего лишь доп. м/с драйвера и разъем.

Это как раз запасной вариант, на случай если красивого и дешевого решения на USB не получится.

Цитата
Я лично не работал. Так ... "побаловался", проверяя команды с использованием UART VNC1L. Работал с ней мой коллега. Насколько я знаю "на лету" прошивку менять нельзя.

Если для того чтобы переключиться с HOST на SLAVE необходима замена прошивки, то тогда конечно врядли это возможно на лету. Я просто подумал, так как работа SLAVE намного проще, чем HOST, то возможно есть возможность переключить порт в режим SLAVE без замены прошивки.
Yaumen
И еще вопрос. Допустим мы связь с PC и c Модулем Процессора делаем на RS232, а USB FLASH подключаем через VINCULUM к Пульту Управления, реально ли заставить работать VNC1L через SPI или будут проблемы? Я знаю, что официально эта микросхема работает через UART, FIFO и SPI, однако где-то на форумах встречал отзывы, что нормально работает только через UART. Так ли это?
rezident
Из трех способов организации связи - UART, SPI и Parallel FIFO Interface - мы использовали только связь через UART. Причем кроме RX/TX обязательно требуется задействовать RTS/CTS. Использование SPI у нас есть в планах, но думаю нескоро (через пару месяцев). Так что ничего определенного про SPI я пока сказать не могу.
SasaVitebsk
А по-моему нет смысла использовать процессор только потому что он "хорошо заком". Если задача переросла этот процессор, то необходимо использовать новый процессор с соответствующими возможностями. Например с USB HOST на борту. С точки зрения стоимости старшие модели AVR + внешние элементы будут пожалуй дороже чем младшие модели процессоров с необходимыми ф-циями. Например AVR32 или ARM7.
one_man_show
В похожей задаче использовал 51-й МК отСиликонЛабс, удалось обойтись usb slave и SD на борту. Когда изделие не подключено к РС, используем флэшку по назначению и имеем возможность ее менять-обновлять и т.п. При подключении к РС, все изделие превращается в usb-флэшку, Винда с ней работает без проблем, специальной программы считывания делать не пришлось. Если интересует, посмотрите у СиликонЛабс аппноут на эту тему, там исходники, которые можно адаптировтаь под свои нужды
zltigo
Цитата(SasaVitebsk @ Jan 14 2008, 18:22) *
С точки зрения стоимости старшие модели AVR + внешние элементы будут пожалуй дороже чем

Без "пожалуй" и без "внешних элементов" тоже - LPC2141 c USB на борту стоит чуть более 4
(четырех) долларов. Старший LPC2468 с двумя USB (slave, host, OTG) , Ethernet, контроллер SD и всего прочего в комплекте с 512 Flash, 96 RAM около 11 баксов.
Yaumen
Цитата(SasaVitebsk @ Jan 14 2008, 17:22) *
А по-моему нет смысла использовать процессор только потому что он "хорошо заком". Если задача переросла этот процессор, то необходимо использовать новый процессор с соответствующими возможностями. Например с USB HOST на борту. С точки зрения стоимости старшие модели AVR + внешние элементы будут пожалуй дороже чем младшие модели процессоров с необходимыми ф-циями. Например AVR32 или ARM7.


То что предлагаете Вы, весьма разумно, если не считать что помимо изучения нового процессора придется еще и изучать необходимые протоколы и функционирование. В нашем случае: USB, FAT12, FAT16, FAT32, MSD и т.д. Если производитель не позаботился о предоставлении готовых библиотек для этого решения, то собственное повышение квалификации может перерасти в мигрень, не считая того что на это уйдет уйма времени, коим мы не располагаем.

Можно конечно еще подисскутировать в отношении когда нужно (можно) менять процессор для серийных изделий, а когда нет, но это тема отдельной ветки, а не этой.

Сейчас достаточно много производителей процессоров, поддерживающих USB, с продукцией которых не так быстро разобраться и принять правильное решение, за которое не будет потом мучительно больно. Именно для этого поднялся данный вопрос, чтобы узнать мнение специалистов, которые сталкивались и РЕШИЛИ подобный вопрос и к коим можно было впоследствии обратиться за квалифицированной помощью в случае возникновения проблем.

Естественно никто не ставит целью применить именно AVR, хотя, повторюсь, такое решение было бы предпочтительней в плане ускорения разработки. Поэтому подводя итог, хотелось бы услышать конкретные рассуждения и предложения о том, кто, что применял для подобной задачи, наличие готовых библиотек для решения поставленой задачи и т.д, и с какими трудностями пришлось столкнуться.
zltigo
Цитата(Yaumen @ Jan 15 2008, 09:43) *
..такое решение было бы предпочтительней в плане ускорения разработки.

Парадокс в том, что таое решение приведет к, как минимум, торможению разработки. Ваши знания AVR относительно всех других необходимых знаний являются далекооо не определяющими.
А ограничения накладываемые выбором AVR ооочень существенными. Практически Вы поступаете в точности в соответствии с принципом "у меня есть гайка M3" sad.gif
ReAl
+1
Как это меня достало в своё время!
"Ну вот у нас ведь есть такая-вот плата, пусть под другое делалась, но уже готовая и отлаженная, давай к ней быстренько-быстренько довесочек простенький сделай да прошивочку перепиши"
И такая "каша из топора" выходит - и делается минимум вдвое дольше, чем если бы новую схему нарисовать/страссировать/...
И результат гораздо хуже. И себестоимость точно не ниже.
Yaumen
Цитата(zltigo @ Jan 15 2008, 10:28) *
Парадокс в том, что таое решение приведет к, как минимум, торможению разработки. Ваши знания AVR относительно всех других необходимых знаний являются далекооо не определяющими.
А ограничения накладываемые выбором AVR ооочень существенными. Практически Вы поступаете в точности в соответствии с принципом "у меня есть гайка M3" sad.gif


Если я могу закрутить гайкой М3 с простой шайбой, то я не понимаю зачем мне гайка М4 с приваренной гайкой. smile.gif) Я считаю, что пример не удачный. Я не против прогресса и изучения новых процессоров, но на данный момент на это просто нет времени. Сроки очень сжатые, к марту надо получить рабочий образец. Я уже не говорю, что для применения новых процессоров нужно покупать новое отладочное оборудование и программаторы. Короче много всего.

Цитата(ReAl @ Jan 15 2008, 10:35) *
+1
Как это меня достало в своё время!
"Ну вот у нас ведь есть такая-вот плата, пусть под другое делалась, но уже готовая и отлаженная, давай к ней быстренько-быстренько довесочек простенький сделай да прошивочку перепиши"
И такая "каша из топора" выходит - и делается минимум вдвое дольше, чем если бы новую схему нарисовать/страссировать/...
И результат гораздо хуже. И себестоимость точно не ниже.


Ну, началось!!! еще раз говорю, что AVR не принципиален. Нужны дельные советы и помощь, а не просто болтовня, типа: "вот в этом процессоре USB HOST значит делай на нем. А вообще поставь ARM с Linux или WinCE, и все ... Оболочка с драйверами сама сделает за тебя все!!!". Это что помощь называется!? Так что без обид. Ответили бы, типа: "Я (мы) делали на том-то, там в Application есть готовый пример или библиотека для работы с этим." Все, вопросов бы не было.

Цитата(one_man_show @ Jan 14 2008, 17:32) *
В похожей задаче использовал 51-й МК отСиликонЛабс, удалось обойтись usb slave и SD на борту. Когда изделие не подключено к РС, используем флэшку по назначению и имеем возможность ее менять-обновлять и т.п. При подключении к РС, все изделие превращается в usb-флэшку, Винда с ней работает без проблем, специальной программы считывания делать не пришлось. Если интересует, посмотрите у СиликонЛабс аппноут на эту тему, там исходники, которые можно адаптировтаь под свои нужды


2 one_man_show
А работали с USB-FLASH или просто флешками, типа SD?
Alex_lazy
Всем спасибо.
Как говорится "Будем искать..." (с)
wacko.gif
one_man_show
to Yaumen
В том изделии использовал CompactFlash, так как на то время из флэшек это был единственный представитель, у которого была опция Industrial, что собственно и требовалось по температурным соображениям smile.gif
В новом изделии используем SD, но тут как-то все тухло с Industrial, правда может плохо искали...
Yaumen
Цитата(one_man_show @ Jan 15 2008, 11:17) *
to Yaumen
В том изделии использовал CompactFlash, так как на то время из флэшек это был единственный представитель, у которого была опция Industrial, что собственно и требовалось по температурным соображениям smile.gif
В новом изделии используем SD, но тут как-то все тухло с Industrial, правда может плохо искали...


Ясно, спасибо. У нас все же упор на USB-Flash, так как дефакто это сейчас самый удобный и распространненный носитель информации.
Andy Great
Не устану повторять: используйте Sandisk Ultra II Plus - два в одном. Обработать SD все же намного проще.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.