Устройство предназначено для программирования микроконтроллеров (МК) AVR и AVR32 фирмы ATMEL. В зависимости от версии программного обеспечения управляющего контроллера, плата может работать по протоколам STK500v2 или JTAGICEmkII. Основные характеристики:
Прошивка STK500v2
Прошивка JTAGICEmkII
Общие характеристики платы
Достоинства и недостатки
К основным достоинствам описываемого ниже
программатора можно отнести высокую скорость работы, аппаратно
поддерживаемый интерфейс USB 2.0, отсутствие необходимости использования
внешнего программатора для загрузки прошивки в МК программатора,
возможность программировать МК в широком диапазоне напряжения питания.
Информация по скорости программирования для прошивки
JTAGICEmkII:
Программирование ATmega16 тактовая частота 16 МГц, файл размером 14806 байт. Программа
AVRDUDE 5.10
JTAG: запись 0.8 сек, верификация 0.23 сек. Чтение всей флэш-памяти 0.3 сек.
ISP: запись 1.00 сек, верификация 0.8 сек. Чтение всей флэш-памяти
0.85 сек.
Программирование ATxmega64A1, тот же файл
JTAG: запись 0.6 сек, верификация 0.4 сек. Чтение всей флэш-памяти
1.5 сек.
PDI: запись 0.5 сек, верификация 0.3 сек. Чтение всей флэш-памяти 1.2 сек.
К недостаткам можно отнести относительную сложность изготовления ПП и "маленький шаг" выводов корпуса у управляющего МК - всего 0.5 мм.
Схема устройства приведена на рисунке. Сердцем устройства является МК AT91SAM7S64.
Контроллер организует связь по USB, обработку команд от управляющего ПО и выдачу сигналов на разъем ХС2.
Связь с компьютером осуществляется через разъем XC1 типа USB-B. Для защиты от статики и помех
на линии USB в схеме установлен фильтр DA2
типа STF202. Кроме того,
в этот фильтр интегрирован подтягивающий резистор, с помощью
которого компьютер определяет наличие подключенного устройства на
порту USB. Если возникли проблемы с приобретением фильтра в архиве
для скачивания есть альтернативный вариант где вместо фильтра STF202
используются четыре дискретных резистора.
Питание схемы устройства осуществляется от стабилизатора DA1
напряжением 3.3 вольта.
Подключение устройства к к целевой плате, на которой расположен программируемый МК, осуществляется через разъем XC2.
В режиме ISP назначение контактов этого разъема совпадает со стандартным
10-контактным ISP-разъемом, рекомендуемым фирмой ATMEL.
Назначение контактов разъема XC2:
Контакт | ISP | JTAG | PDI |
1 | MOSI | TDI | -- |
2 | VTREF | VTREF | VTREF |
3 | REF_CLK | TMS | -- |
4 | GND | GND | GND |
5 | RESET | RESET | -- |
6 | GND | GND | GND |
7 | SCK | TCK | PDI_CLK/RESET |
8 | GND | GND | GND |
9 | MISO | TDO | PDI_DATA |
10 | GND | GND | GND |
Микросхемы DD2-DD6 - двунаправленные конвертеры логических уровней типа 74LVC1T45 - необходимы для согласования логических уровней между МК DD1 и программируемым МК.
Применение конвертеров уровней позволяет программировать МК с напряжением питания в пределах 1,65...5 Вольт. Для нормальной работы конвертеров уровней необходимо два питания.
Это нужно помнить при работе с программатором. На контакт 2 разъема ХС2 необходимо подавать напряжение питания с программируемого МК.
Максимальное значение подаваемого напряжения - 5 вольт. Превышение этого значения может привести к выходу из строя конвертеров.
В программаторе предусмотрена генерация меандра (только для прошивки версии STK500v2) для возможности тактирования программируемого МК от программатора
(см. подробнее раздел Дополнительные возможности->Использование дополнительного генератора). Этот сигнал выведен на контакт 3 (REF_CLK)
разъема ХС2.
Частоту генерации устанавливает управляющее ПО. Генерация включается, если ПО задало частоту, отличную от нуля. Если заданное значение
частоты будет равно нулю, вывод REF_CLK переводится в высокоимпедансное состояние.
Светодиоды, установленные на плате, сигнализируют о различных состояниях
устройства.
Для индикации успешного определения устройства операционной системой служит светодиод VD1. При передаче данных по каналу USB,
этот светодиод мигает с частотой около 20 Гц. При начальном программировании платы светодиод кратковременно мигает, сигнализируя об успешном программировании
очередного блока данных.
Светодиод VD4 сигнализирует об успешном входе в режим программирования. Если попытка входа в режим программирования не удалась,
или, в процессе операций чтения-записи-стирания возникла ошибка, загорается VD3,
и продолжает гореть до повторной попытки входа в режим программирования.
При начальном программировании платы VD3 сигнализирует о неудачном программировании блока данных.
Управляющий МК - AT91SAM7S64 с любыми буквенными индексами в корпусе LQFP64. Может быть заменен на МК AT91SAM7S128/256.
Стабилизатор DA1 - любой LDO (стабилизатор с низким
падением напряжения на ключевом элементе) на напряжение 3.3 вольт в корпусе SOT223.
Буферы DD2 - DD6 - SN74LVC1T45DBV. Корпус SOT-23-6.
Аналогов фильтра DA2 я не нашел. Как уже говорилось, в архиве для скачивания есть вариант схемы и печатной
платы, где этот фильтр не устанавливается и заменен на четыре дискретных резистора.
Все резисторы и неполярные конденсаторы в корпусе 0805. Танталовые конденсаторы С1, С4 и С12 в корпусе А10.
Их можно заменить на керамические того же номинала в корпусе 0805 или 1206. Допуск по номиналам для резисторов и конденсаторов - 5%.
Светодиоды выводные, в круглом корпусе диаметром 3 мм или плоский корпус. Шаг между выводами 2.54 мм.
Кварц выводной (ширина между выводами 5,08 мм) -
на частоту 18,432 МГц.
Разъем USB – типа USBB-1J (Выводной на плату. Тип В).
Разъем ISP – типа BH-10 (IDC-Вилка 2х5 шаг 2.54 мм, Г-образные выводы на плату).
Программатор собран на двусторонней печатной плате. Плата была разработана мною специально для изготовления методом "лазерного утюга" (ЛУТ), имеет "всего"
10 переходных отверстий и рассчитана на установку компонентов в
SMD-корпусе, за исключением разъемов. Рекомендуемый диаметр сверл: для переходных отверстий - 0,5 мм, для остальных - 1 мм. Два отверстия под крепление USB разъема - 2,5 мм. Большая часть деталей устанавливаются с одной стороны. C обратной стороны устанавливаются разъемы ХС1, ХС2, джамперы J1, J2, все светодиоды, кварц ZQ1.
Габариты платы 30X60 мм.
Безошибочно собранный программатор в настройке не нуждается. Внешнего программатора для оживления ucGoZilla не нужно, необходимо лишь корректно установить драйвера и запустить специально написанную мною утилиту.
Последовательность установки:
1. Собираем схему.
2. Подключаем плату к свободному порту USB компьютера. Аккуратно кратковременно замыкаем джампер JP1(ERASE). Отключаем плату от порта USB. JP1 разомкнут.
3. На неподключенной плате замыкаем джампер JP2(TEST). Подключаем плату к USB. Ждем 15 секунд. Отключаем плату от USB. Размыкаем JP2.
4. Подключаем плату к USB в третий раз. Операционная система (ОС) найдет новое устройство - "ucGoZilla Board". При предложении найти драйвер автоматически, отказаться, и указать путь к файлу "ucGoZilla.inf" из папки .../Drv. Ожидаем окончания установки.
5. Запускаем идущую в комплекте утилиту "ucGoZilla.exe" из папки .../Drv. После запуска программа определит тип МК, установленного на плате, и предложит выбрать прошивку для записи. В процессе загрузки кратковременно мигает светодиод VD1 (Good Link), сигнализируя об успешной записи очередного блока. Если во время записи произошла ошибка, то загорится светодиод VD3 (Target Error)). Процесс записи остановится. Для повторной попытки записи прошивки придется выполнить шаги 2 - 4 заново. После успешного завершения программа сообщит, что можно переподключить устройство. Отключаем прошитое устройство от порта USB.
6. Подключаем прошитую плату к порту USB. ОС обнаружит новое устройство. В зависимости от прошитого программного обеспечения это будет "PROTTOSS ucGoZilla AVR500V2" (STK500v2) или "PROTTOSS ucGoZilla AVRJTAG2" (JTAGICEmkII). Драйвера должны установится автоматически. После успешной установки драйверов светодиод VD1 (Good Link) горит постоянно - устройство установлено в системе и программатором можно пользоваться.
Программатор для ОС является виртуальным COM-портом, и после успешной установки, ОС автоматически присвоит ему номер. Если используемое Вами ПО не поддерживает номер порта, присвоенного ОС, то этот номер необходимо установить вручную, изменив номер СОМ-порта программатора в диспетчере устройств.
Программное обеспечение, необходимое для использования программатора, в зависимости от используемой прошивки, должно поддерживать протоколы STK500v2 или JTAGICEmkII. Программатор тестировался со следующим ПО:
В главном меню программы идем по пути -
Main Menu->Tools->Program AVR->Connect... Далее, в появившемся окне, в зависимости от
используемой прошивки, выбираем тип программатора - STK500 или JTAGICEmkII,
указываем номер СОМ-порта, который ОС присвоила программатору. Далее жмем кнопку "Connect". При предложении обновить прошивку отказаться.
Работа в этой среде возможна только с прошивкой
JTAGICEmkII.
В окне "AVR32 Targets" нажимаем на кнопку "Create new
target". Заходим на вкладку "Properties" созданного программатора.
Выбираем пункт "Details". В открывшемся окне выбираем тип
программатора JTAGICEmkII. Устанавливаем тип подключения
(Connection) - RS232. Устанавливаем требуемый номер СОМ-порта.
При использовании прошивки STK500v2 вводим
тип программатора в командной строке "stk500v2".
При использовании прошивки JTAGICEmkII три варианта.
Если программатор используется в режиме JTAG, то в командной строке вводим "jtag2",
в режиме ISP - вводим "jtag2isp",
в режиме PDI - вводим "jtag2pdi".
Поддержка XMEGA и программирование по интерфейсу PDI введено в AVRDUDE с версии 5.10.
Данный продукт работает с JTAGICEmkII только через JUNGO WinDriver,
по этому работать с прошивкой для JTAGICEmkII не будет.
Для версии STK500v2 процедура подключения следующая. Запускаем программу.
Идем по пути - Main Menu->Settings->Programmer... Указываем AVR Chip Programmer Type - Atmel STK500/AVRISP.
Устанавливаем номер COM-порта. Пользуемся.
Использование дополнительного генератора
Дополнительный генератор доступен в прошивке STK500v2. при использовании программы AVRStudio. Основное его назначение - восстановление работоспособности программируемого МК, если ошибочно запрограммированы фьюз-биты, отвечающие за тактирование (CKOPT, CKSEL) и программируемый МК не запускается. В этом случае выход дополнительного генератора (контакт 3 разъема XC2) подключается на вход тактового генератора программируемого МК (обычно это вывод XTAL1). Для активации дополнительного генератора:
1. Подключаемся к программатору из под AVRStudio.
2. В окне программатора переходим на вкладку HW Settings.
3. В поле Clock Generator передвигаем движок вправо на нужную частоту отличную от нуля,
или задаем частоту вручную в герцах.
Частота должна быть более 14 Гц. При использовании генератора в
качестве тактового генератора программируемого МК необходимо помнить, что частота тактирования программируемого МК должна, как минимум,
в четыре раза превышать тактовую частоту порта ISP.
4. Нажимаем кнопку Write. Генератор включен и
генерирует заданную частоту.
Если необходимо выключить генератор то передвигаем движок в поле Clock Generator до максимального левого положения
или устанавливаем частоту вручную нулевым значением. В поле частоты отобразится
надпись Stopped. Нажимаем кнопку Write - генератор
выключен.
Если Вы не остановили генератор средствами AVRStudio, он не выключается автоматически при выходе из программы.
Калибровка встроенного RC-генератора МК AVR
Возможность калибровки программируемого МК реализована в обеих прошивках, при чем в прошивке JTAGICEmkII калибровку можно производить в режимах ISP и JTAG. Подробно процесс калибровки описан в документе AVR053. Так же есть русский перевод этого документа.
Тем не менее есть некоторые отличия от вышеуказанного метода, на что нужно обратить внимание. Оригинальные STK500 и JTAGICEmkII генерируют калибровочную частоту на линии MOSI и TDI соответственно. ucGoZilla не имеет возможности аппаратно генерировать частоту на этой линии разъема программирования, по этому генерация переназначена на линию SCK/TCK - контакт 7 разъема программирования XC2. Это необходимо учитывать при компиляции калибровочной программы. Для прошивки STK500v2. и прошивки JTAGICEmkII в режиме ISP, в исходных файлах, приложенных к документу AVR053, в inc-файле "XXX_family_pinout.inc" необходимо изменить значение макроса ISP_CAL_MOSI на соответствующее линии SCK калибруемого микроконтроллера. Для прошивки JTAGICEmkII в режиме JTAG необходимо изменить значение макроса JTAG_CAL_MOSI.
Эталонная частота, генерируемая программатором - 32779 Гц. Это значение необходимо записать в макрос CALIB_CLOCK_FREQ в файле "isp_STK500_interface.inc".
Этот раздел действителен, пополняется и редактируется для последней версии программного обеспечения ucGoZilla.
В архиве последняя версия исходных кодов программатора (IAR) и загрузчика (Borland Builder), версии схем и печатной платы (PCAD2006).
Проект выкладывается "как есть".
Рыжков Андрей aka PROTTOSS.
Последнее обновление страницы 18.06.2016
Если Вам понравился этот проект и у Вас есть желание и возможность поддержать мой сайт
Материал на страницах этого сайта выложен только для ознакомительных целей.
Любая перепечатка и распространение, использование в коммерческих целях материалов сайта только с разрешения и по согласованию с автором.
При использовании материалов сайта прямая ссылка и указание авторства обязательна.