userial - мост USBI2C/SPI/GPIO/ADC на микроконтроллере AT90USB647 Печать
Добавил(а) microsin   

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 лишен цифро-аналогового преобразователя.

[Чем программировать - USB bootloader Atmel, Flip DFU]

В микроконтроллер прошито заводское программное обеспечение (bootloader, называемое также DFU - Device Firmware Uploader или Device Firmware Upgrade), позволяющее загрузить программу пользователя в память микроконтроллера через интерфейс USB и запустить её на выполнение. Это позволяет писать и отлаживать программы, не имея вообще никакого отладчика и программатора. Конечно, не те удобства, что предоставляет аппаратный отладчик JTAGICE-mkII, но зато дешево и сердито, затраты для быстрого старта минимальные. Программа и технология, предоставляющая такие возможности, называется Flip (FLexible In-system Programmer), программа бесплатна и доступна для скачивания на сайте atmel.com. Подробная документация, как все это делается, также доступна, правда на английском языке.

После заливки firmware с помощью загрузчика Flip DFU сам загрузчик не стирается, поэтому Вы можете перепрошивать макетную плату через USB практически неограниченное количество раз. Это очень удобно использовать для обновления программного обеспечения в приборах, где используется макетная плата, потому что ISP-программатор оказывается не нужен. Для повторного запуска бутлоадера служит перемычка HWB JP4.

Прошивку-bootloader, записанную на фабрике Atmel (она обеспечивает работу Flip), нельзя считать ISP-программатором, поскольку она защищена lock-битами. Для того, чтобы можно было воспользоваться ISP-программатором или debugWIRE-отладчиком, чип придется стереть, что полностью уничтожит Flip-bootloader. Но особо печалиться по этому поводу не стОит, так как на сайте atmel.com доступен для свободного скачивания бинарник bootloader-a (его можно бесплатно скачать на сайте Atmel), и его всегда можно восстановить. Как я понял, использование Flip исключает применение для отладки обычного ISP-программатора и отладчика debugWIRE, и наоборот.

AT90USB162fuses.JPG AT90USB162lockbits.JPG

[Установка драйвера 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 готова к работе.

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

userial-connect-terminal001.PNG

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

userial-connect-terminal002.PNG

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

[Ссылки]

1. 100909userial-bumble-B.zip - схемы (формат Eagle), документация и программное обеспечение userial и Bumble-B.
2. Макетная плата AVR-USB162.
3. FLIP Programmer site:atmel.com - программа Atmel, с помощью которой Вы можете прошить плату через USB без программатора (используется USB DFU Bootloader, встроенный в микросхему AT90USB647). По этой же ссылке доступно для закачки firmware бутлоадеров DFU Flip. Старая версия Flip 3.3.2 здесь: AvrFlip.rar.
4. Userial USB to I2C/SPI/GPIO Bridge User Manual site:tty1.net - руководство пользователя userial.