Программатор STK500v2 by BonioС самого начала, как только я начал заниматься микроконтроллерами, я собрал себе самый простой STK200 программатор и пользовался им до этого момента. Но в последнее время он перестал меня устраивать и я начал искать альтернативу. Что из этого вышло я и постараюсь рассказать далее.

К программатору у меня были следующие требования:

- Скорость прошивки
- Работа с AVRStudio, AVRDUDE и другими распространенными программами
- USB интерфейс (не программный)
- Возможность прошивки устройств с различными напряжениями питания (1.5v — 5v)

По всем параметрам мне понравился клон Avrisp mkII. Он был собран и опробован на макетке. По скорости прошивки, думаю, он безусловный лидер. Но у него есть один недостаток, из за которого я отказался его собирать, это невозможность работы с avrstudio и с avrdude одновременно. Тип программы, с которой будет работать программатор задается на этапе компиляции прошивки. Меня это не устраивало.

Позже был найден проект AvrUsb500v2, на основе которого я и сделал себе программатор. Этот проект был мной доработан программно и схемотехнически. Главная программная доработка, пожалуй, это замена программного SPI интерфейса на аппаратный, что дало значительный прирост скорости прошивки. (Полностью atmega8 зашивается за 2 секунды, с верификацией 3 секунды) Теперь скорость ISP соответствует выбранной в AVRStudio и может меняться от 4kHz до 1.845 MHz. Скорость и другие настройки сохраняются в EEPROM. Также было исправлено несколько багов, переработан местами алгоритм работы программы, добавлена возможность просмотра напряжения питания программируемой схемы в AVRStudio. Добавлена возможность генерации внешнего тактового сигнала на 3 ножке 10-пинового ISP коннектора. Частота сигнала устанавливается из окна настроек AVRStudio и может меняться от 10kHz до 3.686MHz, либо генерация сигнала вообще может быть отключена. Добавлена возможность прошивки программатора через bootloader.

В схему я добавил буферы на все линии, для возможности программирования схем с различным напряжением питания (1.5-5v) На линии reset тоже стоит буфер. Это для возможности программирования нескольких поддерживаемых AT89* контроллеров, которые сбрасываются плюсом. Если поддержка их не нужна, можно сэкономить на буфере и поставить npn транзистор, не забыв инвертировать в исходнике соответствующий пин.

После того, как прошивка зашита в целевое устройство, все буферы, кроме буфера в линии Ex. Clock переводятся в Hi-Z состояние. Буфер в линии Ex. Clock переводится в Hi-Z состояние если выключена генерация внешнего тактового сигнала.
Если не подключено целевое устройство, все буферы, включая Ex. Clock, переводятся в Hi-Z состояние.
В спящем режиме программатора (см. ниже.) все буферы переводятся в Hi-Z состояние.

В качестве usb-uart преобразователя используется CP2102. (Помучился я, запаивая ее паяльником)

Три светодиода индицируют работу программатора.
- LED1 горит при подключении программатора к компьютеру, мигает, когда не обнаружен сигнал usb, например при выключенном компьютере (спящий режим программатора). Для этого используется пин SUSPEND CP2102.
- LED2 горит при подключении программируемой схемы.
- LED3 — обмен данными с компьютером.

Кнопка S1 — режим обновления прошивки, я её не выводил. При необходимости обновления просто замыкаю пинцетом 2 и 3 ножки атмеги. Чтобы войти в bootloader необходимо просто замкнуть эти ножки, при этом никаких переподключений не требуется. Пока мы в бутлоадере горят все три светодиода. Прошивка обновляется средствами avrstudio программой avrprog.

На транзисторе VT1 собрана защита входа VCC от переплюсовки без падения напряжения. В схеме использована Atmega88. Т.к. SPI теперь используется аппаратный, для достижения минимальных скоростей isp используется программный делитель частоты. В Atmega8 его просто нет.

Плата получилась компактная, двухсторонняя. Делалась под размер имеющегося корпуса от какой то радиометки. Дальше немного фоток:

Под этот корпус делалась плата, корпус вообще без всяких отверстий:


Такая получилась плата:


Спичечный коробок для масштаба:


В корпусе были вырезаны все необходимые отверстия, распечатаны наклейки:

В режиме бутлоадера:


Программатор в работе:

В архиве схема в pdf, прошивки (bootloader и основная), программа CP210xSetIDs для конфигурации CP2102, печатная плата в формате Sprint Layout 5.

Update. Обновил прошивку. Теперь минимальная скорость ISP не 14 а 4KHz, что дает возможность программировать контроллеры с низкочастотным кварцем, например часовым. Такой низкой скорости удалось достигнуть использованием программого spi, на остальных частотах задействован аппартный spi модуль.

Update. от 02.07.2012. Все, что написано дальше не является обязательным а нужно лишь для того, чтобы программатор корректно работал при подключении к компьютеру других устройств на микросхеме CP210x, а также для того, чтобы новое устройство определялось компьютером не как "Silicon Labs CP210x USB to UART Bridge", а как "STK500v2 USB Programmer"

Скачайте и распакуйте драйвер программатора отсюда, к нему мы ещё вернемся.

Подключите программатор к компьютеру, если у вас уже установлен драйвер CP210x в системе появится новый com порт, если нет, скачайте и установите драйвер тут.

Запустите программу CP210xSetIDs.exe, в выпадающем списке выберите подключеннный программатор, заполните поля Vid, Pid и Product String, как показано на скриншоте, не забудьте установить галочки. Нажмите «Program Device».

Переподключите программатор к компьютеру, система должна обнаружить новое устройство "STK500v2 USB Programmer":

Укажите путь к папке скаченного драйвера. В процессе установки вылезет сообщение с предупреждением, смело жмем «Все равно продолжить»:

Теперь наш программатор имеет название и его легко можно найти в диспетчере устройств:

Для корректной работы программатора необходимо зайти в свойства нового устройства и на вкладке «Управление электропитанием снять» снять галочку:

Автор: Bonio


Архив для статьи "Программатор STK500v2 by Bonio"
Описание: Схема в pdf, прошивки (bootloader и основная), программа CP210xSetIDs для конфигурации CP2102, печатная плата в формате SprintLayout 5.
Размер файла: 547.72 KB Количество загрузок: 6 479 Скачать

Комментарии  

+2 #1 misha1970 31.10.2014 09:38
xaroshaia shtuchka :-)
Сообщить модератору
0 #2 Faza27 01.03.2015 00:25
Есть ли возможность замены CP1202 на FT232RL ЙАТ28 очень круто ....
Сообщить модератору
0 #3 AntonChip 02.03.2015 14:26
Цитирую Faza27:
Есть ли возможность замены CP1202 на FT232RL ЙАТ28 очень круто ....

Я думаю заменить можно, по идее только дрова нужны другие
Сообщить модератору
0 #4 Gecxjo 30.06.2020 15:18
Очень понравился программатор. Собрал. Но пока запустить не удалось. ;-( Загрузчик вроде залили, но в режиме обновления светодиоды не светятся. Кварц вроде работает. В качестве моста USB-TTL использовал внешний модулек CP2102 с разъёмом к платке.
На штырьке активации загрузчика 0В ??? А если 0, то как среагирует, ведь на "землю" коммутируется. Может неправильно "залил" загрузчик??? Буду разбираться.
Использовал Atmel88 в DIP-корпусе... Адекватная ли замена???
Буду дальше проверять...
Сообщить модератору