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

Здравствуйте, возникла необходимость подключить контроллер atmega16 к шине USB.

В общем затея такая: у микроконтроллера, скажем atmega16 есть внешняя память, к примеру at24c256, подключеная по шине I2C, надо все это дело подключить к шине USB таким образом, чтоб устройство инициализировалось как USB носитель информации (вроде флешки), в нашем случае емкостью памяти at24c256. :glare:

 

AVR изучаю не так давно, но програмирую в IAR на С :-)

Плиз помогите реализовать затею. :unsure:

 

В перспктиве можно добавить MMC карту :biggrin: :a14:

 

P.S. Знаю что тем про USB на форуме много, целый день читал, но подобного не нашел. :(

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


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

Если хочется, чтобы изображала стандартную флешку, то придется реализовывать весь mass storage протокол. Аппаратно - нужно поставить любой нормальный контроллер USB. Простым вариантом, типа FT245 отделаться не удастся.

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


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

Если хочется, чтобы изображала стандартную флешку, то придется реализовывать весь mass storage протокол. Аппаратно - нужно поставить любой нормальный контроллер USB. Простым вариантом, типа FT245 отделаться не удастся.

 

 

Не обязательно как флешка. Можно добавить ПО со стороны компьютера (если это проще) которая уже по заданным параметрам скопирует данные из внешней памяти.

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


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

С AVR309 лучше не связываться т.к. там всё написано на ассемблере, поэтому тяжело будет разбираться и переделывать, особенно если до этого писал только на Си. Кроме того используемый там драйвер использует очень кривой способ приёма/передачи данных(кто смотрел его исходники меня поймёт).

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

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


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

AVR изучаю не так давно, но програмирую в IAR на С :-)

Плиз помогите реализовать затею. :unsure:

 

В перспктиве можно добавить MMC карту :biggrin: :a14:

 

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

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


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

В общем за 3 дня немного ознакомился с USB. Сделал выводы :-)

Чтоб не терять времени и сил, необходимо воспользоваться готовой микросхемкой перехода от USB к интерфейсу мк, скажем к SPI. :glare:

Отсюда вопрос:Кто с этим уже встречался и у кого есть исходники на С для данного решения?

И посоветуйте недорогой преобразователь USB=>SPI скажем до$3.

Заранее спасибо! :biggrin:

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


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

Самый простой вариант - FT2232C, но не подойдет для реализации стандартных классов. Еще есть MAX3420E (шибко дорого), USBN9603/04. Если не пугает параллельная шина, я бы рекомендовал PDIUSBD12 - очень достойная вещь с правильной ценой.

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


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

Еще есть MAX3420E (шибко дорого).

 

Ну, на сайте производителя стоит 2,65$/1k. Я бы не сказал, что это шибко ;)

 

http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4751

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


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

И посоветуйте недорогой преобразователь USB=>SPI скажем до$3.

Заранее спасибо! :biggrin:

А почему именно SPI? UART ведь вроде менее хлопотный ;>

хотя дело ваше, FT232BM и ее клоны, может работать как USB<>UART если использовать ее с драйвером VCP или как DirectIO если не использовать VCP драйвер ;>

Цена, в розницу около $4-5.

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


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

Ну, на сайте производителя стоит 2,65$/1k. Я бы не сказал, что это шибко

Согласитесь, сайт производителя и магазин за углом - немного разные вещи. У нас он стоит дороже $4.

 

Филипс тут вне конкуренции: меньше $3 в розницу.

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


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

Мое внимание пока держится на pdiusbd12.

Что вы думаете относительно совмещения mega128 и pdiusbd12.

Конечно само собой возник вопросы относительно pdiusbd12.

1-й Как подключить физически

2-й С помощью какого интерфейса производится обмен между mega128 и pdiusbd12.

3-й У кого нибудь ест исходники или полезные ссылки на эту тему :rolleyes:

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


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

Мое внимание пока держится на pdiusbd12.

Что вы думаете относительно совмещения mega128 и pdiusbd12.

Конечно само собой возник вопросы относительно pdiusbd12.

1-й Как подключить физически

Когда непонятно как подключить берется схема Evaluation Kit и изучается с пристрастием :)

2-й С помощью какого интерфейса производится обмен между mega128 и pdiusbd12.

Подобный вопрос сразу наводит на мысль, что вы знаете только название м/с, но не смотрели ни ее описания, ни ее даташита. Не так ли? ;)

3-й У кого нибудь ест исходники или полезные ссылки на эту тему :rolleyes:

Апликухи опять же см. у производителя.

Кстати, чем вам не понравилось решение с FT245 или CP2102? Тем более, что если вам не принципиальна поддержка MassStorage.

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


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

Рассматривая многи варианты реализации, в итоге остановился на USBN9604, т.к. наиболее доступный, весьма недорогой и позволят реализовать все классы USB устройств.

 

В результате на связке с atmega128 (во второй реализации atmega2560) и NAND Flash от Samsung реализован класс Mass Storage Device. Контроллер неизбежен был, т.к. кроме USB девайс делает очень много дел. + Важна была минимизация себестоимости устройсва. В итоге очень доволен микросхемой USBN.

 

С USBN работаю по параллельному порту, но т.к. шина общая и для USBN и для внешнего озу атмеги и для NAND Flash, то скорость ОЧЕНЬ мала. В новой схемотехнической реализации на atmega2560 и разнесением памятей и USBN на разные порты контроллера, надеюсь на увеличение скорости.

 

Все зависит какие объемы и как критично время считывания.... и вобще, что именно планирует делать тредстартер. Ведь информацию прежде чем считывать, необходимо записать в память. Мне пришлось реализовать в своем девайсе поддержку FAT.

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

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


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

После долгих раздумий, было решено выбрать USBN9604 (т.к он есть в моем любимом магазине :-) и на нем можно реализовать Mass Storage Device). + инфа на русском. :)

 

Кому интересно: http://www.gaw.ru/html.cgi/txt/ic/National...603-4/index.htm

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

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


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

После долгих раздумий, было решено выбрать USBN9604 (т.к он есть в моем любимом магазине :-) и на нем можно реализовать Mass Storage Device). + инфа на русском. :)

 

Кому интересно: http://www.gaw.ru/html.cgi/txt/ic/National...603-4/index.htm

 

Имхо лучше либо дождаться семейство At90USB, либo уйти от стандартной mass storage в сторону HID например.

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


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

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

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

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

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

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

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

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

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

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