Макетная плата AVR-USB32U4 |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Макетная плата AVR-USB32U4 построена на AVR микроконтроллере ATmega32U4 с аппаратным интерфейсом USB 2.0. Она является аналогом платы Teensy 2.0.
Микроконтроллер ATmega32U4 (сигнатура 0x1E 0x95 0x87) по классификации Atmel относится к Series 4 USB AVR. Это означает, что на нем можно изготавливать USB-устройства стандарта USB 2.0 на скорости до Full Speed включительно. Ядро ATmega32U4 почти полностью совпадает с ядром популярного микроконтроллера ATmega32A, главное отличие только в наличии аппаратного интерфейса USB. На макетной плате AVR-USB32U4 можно изготавливать малогабаритные устройства USB на основе готовых проектов из библиотеки LUFA [1], либо на основе примеров кода из AVR USB Series4 Software Packages [2]. Оба решения бесплатны, однако LUFA [1] намного богаче готовыми примерами USB устройств, но для [2] есть примеры готовых программ ПО хоста для управления устройствами USB HID. [Особенности платы AVR-USB32U4] На плате AVR-USB32U4 установлены: • Микроконтроллер ATmega32U4 в корпусе TQFP44 с аппаратным интерфейсом USB, 32 кбайта памяти программ FLASH, 2.5 кбайт ОЗУ (SRAM), 1 кбайт энергонезависимой памяти данных EEPROM. По сторонам платы расположены 2 макетных поля, на которых удобно паять схемы с помощью навесного монтажа. Если эти макетные поля отпилить, то получается компактный модуль, который можно использовать для отладки программ и схем с помощью контактных полей ProsKit. С помощью перемычки SJ1 (расположена на обратной стороне платы) можно переключать уровень напряжения портов ввода вывода (GPIO) - либо 3.3V, либо 5V, по умолчанию 5V. Чтобы установить рабочий уровень напряжения GPIO на 3.3V, нужно перерезать скальпелем перемычку между контактами 2 и 3 SJ1, и напаять каплю припоя между контактами 1 и 2. Необязательные для установки компоненты C4, C5, C6, C8, C9, C10 расположены на обратной стороне платы. [Дополнительные возможности портов ввода-вывода ATmega32U4] Все порты микроконтроллера ATmega32U4 могут работать не только как простые ножки ввода вывода GPIO. Они также могут нести дополнительные функции, привязанные к богатой внутренней аппаратуре ядра AVR. В таблице ниже представлено краткое описание этих функций (полное описание см. в даташите на микроконтроллер ATmega32U4). Описание функций ножек сведено в таблицы, соответствующую номерам ножек коннекторов JP1 и JP2. В отдельном столбце таблицы указаны выводы макетной платы Teensy 2.0. Таблица 1. Цоколевка JP1 и дополнительные функции GPIO.
Таблица 2. Цоколевка JP2 и дополнительные функции GPIO.
Сигналы совпадения таймера OC0B, ~OC4D, OC4D, OC1A, ~OC4B, OC1B, OC4B, OC0A, OC1C, OC3A, ~OC4A, OC4A могут использоваться для генерации постоянного аналогового уровня и звуковых сигналов с помощью ШИМ (PWM). Сигнал совпадения выдается, когда содержимое счетчика таймера совпало с предопределенным заранее значением. Подробнее см. статью - "ATmega16 - PWM с помощью T/C0, T/C1, T/C2" и даташит на ATmega32U4. [Как прошивать AVR-USB32U4] Память программ (FLASH размером 32 килобайта) микроконтроллера ATmega32U4 можно прошивать прямо через интерфейс USB, для этого не нужен никакой дополнительный внешний программатор. Это возможно благодаря прошитому в память загрузчику DFU Flip компании Atmel. Загрузчик прошивается прямо на заводе Atmel, и его можно использовать сразу, "из коробки", если частота используемого кварца 8 МГц или 16 МГц. На плате AVR-USB32U4 стоит кварц на 16 МГц, так что можно использовать загрузчик. После заливки firmware с помощью загрузчика Flip DFU сам загрузчик не стирается, поэтому Вы можете перепрошивать макетную плату через USB практически неограниченное количество раз. Это очень удобно применять для обновления программного обеспечения в приборах, где работает макетная плата, потому что ISP-программатор оказывается не нужен. Для использования загрузчика Вам нужно установить утилиту FLIP, которую можно свободно скачать с сайта Atmel. Процесс запуска загрузчика по шагам: 1. Скачайте и установите пакет инсталлятора FLIP с сайта Atmel. Строка для поиска ссылки загрузки: FLIP site:atmel.com. На момент написания статьи была доступна версия FLIP 3.4.7 for Windows. Запустите инсталлятор, следуйте указаниям. После установки исполняемые файлы утилиты будут скопированы в папку C:\Program Files\Atmel\Flip 3.4.7\. Драйвера для микроконтроллеров, поддерживающих FLIP, находятся в поддиректории Flip 3.4.7\usb. Если в процессе установки будут запрашиваться какие-то файлы, то указывайте на содержимое папки C:\Program Files\Atmel\Flip 3.4.7\usb. Если будут запросы на перезапись файлов более новых версий старыми, то оставляйте новые версии файлов. Если каких-то файлов не хватает (к примеру, их нет в папке C:\Program Files\Atmel\Flip 3.4.7\usb и её подпапках), то скорее всего у Вас не самая свежая версия FLIP. Скачайте новую версию с сайта Atmel, или ищите недостающие файлы в архиве [3]. После окончания установки можете попробовать прошить Вашу плату через утилиту FLIP. Это делается очень просто. Запустите утилиту FLIP через стартовое меню (кнопка Start Windows), или ярлыком на рабочем столе: После запуска программы Flip появится окно, где в меню Device -> Select... нужно выбрать тип программируемого устройства ATmega32U4: Далее нужно в меню Settings -> Communication нужно выбрать подключение USB, и затем нажать кнопку Open: После этого появится и станет активным главное окно утилиты Atmel FLIP: Операции, которые можно проводить с памятью кристалла ATmega32U4, доступны в левой части окна. Это же окно дает информацию по подключенному программируемому чипу. Operation Flow. Здесь происходит управление основными операциями: Erase (очистка памяти, содержимое памяти заполняется байтами 0xFF), Blank Check (проверка памяти на чистоту), Program (программирование памяти данными из буфера), Verify (проверка на соответствие друг другу памяти чипа и содержимого буфера). FLASH Buffer Information. По умолчанию предполагается программирование памяти FLASH (но это можно поменять, если нажать кнопку Select EEPROM). В этом разделе окна выводится информация о свободном объеме памяти (28 KB), диапазона адресов буфера (т. е. загруженной в память прошивки. На скриншоте показано 0x0 - 0x0, что означает, что пока в буфер ничего не загружено), контрольная сумма буфера, имя загруженного HEX-файла (на скриншоте пока имя не указано, так как еще ничего не загружено). Обратите внимание, что размер доступной памяти всего лишь 28 килобайт, а не 32. Это потому, что верхнюю часть памяти (4 килобайта) занимает фирменный загрузчик DFU FLIP. Для программы пользователя доступны младшие 28 килобайт памяти, начиная с адреса 0x0000 (диапазон байтовых адресов 0x0000 - 0x6FFF). Загрузчик соответственно начинается с байтового адреса 0x7000 (для загрузчика доступен диапазон байтовых адресов 0x7000 - 0x7FFF). Примечание: под "байтовым адресом" подразумевается адрес памяти, адресуемой побайтно. Этот термин появился потому, что память программ AVR (FLASH) при выполнении инструкций программы адресуется не по байтам, а словами по 2 байта. Так что необходимо четко разделять адресацию инструкций и адресацию байтов памяти программ. Адрес инструкции всегда меньше байтового адреса в 2 раза. К примеру, если бутлоадер начинается с байтового адреса 0x7000, то для его запуска необходимо программно передать управление по адресу 0x3800. Память EEPROM всегда адресуется по байтам. ATmega32U4. Эта секция показывает байты сигнатуры (Signature Bytes) программируемого чипа (шестнадцатеричные значения 0x58, 0x1E, 0x95, 0x87), идентификаторы загрузки устройства Device Boot Ids, версия бутлоадера. Кнопка Start Application позволяет запустить программу пользователя (произойдет безусловный переход на адрес 0x0000). Галочка Reset позволяет эмулировать аппаратный сброс устройства, который происходит при включении питания (для этого используется сброс по переполнению сторожевого таймера WatchDog). Файл прошивки может быть в формате Intel HEX (обычно файл с расширением *.hex). Прошивку можно загрузить через меню File -> Load HEX File..., после этого прошивка загрузится в буфер программы. Запрограммировать память можно, если установить галочки Erase и Program, и нажать кнопку Run. Но бутлоадер кое-что не может - нельзя перешивать фьюзы и биты защиты. Это сделано специально - если некорректно установить фьюзы или биты защиты, то может перестать работать генератор или перестанет запускаться загрузчик. Фьюзы по умолчанию для ATmega32U4: LOW 0x5E, HIGH 0x99, EXT 0xF3. Байт защиты по умолчанию: 0xEC. [Кнопка запуска USB-загрузчика DFU Flip] Если в памяти программ FLASH записана программа пользователя (начиная с адреса 0x0000), то при подключении платы AVR-USB32U4 к компьютеру запустится именно она, а не загрузчик, и плата AVR-USB32U4 начнет выполнение заложенных в неё пользователем функций. К примеру, она может работать как USB HID клавиатура или мышь, или работать как виртуальный последовательный COM-порт, устройство класса USB CDC. Чтобы снова запустить загрузчик, на плате имеется специальная кнопка SW1. Если эту кнопку нажать, когда плата AVR-USB32U4 подключена через USB к компьютеру, и затем отпустить, то запустится загрузчик. Плата заново определится в Windows как USB-устройство ATmega32U4, и будет готово к новой перепрошивке с помощью утилиты Atmel FLIP. Если память программ очищена, то загрузчик запустится и без нажатия кнопки при подключении платы через интерфейс USB. [Программирование через ISP и JTAG, пошаговая отладка] На макетном поле платы AVR-USB32U4 имеются 2 разъема - ISP и JTAG. По умолчанию они не распаяны, но могут быть задействованы при необходимости. Оба имеют стандартную для Atmel цоколевку. ISP. Это коннектор для подключения внешнего ISP-программатора. Аббревиатура ISP означает In-System Programming, т. е. "программирование прямо в системе". Этот интерфейс всегда традиционно предназначался для программирования готовых, собранных заводских устройств. По сути интерфейс ISP представляет собой шину SPI без специальных сигналов выборки. В настоящее время ISP все чаще вытесняется функционалом USB-загрузчиков (USB bootloader), таких как вышеописанный DFU Flip. Технология ISP позволяет записывать не только память программ FLASH и память данных EEPROM, но также и специальные биты защиты (Lock Bits), биты настроек (фьюзы, fuses, fuse bits), биты калибровки генератора. USB-загрузчик DFU Flip не позволяет записывать эти дополнительные конфигурационные биты. Ниже на рисунке показан внешний вид коннектора ISP6PIN, и в таблице перечислены все его сигналы.
Внимание: будьте осторожны, когда с помощью ISP-программатора меняете значение фьюзов! Неосторожное программирование этих бит может привести не только к неработоспособности загрузчика, но и невозможности программирования кристалла, или к отключению тактового генератора. В этом случае помочь может только специальный программатор, поддерживающий режимы высоковольтного программирования (HVPP и HVSP). JTAG. Этот коннектор позволяет не только программирование памяти (доступны все возможности программирования, которые предоставляет ISP), но также через него можно производить полноценную отладку программ. Под полноценной отладкой понимается возможность пошагового выполнения программы (по исходному коду или листингу дизассемблера) с просмотром переменных, содержимого ячеек памяти, регистров ввода-вывода микроконтроллера.
Примечание: отладка и программирование через JTAG возможны через специальные аппаратные отладчики JTAGICE, JTAGICE mkII, AVR Dragon. [Уровни 3.3V на портах ввода-вывода ATmega32U4] В некоторых случаях требуется получить рабочие уровни 3.3V для GPIO PBx, PCx, PDx, PFx. По умолчанию перемычка SJ1 подает на цепь напряжение 5V (см. схему выше). Практика показала, что мощности внутреннего стабилизатора напряжения микроконтроллера ATmega32U4 (выход UCAP, вывод 6 корпуса TQFP44) недостаточно для питания цепей VCC (выводы 14, 34). Поэтому для напряжения 3.3V необходим дополнительный внешний стабилизатор. Для получения уровней 3.3V нужно перерезать эту перемычку, и собрать простую схему на основе LDO-стабилизатора наподобие XC6206P33 или аналогичного: Пример доработки с установленным стабилизатором LDO XC6206P33: [Ссылки] 1. LUFA - бесплатная библиотека USB для микроконтроллеров Atmel AVR. |