|
Новая затея с USB, Организация обмена между внешней памятью AVR и USB через контроллер |
|
|
|
May 13 2006, 16:56
|

Участник

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122

|
Здравствуйте, возникла необходимость подключить контроллер atmega16 к шине USB. В общем затея такая: у микроконтроллера, скажем atmega16 есть внешняя память, к примеру at24c256, подключеная по шине I2C, надо все это дело подключить к шине USB таким образом, чтоб устройство инициализировалось как USB носитель информации (вроде флешки), в нашем случае емкостью памяти at24c256. AVR изучаю не так давно, но програмирую в IAR на С :-) Плиз помогите реализовать затею. В перспктиве можно добавить MMC карту P.S. Знаю что тем про USB на форуме много, целый день читал, но подобного не нашел.
|
|
|
|
|
May 13 2006, 17:25
|

Участник

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122

|
Цитата(Alex11 @ May 13 2006, 21:03)  Если хочется, чтобы изображала стандартную флешку, то придется реализовывать весь mass storage протокол. Аппаратно - нужно поставить любой нормальный контроллер USB. Простым вариантом, типа FT245 отделаться не удастся. Не обязательно как флешка. Можно добавить ПО со стороны компьютера (если это проще) которая уже по заданным параметрам скопирует данные из внешней памяти.
|
|
|
|
|
May 14 2006, 08:54
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 3-08-05
Из: Новосибирск
Пользователь №: 7 334

|
С AVR309 лучше не связываться т.к. там всё написано на ассемблере, поэтому тяжело будет разбираться и переделывать, особенно если до этого писал только на Си. Кроме того используемый там драйвер использует очень кривой способ приёма/передачи данных(кто смотрел его исходники меня поймёт). Гораздо лучше взять за основу исходники примеров AVR-USB. Там всё более менее понятно написано на Си. Для упрощения программы можно использовать встроенный USB контроллер или драйвер типа FT245. Обязательно изучить описание mass storage протокола, а для верности посмотреть его снифером, типа SnoopyPro с реальной флэшки. Потом будет удобно сравнивать работу своего устройства с эталонным примером(снятым с флэшки).
--------------------
Всяк хорошая мысля к нам приходит опосля.
|
|
|
|
|
May 14 2006, 21:32
|

Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830

|
Цитата(Мах @ May 13 2006, 19:56)  AVR изучаю не так давно, но програмирую в IAR на С :-) Плиз помогите реализовать затею. В перспктиве можно добавить MMC карту P.S. Знаю что тем про USB на форуме много, целый день читал, но подобного не нашел.  Если хочешь чтобы все получилось быстро, дешево и надежно, советую использовать контроллер USB CP2102 (Silabs) и USBXpress со стороны ПК. Обмен Меги и CP2102 - по UART. CP2102 может обмениваться со скоростью до 1MБод. Самое ценное, что кроме самой CP2102 НИЧЕГО практически не надо, кроме разъема и конденсаторов по питанию. Некоторый минус - корпус MLF. Но это как для кого  Если нужна скорость обмена по USB больше 1Мбод, то можно взглянуть на MAX3420. Обмен с этим зверем идет по SPI. Ну или уже упоминаемую FT245. Тут обмен по параллельной шине. В любом служае производитель снабжает софтом и драйверами для ПК. Самому нужно ваять только прикладной уровень. Еще один вариант - использовать процы типа C8051F326/327 от Silabs в качестве контролера USB. Эти процы с Flash 16кБайт и производительностью 25Мипс стоят менее 3$ (т.е. даже меньше контроллеров). USB-ное Firmware и тот же USBXpress делают разработку устройства очень простым. Вот только тогда вопрос возникает: а зачем нам нужен тогда ATmega16?
Сообщение отредактировал Dir - May 14 2006, 21:46
|
|
|
|
|
May 15 2006, 18:12
|

Участник

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122

|
В общем за 3 дня немного ознакомился с USB. Сделал выводы :-) Чтоб не терять времени и сил, необходимо воспользоваться готовой микросхемкой перехода от USB к интерфейсу мк, скажем к SPI. Отсюда вопрос:Кто с этим уже встречался и у кого есть исходники на С для данного решения? И посоветуйте недорогой преобразователь USB=>SPI скажем до$3. Заранее спасибо!
|
|
|
|
|
May 16 2006, 00:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Мах @ May 15 2006, 21:12)  И посоветуйте недорогой преобразователь USB=>SPI скажем до$3. Заранее спасибо!  А почему именно SPI? UART ведь вроде менее хлопотный ;> хотя дело ваше, FT232BM и ее клоны, может работать как USB<>UART если использовать ее с драйвером VCP или как DirectIO если не использовать VCP драйвер ;> Цена, в розницу около $4-5.
|
|
|
|
|
May 16 2006, 13:47
|

Участник

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122

|
Мое внимание пока держится на pdiusbd12. Что вы думаете относительно совмещения mega128 и pdiusbd12. Конечно само собой возник вопросы относительно pdiusbd12. 1-й Как подключить физически 2-й С помощью какого интерфейса производится обмен между mega128 и pdiusbd12. 3-й У кого нибудь ест исходники или полезные ссылки на эту тему
|
|
|
|
|
May 16 2006, 14:14
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Мах @ May 16 2006, 19:47)  Мое внимание пока держится на pdiusbd12. Что вы думаете относительно совмещения mega128 и pdiusbd12. Конечно само собой возник вопросы относительно pdiusbd12. 1-й Как подключить физически Когда непонятно как подключить берется схема Evaluation Kit и изучается с пристрастием  Цитата(Мах @ May 16 2006, 19:47)  2-й С помощью какого интерфейса производится обмен между mega128 и pdiusbd12. Подобный вопрос сразу наводит на мысль, что вы знаете только название м/с, но не смотрели ни ее описания, ни ее даташита. Не так ли?  Цитата(Мах @ May 16 2006, 19:47)  3-й У кого нибудь ест исходники или полезные ссылки на эту тему  Апликухи опять же см. у производителя. Кстати, чем вам не понравилось решение с FT245 или CP2102? Тем более, что если вам не принципиальна поддержка MassStorage.
|
|
|
|
|
May 17 2006, 03:15
|
Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175

|
Рассматривая многи варианты реализации, в итоге остановился на USBN9604, т.к. наиболее доступный, весьма недорогой и позволят реализовать все классы USB устройств.
В результате на связке с atmega128 (во второй реализации atmega2560) и NAND Flash от Samsung реализован класс Mass Storage Device. Контроллер неизбежен был, т.к. кроме USB девайс делает очень много дел. + Важна была минимизация себестоимости устройсва. В итоге очень доволен микросхемой USBN.
С USBN работаю по параллельному порту, но т.к. шина общая и для USBN и для внешнего озу атмеги и для NAND Flash, то скорость ОЧЕНЬ мала. В новой схемотехнической реализации на atmega2560 и разнесением памятей и USBN на разные порты контроллера, надеюсь на увеличение скорости.
Все зависит какие объемы и как критично время считывания.... и вобще, что именно планирует делать тредстартер. Ведь информацию прежде чем считывать, необходимо записать в память. Мне пришлось реализовать в своем девайсе поддержку FAT.
Сообщение отредактировал drka - May 17 2006, 03:25
|
|
|
|
|
May 19 2006, 07:21
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(Мах @ May 18 2006, 22:28)  После долгих раздумий, было решено выбрать USBN9604 (т.к он есть в моем любимом магазине :-) и на нем можно реализовать Mass Storage Device). + инфа на русском.  Кому интересно: http://www.gaw.ru/html.cgi/txt/ic/National...603-4/index.htmИмхо лучше либо дождаться семейство At90USB, либo уйти от стандартной mass storage в сторону HID например.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|