Главная arrow Программирование arrow AVR arrow userial - мост USBI2C/SPI/GPIO/ADC на микроконтроллере AT90USB647 Monday, April 24 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

userial - мост USBI2C/SPI/GPIO/ADC на микроконтроллере AT90USB647 Версия для печати
Написал microsin   
08.09.2010

userial - открытый, свободный проект для выполнения моста USB <--> I2C/SPI/GPIO с применением микроконтроллера Atmel AT90USB647. Программное обеспечение и описание железа опубликовано под открытой (Open Source) лицензией.

userial_v1.0.jpg

Поддерживаются интерфейсы:

1 x интерфейс USB (виртуальный COM-порт)
1 x интерфейс JTAG
1 x I2C (TWI)
1 x SPI
8 x цифровых портов ввода/вывода (General purpose digital I/O, GPIO)
4 x аналого-цифровых преобразователя (АЦП, ADC)

userial-SCH.png userial-board.png

Плата связывается с компьютером с использованием класса CDC (USB communications device class), который создает на компьютере виртуальныйCOM-порт. Поэтому userial не требует установки драйверов или специальных библиотек. Интерфейс управления основывается на ASCII, и егоочень просто использовать через программу-терминал (обычный терминальный клиент SecureCRT, putty, HyperTerminal, TerraTerm и т. д.).Таким образом, получение результатов может быть очень простым и быстрым. Конфигурирование устройств просходит также быстро и прозрачно для пользователя.

Схемы, документация и программное обеспечение доступны для свободного скачивания (см. ссылки). Программное обеспечение (firmware) поставляетсяпод лицензией MIT, а железо (hardware) поставляется под лицензией Creative Commons Attribution-Share Alike 3.0 Unported License.

Программное обеспечение также портировано на чип AT90USB162 (проект Bumble-B), и может быть записано в макетную плату AVR-USB162 (см. ссылки). При этом не доступен ADC, так как микроконтроллер AT90USB162 лишен цифро-аналогового преобразователя.

[Установка драйвера Flip, запись firmware userial]

Для того, чтобы записать прошивку (firmware) в плату userial, понадобится специальное программное обеспечение Atmel - программа Flip. Эту программу можно легко найти на сайте Atmel, свободно скачать и установить (программа Flip бесплатна). Эта программа позволяет записывать почти все чипы Atmel, имеющие интерфейс USB (кстати, и не только USB, но и CAN, и RS232, но нас сейчас это не интересует) через простое подключение шнуром USB к компьютеру. Для этого достаточно иметь программу Flip и установленный драйвер USB для Вашей платы с программируемым чипом (в нашем случае это плата userial, на которой стоит чип AT90USB647). Программирование через USB возможно, так как в большинство чипов Atmel с аппаратным интерфейсом USB еще на заводе прошит bootloader USB Flip (DFU). Сейчас мы как раз и рассмотрим нехитрый процесс установки программы Flip и драйвера для bootloader USB Flip. Итак, процесс по шагам.

1. Скачайте и установите программу Flip. Последнюю версию можно легко найти на сайте Atmel, воспользовавшись поиском по слову Flip. Можете воспользоваться ссылкой [3]. В результате на компьютере появится папка с программой (например, C:\Program Files\Atmel\Flip 3.3.2\), а по кнопке Start будут доступны ярлыки для запуска. Если запустить программу через ярлык (например "Flip 3.3.2"), то получится что-то наподобие этого:

userial-flip-installed001.PNG

Теперь можно подключить плату userial к компьютеру по USB, и установить драйвер USB Flip.

2. При первом подключении только что собранной, непрошитой платы userial к компьютеру загорится на плате userial зеленый светодиод PWRLED,и система Windows обнаружит новое устройство USB bootloader-а Flip. Если это произошло, значит Ваша плата userial аппаратно исправна и собрана правильно (см. скриншоты).

userial-flip-driver-install001.PNG userial-flip-driver-install002.PNG userial-flip-driver-install004.PNG

Теперь нужно установить драйвер. На первый вопрос Мастера установки драйвера отвечаем, что не нужно в этот раз подключаться к Windows Updateдля поиска драйвера:

userial-flip-driver-install005.PNG

Указываем, что драйвер будет лежать в специально указанной папке:

userial-flip-driver-install006.PNG

Кнопкой Browse указываем папку usb в каталоге, куда установлена программа Flip:

userial-flip-driver-install007.PNG

Далее снова жмем Next и начинается установка драйвера:

userial-flip-driver-install008.PNG

В процессе установки может получиться так, что у Вас уже установлена на компьютере библиотека libusb, тогда Мастер запросит Вас - перезаписывать ли уже имеющиеся в каталоге драйверов Windows файлы? Если не знаете, что отвечать, можно нажать на кнопку Yes (файлы будут перезаписаны новыми версиями, как в моем примере):

userial-flip-driver-install009.PNG

И, наконец, процедура установки успешно завершится:

userial-flip-driver-install010.PNG

userial-flip-driver-install011.PNG

userial-flip-driver-install012.PNG

3.Теперь можно прошить плату прошивкой userial. Это совсем просто. Скачиваем прошивку (см. ссылки [1]). Скомпилированная прошивка на кварц 16 МГц находится в файле userial\userial-firmware-v1.9\userial.hex. Запускаем программу Flip, в меню выбираем тип программируемого устройтсва (Device -> Select...):

userial-upload-firmware001.PNG

Из списка выбираем чип AT90USB647:

userial-upload-firmware002.PNG

Выбираем тип подключения Settings -> Communication -> USB:

userial-upload-firmware003.PNG

Для подключения к плате userial жмем кнопку Open:

userial-upload-firmware004.PNG

В результате программа подключится через USB к бутлоадеру в чипе AT90USB647, и на экране отобразится информация о программируемом устройстве (тип чипа, размер доступной для записи памяти, сигнатура чипа и проч.):

userial-upload-firmware005.PNG

Укажем файл прошивки userial.hex, который будем загружать через меню File -> Load HEX File...:

userial-upload-firmware006.PNG

userial-upload-firmware007.PNG

Останется нажать на кнопку Run, и начнется процесс записи чипа. Сначала стирание (стоит галка Erase), потом запись прошивки userial.hex в память flash чипа AT90USB647 (стоит галка Program), а затем будет произведена проверка того, что записалось (стоит галка Verify). Итак, жмем кнопку Run:

userial-upload-firmware008.PNG

После окончания процесса нажмем на кнопку Start Application, и запустится firmware userial в чипе AT90USB647. При этом на плате userial один за другим загорятся желтые светодиоды - сначала LED1 (он слева на фото), а затем LED2 (он справа на фото). Windows обнаружит новое устройство, и запросит драйвер.

userial1_0-IMG_0941.JPG

userial-upload-firmware009.PNG

Драйвер userial - это просто информационный файл виртуального COM-порта userial.inf, который находится в папке userial-firmware-v1.9 архива по ссылке [1] (там же, где и прошивка userial.hex). На скриншотах проиллюстрирована процедура инсталляции драйвера.

userial-upload-firmware010.PNG

userial-upload-firmware011.PNG

userial-upload-firmware012.PNG

Может случиться так, что обнаружится несколько inf-файлов, подходящих для платы userial. В этом случае выбираем именно наш файл userial.inf:

userial-upload-firmware013.PNG

В ответ на предупреждение о том, что драйвер не прошел тест на совместимость с Windows XP, нажимаем кнопку Continue Anyway (установить все равно):

userial-upload-firmware014.PNG

userial-upload-firmware015.PNG

userial-upload-firmware016.PNG

После непродолжительной процедуры установки в системе появится новый виртуальный COM-порт (в моем примере COM15):

userial-upload-firmware017.PNG

userial-upload-firmware018.PNG

Плата userial готова к работе.

4. Программа firmware прошита, драйвер COM-порта, который эмулирует плата userial, установлен. Теперь осталось проверить, как работает интерфейс команд userial. Для этого нужно подключиться к появившемуся COM-порту (в моем примере COM15) любым терминальным клиентом. Мне большевсего нравится в этом качестве программа SecureCRT. Параметры подключения - стандартные.

userial-connect-terminal001.PNG

После подключения можно вводить команды. Например, чтобы прочитать напряжение со входа канала 0 аналого-цифрового преобразователя (ADC), нужно ввести команду AV0 и нажать Enter, в результате получим:

userial-connect-terminal002.PNG

Полный список команд userial приведен в руководстве пользователя userial, см. [4].

[Как заказать]

Можно приобрести пустую печатную плату (без деталей, только печатная плата) userial за 100 рублей, или полностью готовую, собранную плату за 1100 рублей (цена указана без учета стоимости пересылки). Для заказа отправьте мне сообщение на email (адрес см. на страничке Контакты),или оставьте комментарий ниже, указав контакты для связи с Вами (email,ICQ или телефон). Если Вы находитесь не в Москве, возможна пересылка наложенным платежом.

[Ссылки]

1. Схемы (формат Eagle), документация и программное обеспечение userial и Bumble-B.
2. Макетная плата AVR-USB162.
3. FLIP - программа Atmel, с помощью которой Вы можете прошить плату через USB без программатора (используется USB DFU Bootloader, встроенный в микросхему AT90USB647). По этой же ссылке доступно для закачки firmware бутлоадеров DFU Flip. Старая версия Flip 3.3.2 здесь.
4. Руководство пользователя userial.

Последнее обновление ( 30.01.2013 )
 

Комментарии  

  1. #12 fr
    2012-02-0809:40:45 Подскажите, с помощью какой программы открывать схему? P-CAD не открывает.

    microsin: формат Eagle.
  2. #11 Максим
    2011-10-2713:18:38 Интересует userial - мост USBI2C/SPI/GPIO/ADC на микроконтроллер е AT90USB647, возникло несколько вопросов. Сначала обрисую задачу: есть устройство, взаимодействующ ее с
    окружающим миром по i2c шине, необходимо скормить ему несколько команд. Пример команды в HEX:
    S 36 04 00 00 00 00 P

    Здесь:
    "S" и "P" - старт, стоп
    36 - байт адрес
    04 - байт суб адрес
    00 00 00 00 - 4 байта данные.

    Нужно также обеспечить частоту 100 КГц шины i2c. Есть также вопросы:
    1. Какая рабочая частота I2C моста userial?
    2. Какое ПО с ним работает? Простые портовые терминалы вряд ли устроят…

    У нас была попытка реализовать передачу по средствам этой поделки:
    http://nauchebe.net/2010/09/adapter-i2s-som-port-kompyutera/#more-11346

    Однако это ПО способно передать только 3 байта данных, и частота, задаваемая в настройках COM-порта, не совсем то что надо… Учитывая все вышеизложенное - возможно решить задачу по средствам предлагаемого Вами моста userial? Прошу по возможности ответить подробнее.

    microsin: по умолчанию с userial работает ЛЮБОЕ ПО, которое понимает, что такое COM-порт. Если такие программы почему-то Вас не устраивают, Вы можете написать собственное ПО, так как работать с COM-портом для программиста довольно легко. Подробнее, чем рассказано в доке на userial (раздел [Ссылки], см. ссылку 4) - я ни за что не расскажу, потому что у меня все равно другой информации нет, только оригинальная дока. Могу сказать одно - проект userail полностью открыт - и исходный код, и схема, и печатная плата, и документация на userial, и даташит на применяемый чип AT90USB647 - все в свободном доступе. Поэтому, если Вас вдруг что-то не устраивает, то Вы можете допилить это неустраивающее под свои нужды. Например, доделать firmware так, чтобы частота работы I2C была строго как Вам надо, 100 кГц, не меньше и не больше.

    Поэтому изучите даташит на чип AT90USB647, доку userial, изучите его исходный код, изучите Ваше техзадание и Ваши возможности. Тогда станет ясно, пригодится Вам userial, или не пригодится. Извините, если ничем не помог, я наверное еще бОльший чайник, чем Вы.
  3. #10 newstep
    2011-05-0210:39:57 У меня программатор STK200. Прошивальщик avrdude. Попытался им считать flash, ничего не получилось - получил файл нулевой длины. Подумал, что это защита от копирования. Сделал chip erase и попробовал записать USB бутлоадер. Бут лоадер не записался. Соответсвтенно Flip для записи уже использовать нельзя. Можете ли ли что нибудь посоветовать сделать?

    microsin: напишите в почту (см. Контакты) - так проще общаться, и я не хотел бы загромождать статью комментариями.
  4. #9 newstep
    2011-05-0122:44:27 1. В winavr 20100110 нет h файла с описанием регистров AT90USB647.
    2. Чем можно программировать этот микроконтроллер ?

    microsin:
    1. В моем WinAVR версии 20080610 есть такой заголовок - iousb647.h, и наверняка он есть и у Вас, так как мой WinAVR старее Вашего. Имейте в виду, что этот заголовочный файл нельзя напрямую включать оператором include, а только через диспетчер заголовков avr\io.h.
    2. Запрограммирова ть AT90USB647 можно легко всеми возможными стандартными средствами, начиная с бутлоадера DFU/Flip, см. даташит на микроконтроллер .
  5. #8 Lexa
    2011-03-1919:40:08 АЦП: при вводе команд AV0, AV1, AV2, AV3 всё исправно показывает. А вот при вводе после AV4 пишет что "E: invalid channel". В даташите на at90usb647 выводы АЦП с битами 4-7 заняты ещё Jtagом. Fuse jtage выключил. результат такой же. Получается там другие команды?

    microsin: похоже на искусственное программное ограничение. Посмотрите, может в документации на userial что-то есть по Вашему вопросу, я не знаю ответ. Если не найдете, то смотрите исходники userial.
  6. #7 фед
    2011-03-0710:54:48 Я их ранее программировал, по этому не знаю их заводское состояние. Подскажите пожалуйста какие биты должны быть запрограммирова ны, а какие нет… Заранее благодарен.

    microsin: заводское состояние я Вам только что указал. Если надо состояние битов по их именам, то откройте даташит на чип AT90USB647, там все подробно разжевано. Здесь больше на Ваши комментарии отвечать не буду, пишите на почту.
  7. #6 фед
    2011-03-0709:20:07 Подскажите пожалуйста, как должны быть запрограммирова ны FUSES?

    microsin: фьюзы никак не должны быть запрограммирова ны, их трогать не надо, у них должно быть заводское состояние по умолчанию - 0×5E LOW FUSE BYTE, 0×9B HIGH FUSE BYTE, 0xF3 EXTENDED FUSE BYTE.
  8. #5 DD
    2011-01-1418:17:44 Здравствуйте. Да, к сожалению, я перепутал D- и D+!
    ПК обнаружил устройство, драйвер установлен. Я прошил устройство прошивкой userial.hex, и нажал "Start Application", - но ПК ничего не нашел.!
    У меня кварц на 12 МГц (к сожалению, на 16 у меня нет, и в магазине тоже нет!). Подскажите пожалуйста: в папке userial-firmware-v1.9 - есть исходники? если да, то с помощью какой программы можно открыть их и откомпилировать проект под 12 МГц?

    microsin: не уверен, что можно поменять настройки интерфейса USB под кварц 12 МГц - изучите предварительно даташит на чип AT90USB647. Компилировать исходники из папки userial-firmware-v1.9 нужно с помощью утилит make и gcc (входят в пакет WinAVR).
  9. #4 DD
    2011-01-0813:24:27 Только что всё прошил. - не работает! ПК определяет как "USB Device", "Неизвестное устройство"

    microsin: либо драйвер не подсунули, либо ножки микроконтроллер а USB D+ и D- перепутали.
  10. #3 DD
    2011-01-0812:12:16 Простите. Я нашел на сайте Atmel только файл с расширением .a90 - если это он (series6-use_bootloader_ api-2_0_1.a90), то как прошить чип, у меня программатор AVR910 и программирует только .hex, .bin, .rom.

    microsin: не прощу. Файл с расширением .a90 обычно и есть hex - откройте этот файл и посмотрите, что внутри. А вообще-то Вы похоже не тот файл скачали. Нужно было скачать другой файл, 64X-usb-boot-1-0-0.a90. Процесс по шагим:
    1. Вбиваете в Google название чипа AT90USB647, и по первой же ссылке попадаете на сайт Atmel с описанием чипа.
    2. На странице с описанием чипа ищите AT90USB64x USB Bootloader v1.0.0, там указана ссылка для закачки - http://www.atmel.com/dyn/resources/prod_documents/64X-usb-boot-1-0-0.zip.
    3. Закачиваете, распаковываете. В архиве лежит один-единственный файл 64X-usb-boot-1-0-0.a90, это и есть бинарник бутлоадера (в формате HEX), который надо прошить Вашим любимым программатором. Если не можете подсунуть программатору файл с расшиоением .a90, просто переименуйте расширение на .hex - и прошейте.

    Как альтернативу можно использовать также бутлоадер LUFA, он доступен в двух вариантах - DFU и CDC. Бенефит этих бутлоадеров в том, что на них есть исходники, поэтому их можно коцать и калечить как угодно в свое удовольствие.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017