Этот проект (авторы startingelectronics.com) - отладочная плата на микроконтроллере ARM с открытой аппаратурой (open source hardware). На ней используется микроконтроллер AT91SAM7S256 компании Atmel. Схема и разводка платы свободно доступна на сайте проекта [1], или см. [2].
На плате есть порт устройства USB (J5 USB, может использоваться в готовых проектах и для закачки firmware с помощью бутлоадера), последовательный порт RS-232, на который выведены сигналы TX и RX (J8 DBGU, может использоваться для вывода отладочных сообщений, для управления и других целей), стандартный 20-pin ARM JTAG коннектор (J3 JTAG, для отладки программного обеспечения с помощью внутрисхемного отладчика JTAG). Все порты ввода/вывода микроконтроллера AT91SAM7S256 (I/O pins, GPIO PA0 .. PA31) выведены на боковые контакты платы (J6, J7, шаг 2.54 мм).
Плата разработана для быстрого прототипирования и отладки проектов на микроконтроллере AT91SAM7S256. Благодаря наличию коннекторов J6, J7 плата может быть установлена в stripboard [3] или платы наподобие Bread board ProsKit BX-4135.
[Программирование платы]
Для того, чтобы загрузить программу firmware в память микроконтроллера, не нужен никакой внешний программатор. Плата может быть запрограммирована через порт USB, если соединить этот порт с компьютером стандартным кабелем. Это работает точно так же, как и программирование платы AT91SAM7S-EK (см. оригинальную документацию Atmel по бутлоадеру SAM-BA, или [4]). Очистка памяти микроконтроллера может быть произведена установкой на 10 секунд перемычки J1 ERASE при включении питания. Плата может быть также запрограммирована через стандартный JTAG-отладчик (J-Link, MT-LINK, ST-LINK, RLINK) через коннектор J3 JTAG.
Программы для платы (для микроконтроллера AT91SAM7S256) обычно пишут на языке C, используя бесплатный инструментарий GNU tools for ARM, или другими коммерческими средствами разработки (IAR Embedded Workbench for ARM, Keil). Много готовых примеров кода можно найти в Интернете, на сайте Atmel [5] и вместе с популярным пакетом разработки от IAR.
Как уже упоминалось, перемычка J1ERASE служит для очистки памяти FLASH микроконтроллера, кроме того, она сбрасывает некоторые биты NVM. Перемычка J2 TST предназначена для управления логическим уровнем на специальном входе микроконтроллера TST. Этот вывод TST используется для тестирования в процессе производства (на заводе Atmel), а также для режима быстрого программирования (fast programming mode) или режима SAM-BA Boot Recovery микроконтроллеров серии SAM7S, когда на вывод TST подан уровень лог. 1 (установка перемычки J2 как раз подает уровень лог. 1 на вывод TST). Для нормальных режимов работы эта перемычка J2 (как и перемычка J1) должна быть снята.
Для того, чтобы войти в fast programming mode, на PA0 и PA1 нужно подать лог. 1, на PA2 подать лог. 0, и установить перемычку J2 TST (подать на TST лог. 1). Чтобы войти в режим SAM-BA Boot Recovery, все три вывода PA0, PA1, PA2 должны быть в лог. 1, и нужно установить перемычку J2 TST как минимум на 10 секунд. При использовании сигнала TST важно передернуть питание (выключить и снова включить). Установка перемычки TST, когда PA0 или PA1 в лог. 0 может привести к непредсказуемым результатам. Поскольку при сбросе на всех портах микроконтроллера активны нагрузочные pullup резисторы, то уровень лог. 1 на выводах PA0, PA1, PA2 установится автоматически (чтобы получить на PA2 лог. 0, его нужно просто замкнуть на землю). Кстати говоря, если Вы собираетесь использовать штатный бутлоадер SAM-BA для обновления firmware Вашего устройства, которое Вы соберете на плате Simple ARM Board, то Вам нужно не забывать про особое функциональное назначение портов PA2..PA0. Лучше их схемотехнически использовать как входы, на которых при включении питания гарантированно будет подан уровень лог. 1, либо как выходы, управляющие верхней (подключенной к +3.3V) активной нагрузкой.
[Питание платы]
Плата может быть запитана через порт USB, или от внешнего стабилизированного источника питания 5V (через выводы контактов J7). Вариант питания выбирается с помощью перемычки J4. Для питания микроконтроллера AT91SAM7S на плате имеется линейный стабилизатор 3.3V LDO (U4 LD1117S33 или аналогичный).
[Указания по сборке]
Очень полезно то, что на плату Simple ARM Board можно установить любой из микроконтроллеров серии SAM7S: AT90SAM7S16, AT90SAM7S32, AT90SAM7S64, AT90SAM7S128, AT90SAM7S256, AT90SAM7S512, AT90SAM7S161, AT90SAM7S321. Все эти микроконтроллеры имеют совместимую цоколевку, и отличаются только объемом памяти (и некоторыми другими внутренними особенностями). Все это открывает широкие возможности по использованию платы Simple ARM Board. К примеру, на основе неё можно даже собрать JTAG-адаптер MT-LINK (J-Link) [6].
Если нет специальных требований к точности опорного напряжения, то можно не устанавливать микросхему U2 REF2930. Вместо этого в качестве опорного напряжения можно использовать напряжение питания 3.3V. В этом случае нужно установить резистор R1 (его номинал можно выбрать любым в пределах от 0 Ом до 1 кОм). Если используете U2, то R1 запаивать не нужно.
R2 и R15 4.7 кОм устанавливать необязательно, поскольку в самой микросхеме AT91SAM7S256 уже есть встроенные pulldown резисторы на 15 кОм. В любом случае номиналы R2 и R15 некритичны, они могут быть любого номинала от 4.7 кОм до 47 кОм.
Номиналы фильтрующих конденсаторов C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C18, C19, C20, C21, C22, C23, C25, C26, C27 не критичны, все они могут быть номиналом от 0.1 мкФ до 0.47 мкФ. С28, C29 и C30 могут быть номиналом от 1 мкФ до 10 мкФ. Электролитические конденсаторы C31, C32 должны иметь любой номинал от 4.7 мкФ до 100 мкФ.
Вместо Q1 подойдет любой биполярный транзистор прямой проводимости (p-n-p). Если Вам не нужно управление нагрузочным резистором USB, то можете запаять R12, и не запаивать R10, R11, Q1. При этом порт PA16 останется свободным. Возможно, это самый простой и удобный вариант реализации порта USB, так как при этом всегда может через USB работать загрузчик SAM-BA. Если же нужно специально управлять нагрузочным резистором (это иногда требуется для устройств USB), то R12 запаивать не надо, нужно запаять R10, R11 и транзистор Q1. Внимание! Чтобы в таком варианте компьютер мог увидеть подключенное устройство USB, на ножке порта PA16 должен быть установлен уровень лог. 0 (это можно сделать либо программно, либо просто замкнув проводом PA16 на землю). Возможно, что такая схема реализации управления нагрузочным резистором не очень удобна для использования бутлоадера SAM-BA, зато для программной работы с портом USB подходит хорошо.
Важно, чтобы кварцевый резонатор X1 был именно на частоту 18.432 МГц - от этого зависит работоспособность USB, в частности USB бутлоадера SAM-BA, встроенного в микроконтроллер AT91SAM7S256. Конденсаторы C1 и C2 запаивать необязательно, но желательно - без них генератор в большинстве случаев все равно заработает нормально. Размах импульсов на выводах XIN и XOUT при этом составляет около 0.3 .. 0.5 вольта.
Обратите внимание, что микросхема U3 MAX3232ESE (или её аналог ST3232) питается от напряжения 3.3V. Возможно, что именно такую микросхему будет трудно достать, и вместо неё можно попробовать установить микросхему ST232C. Она не предназначена для питания от 3.3V, но имеет такую же цоколевку, и все равно должна заработать. Если не заработает, то нужно отрезать дорожку, идущую на вывод 16 микросхемы U3, и подать на неё напряжение 5V. Если не нужна отладка через DBGU, то можно вообще не устанавливать U3, J8, C4..C9, C30.
Коннектор J3 JTAG лучше запаивать последним - после монтажа микроконтроллера и других деталей, иначе коннектор J3 затруднит пайку окружающих его компонентов.
Плата имеет позолоченное покрытие, что облегчает пайку. На плате есть два макетных поля, которые с целью уменьшения габаритов можно отрезать. Макетные поля удобны для быстрого изготовления готовых устройств на микроконтроллере ARM.
[Запуск USB-загрузчика SAM-BA]
Чипы серии AT91SAM7S (AT91SAM7S512, AT91SAM7S256, AT91SAM7S128, AT91SAM7S64, AT91SAM7S321, AT91SAM7S32, AT91SAM7S161, AT91SAM7S16) имеют особую процедуру запуска загрузчика USB (бутлоадер SAM-BA), описанную в даташите. Поэтому даже если Вы абсолютно правильно собрали плату Simple ARM Board и подключите её через USB, она определится в системе как "Неизвестное устройство", т. е. работать не будет. Причем кварцевый генератор тоже не будет работать. Осциллограф, подключенный к ножкам XIN выв. 62 и XOUT выв. 61, покажет нулевое напряжение и отсутствие тактового сигнала. Это состояние абсолютно нормальное, при этом работает внутренний генератор RC. В таком виде чипы серии AT91SAM7S поставляются с завода, и в такое состояние они возвращаются, когда установить на 10 секунд перемычку J1 ERASE.
Чтобы плата Simple ARM Board заработала как USB-устройство SAM-BA, нужно выполнить нехитрую последовательность процедур:
1. Скачать с сайта Atmel пакет SAM-BA и установить его, строка для поиска "Atmel SAM-BA In-system Programmer" или просто "SAM-BA". Для закачки с стайта Atmel требуется бесплатная регистрация. Вместе с пакетом будет установлен драйвер устройства SAM-BA. 2. Установите перемычку J4 в положение 1-2 (питание от USB). 3. Установите перемычку J2 TST. 4. На 10 секунд подключите плату к компьютеру по USB. Этой операцией мы подали питание на плату и дали сигнал восстановить загрузчик SAM-BA. На компьютере снова обнаружится "Неизвестное устройство", но беспокоиться не нужно, надо просто подождать 10 секунд и затем отключить плату от USB (снять питание). 5. Снимите перемычку J2 TST и снова подключите плату к компьютеру по USB. На этот раз система обнаружит новое устройство AT91 USB to Serial Converter и запросит драйвер. Укажите мастеру установки драйвера папку с inf-файлом, который находится в каталоге установки SAM-BA (обычно это файл наподобие %ProgramFiles% \ ATMEL Corporation \ sam-ba_2.11 \ drv \ atm6124_cdc.inf). Стандартные шаги по установке драйвера показаны на скриншотах ниже.
После установки драйвера Вы можете пользоваться устройством USB SAM-BA для загрузки кода в память микроконтроллера, чтения/записи его памяти и для других операций. Для этого имеется утилита наподобие SAM-BA 2.11.
Примечание: на шаге 4 установкой перемычки J2 TST мы подали потенциал +3.3V на вывод микроконтроллера TST. Но даташит Atmel требует также подать высокий уровень и на выводы PA0, PA1 и PA2. Мы специально это не делали, так как если выводы портов микроконтроллера висят в воздухе, то на них после сброса автоматически всегда настроены внутренние pull-up резисторы. Эти резисторы сами создадут на выводах PA0, PA1 и PA2 высокий логический уровень, это и обеспечит (вместе с высоким уровнем на выводе TST) условие восстановления загрузчика SAM-BA после включения питания.
Для работы бутлоадера SAM-BA необходим кварцевый резонатор обязательно на частоту 18.432 МГц. Кроме USB, загрузчик SAM-BA может также работать и через DBGU (последовательный порт RS-232, выведенный на коннектор J8). При этом можно применять кварцевые резонаторы в широком диапазоне частот (в загрузчике SAM-BA реализован автодетект скорости передачи RS-232).
Для сброса содержимого памяти микроконтроллера имеется перемычка J1 ERASE. Чтобы сбросить память, установите перемычку J1 на 10 секунд при поданном питании. После этого отключите питание и снимите перемычку J1. Чип придет в состояние, в котором он поставляется с завода. Чтобы снова заработал загрузчик SAM-BA, необходимо выполнить процедуру его восстановления с помощью перемычки J2 TST, как уже было описано ранее.
[Ссылки]
1. Simple ARM Board Project site:startingelectronics.com. 2. 150514Open_Source_Simple_ARM-public.zip - документация, схема, разводка платы Simple ARM Board. 3. Макетная плата stripboard. 4. AT91SAM7X: бутлоадер SAM-BA от компании Atmel. 5. AT91SAM Software Package site:atmel.com. |