Устройство предназначено для программирования микроконтроллеров (МК) AVR фирмы ATMEL. В зависимости от версии программного обеспечения управляющего контроллера, плата может работать по протоколам STK500v2 или JTAGICEmkII. Основные характеристики:
Прошивка STK500v2
- Работа с программными средами AVRStudio, CodeVisionAVR, AVRDUDE по протоколу STK500v2.
- Программирование МК серии AT89 (только для AT89S51, AT89S52) по интерфейсу ISP;
- Программирование всех МК AVR серий AT90, ATtiny, ATmega по интерфейсу ISP;
- Тактовая частота порта ISP от 1.21 кГц до 1.845 МГц;
- Наличие дополнительного генератора с изменяющейся частотой от 15 Гц до 3.68 МГц (поддерживается пакетом AVRStudio);
Прошивка JTAGICEmkII
- Работа с программными средами AVRStudio и AVRDUDE по протоколу JTAGICEmkII.
- Программирование всех МК AVR серий AT90, ATtiny, ATmega, ATXmega по интерфейсам ISP, JTAG, PDI;
- Тактовая частота интерфейсов JTAG и PDI от 26.2 кГц до 3.6 МГц;
- Тактовая частота интерфейса ISP от 51 Гц до 8 МГц;
Общие характеристики платы
- Преобразователи уровней на всех линиях интерфейсного разъема, позволяющие программировать МК с напряжением питания от 1,65 до 5 вольт;
- Full Speed USB-устройство (12 Мб/с). Эмуляция Virtual Communication Port;
- Работа под управлением всех современных 32/64-битных операционных систем - Windows XP/Vista/Seven - с использованием штатного драйвера usbser.sys;
- Работа под управлением операционной системы Linux. Дополнительный драйвер не требуется.
- Относительно дешевая и доступная элементная база;
- Нет необходимости использования дополнительных устройств для "оживления" программатора. Загрузка или обновление прошивки осуществляется специальной утилитой через порт USB управляющего микроконтроллера платы.
- Разработана двусторонняя печатная плата для возможности самостоятельного изготовления с помощью технологии ЛУТ или фотоспособом.
Достоинства и недостатки
К основным достоинствам описываемого ниже программатора можно отнести высокую скорость работы, аппаратно поддерживаемый интерфейс 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(B, С). Корпус - LQFP64. Может быть заменен на МК AT91SAM7S128/256(B,С).
Стабилизатор DA1 - любой из серии 1117 на напряжение 3.3 вольт в корпусе SOT223.
Буферы DD2 - DD6 - SN74LVC1T45DBV. Корпус SOT-23-6.
Аналогов фильтра DA2 я не нашел. Как уже говорилось, в архиве для скачивания есть вариант схемы и печатной платы, где этот фильтр не устанавливается и заменен на четыре дискретных резистора.
Все резисторы и неполярные конденсаторы в корпусе 0805. Танталовые конденсаторы С1, С4 и С12 в корпусе А10. Их можно заменить на керамические того же номинала в корпусе 0805 или 1206. Допуск по номиналам для резисторов и конденсаторов - 5%.
Светодиоды выводные, в круглом корпусе диаметром 3 мм или плоский корпус. Шаг между выводами 2.54 мм.
Кварц выводной (ширина между выводами 5 мм) - 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. Программатор тестировался со следующим ПО:
AVRStudio
Запускаем программу. Идем по пути - Main Menu->Tools->Program AVR->Connect... Далее, в появившемся окне, в зависимости от используемой прошивки, выбираем тип программатора - STK500 или JTAGICEmkII, указываем номер СОМ-порта, который ОС присвоила программатору. Далее жмем кнопку "Connect". При предложении обновить прошивку отказаться.
AVRDUDE
При использовании прошивки STK500v2 вводим "stk500v2". При использовании прошивки JTAGICEmkII три варианта. Если программатор используется в режиме JTAG, то в командной строке вводим "jtag2", в режиме ISP - вводим "jtag2isp", в режиме PDI - вводим "jtag2pdi".
Поддержка XMEGA и программирование по интерфейсу PDI введено в AVRDUDE с версии 5.10.
CodeVisionAVR
Данный продукт работает с 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".
Получить дополнительную информацию, заказать программатор, скачать файлы и прошивки можно на сайте автора
Комментарии