Введение
Микросхема USB-UART преобразователя FT232 упрощает разработчикам задачу по сопряжению микроконтроллера с компьютером. Но помимо этой функции, FT232 обладает возможностью произвольного управления своими выводами, что существенно расширяет диапазон ее возможных применений. Например, благодаря этой функции, можно создавать на FT232 различные преобразователи интерфейсов, управляющие устройства и программаторы. Собственно о USB программаторе для AVR микроконтроллеров в этой статье и пойдет речь.
Сейчас существует уже много доступных схем USB программаторов для AVR. Это всеми любимый USBASP, USBTINY, AVR910USB, клоны JTAGICE и AVRISP MKII и т.д. Все эти программаторы содержат микроконтроллер, поэтому для их сборки, уже требуется иметь какой-нибудь AVR программатор. Исключение составляют программаторы на микроконтроллерах AT90USB, так как они имеет в своем составе загрузчик и могут напрямую программироваться по USB.
USB программатор на FT232 лишен этого недостатка, правильно собранное устройство сразу же готово к работе. Кроме того этот программатор довольно шустрый (процесс прошивки занимает единицы секунд), построен из доступных компонентов, достаточно простой в сборке и имеет несколько управляющих программных оболочек. Это классическая консольная AVRDude, а также несколько вариантов оконных программ в виде надстройки над ней, например SinaProg.
Схема AVR USB программатора на FT232
Схема общедоступна на просторах интернета, я только внес пару личных правок и развел свой вариант печатной платы. Мой первоначальный вариант не предполагал подачу питания на 2-ой вывод разъема программирования, но когда я писал этот материал, я решил исправить разводку. Поэтому фотография платы, приведенная выше, немного отличается от того, что вы можете видеть в pcb файле для Eagle.
Программатор запитывается от USB порта. Уровни выходных сигналов программатора с помощью джампера JP1 могут быть заданы или 5-ти вольтовыми, или 3-ех вольтовыми.
Напряжение питания программатора может быть подано через разъем X2 на программируемую плату, для чего нужно замкнуть джампер JP2.
Следует иметь ввиду, что при 5-ти вольтовом питании напряжение подается с USB порта. И максимально ток, который можно получить с программатора, ограничен величиной 500 мА. Однако для такого тока микросхему FT232 нужно настроить с помощью утилиты FT Prog.
При 3-ех вольтовом питании напряжение берется с выхода внутреннего стабилизатора микросхемы FT232, максимальный ток которого равен порядка 50 мА.
Для предотвращения подачи питания на USB порт от внешнего устройства на программаторе установлен диод Шоттки (у них маленькое падение напряжения в прямом направлении). При желании диод VD1 можно заменить обычным диодом или перемычкой, но эту уже на ваш страх и риск.
Также программатор можно использовать как USB-UART преобразователь. Для этого на разъем Х2 выведены сигналы RXD, TXD и подключены светодиоды LED2, LED3. Они вспыхивают, когда происходит передача данных.
Программатор не нужно отключать от программируемой платы, потому что после программирования микросхема DD1 переводит выходные буферы в третье состояние.
Светодиод LED1 загорается, когда идет процесс программирования.
На контактную площадку JP можно вывести тактовый сигнал. Для этого требуется конфигурирование FT232 с помощью утилиты FT Prog.
Как пользоваться программатором
После сборки программатора не следует сразу включать его в USB порт. Убедитесь в отсутствии замыканий между землей и плюсом питания, установите джамперы в требуемое положение и только затем подключайте программатор к компьютеру.
Если на вашем компьютере уже установлены драйвера для FT232, компьютер "опознает" программатор как USB-UART преобразователь, если нет, предложит их установить. Драйвера можно скачать на сайте производителя микросхемы FT232 - ftdi.com
С этим программатором я предпочитаю использовать оболочку SinaProg, потому что она простая и удобная. Скачать SinaProg можно по ссылке в конце статьи.
Подключаем программатор к USB порту и к целевой плате. Запускаем SinaProg, устанавливаем скорость обмена с программатором. Нажимаем кнопку Search. Программа выдаст диагностическое сообщение "Searching.. OK", а в окошке Device отобразиться ваш тип микроконтроллера.
Выбираем hex файл прошивки, нажимаем Program. Начнется процесс программирования, по окончании которого, программа выдаст сообщение "Programming Flash ... OK".
Также SinaProg позволяет программировать Fuse биты микроконтроллеров AVR. Частоту внутреннего генератора можно выбрать из выпадающего списка в рамке Fuse. Программа сама установит нужные fuse биты, а вам останется только нажать кнопку Program. Правда эта опция доступна только для нескольких микроконтроллеров, остальные микроконтроллеры нужно ручками прописывать в текстовом файле fuse.txt, который расположен в папке SinaProg.
Полноценное программирование fuse битов можно произвести в окошке, которое открывается при нажатии на кнопку Advanced.
Консоль, на которую SinaProg выдает более подробную диагностическую информацию открывается при нажатии на кнопку ">". Я всегда держу ее открытой, чтобы видеть, что происходит с программатором.
Файлы
USB-AVR-Programmator.rar - печатная плата для Eagle CadSoft
SinaProg.rar
Comments
programmer
id = "usbbit";
desc = "USBBit - simple and fast USB-SPI programmer based on FT232R(L/Q) ( Circuits and Support - http://reddylab.eu/rclab/ )";
type = ft245r;
# = 0; # TXD [ 1 PIN FT232RL ]
# = 1; # RXD [ 5 PIN FT232RL ]
sck = 2; # RTS [ 3 PIN FT232RL ]
gates = 3; # CTS [ 11 PIN FT232RL ]
miso = 4; # DTR [ 2 PIN FT232RL ]
reset = 5; # DSR [ 9 PIN FT232RL ]
mosi = 6; # DCD [ 10 PIN FT232RL ]
# = 7; # RI [ 6 PIN FT232RL ]
avrdude: BitBang OK
avrdude: pin assign -
MISO:4
SCK:2
MOSI:6
RESET:5
GATES:3
avrdude: drain OK
SET=> ft245r: bitclk 76800 -> ft baud 38400
avrdude: ft245r_program_ enable: failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
RESET ... OK
avrdude done. Thank you.
Выставляем инверсию RTS# DTR# DSR# DCD#
Какая распиновка PLD-10?
Что индицируют LED2 и LED3?
Светодиоды сигнализируют прием/передачу по последовательно му интерфейсу.
Quote:
поддрерживается
собрал программатор по схеме в статье, скачал архив с avrdude и sinaprog. Работает отлично, шьет быстро. Оболочка (sinaprog) довольно удобная. На мой вкус, не мешало бы в схему добавить просто светодиод с резистором как индикатор питания.
Выяснилось однако, что не читает eeprom в моем проекте на mega8. Вылечилось удалением строки "page_size = 4;" в соответствующем разделе avrdude.conf.
Драйверы стоят, параметры программатора в WinAVR прописаны, при попытке прошивки даже RESET опускается с 5В до 0, но дудка выдает ошибку:
SET=> ft245r: bitclk 28800 -> ft baud 14400
avrdude: ft245r_program_ enable: failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
Программатор, шлейф и плата исправно работают на другой машине с XP.
Подскажите в чем дело!
Версии 2.08.30 и 2.10.00 работать отказывались.
Кстати в статье неправильный адрес сайта FTDI. Правильный - http://www.ftdichip.com.
Спасибо еще раз за статью!
RSS feed for comments to this post