AVR USB программатор на FT232

15/07/2013 - 20:15 Павел Бобков

 

Введение

   Микросхема 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   

# Денис98 2013-09-16 16:32
Добрый день собрал программатор на этой микросхеме FT232RL и на такой платке http://www.kosmodrom.com.ua/data/ftdi/ftdi.php обвязал всё. система показала этот программатор. Подключил всё по этой схеме, так как через понипрог не разобрался как шить, нашёл вашу статью и через вашу программу не получается попомогите пожалуйста разобраться...
# Денис98 2013-09-16 16:33
http://bsvi.ru/pp21609135a410f схема по которой поключал.
# JoJo 2013-09-16 17:48
Попробуй в файле avrdude.conf поменять настройки, чтобы соответствовали твоей схеме. Вот эти настройки.

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 ]
# Денис98 2013-09-23 11:01
avrdude -C avrdude.conf -c usbbit -P ft0 -B 115200 -p m645 -q


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.
# Pashgan 2013-09-24 21:03
Я бы ткнулся осциллографом в ISP разъем и посмотрел, приходят ли туда сигналы или нет.
# Алексей42 2013-12-01 11:09
У меня аналогичная ошибка, осциллографом проверил-сигнал ы есть.
# Алексей42 2013-12-21 11:35
FT Prog - Hardware Specific - Invert RS232 Signals
Выставляем инверсию RTS# DTR# DSR# DCD#
# variaevg 2013-11-12 09:20
Добрый день.
Какая распиновка PLD-10?
Что индицируют LED2 и LED3?
# Pashgan 2013-11-14 18:47
PLD-10 имеет распиновку как в этой статье chipenable.ru/index.php/projects-avr/item/64-avr-programmator.html. Это стандартных разъем для внутрисхемного программировани я AVR.

Светодиоды сигнализируют прием/передачу по последовательно му интерфейсу.
Quote:
Также программатор можно использовать как USB-UART преобразователь. Для этого на разъем Х2 выведены сигналы RXD, TXD и подключены светодиоды LED2, LED3
# fleshmax 2014-01-13 10:56
Здравствуйте а codevision этот программатор
поддрерживается
# Pashgan 2014-01-14 08:35
По моему нет. Можно добавить Sina Prog в виде отдельного приложения (Tools ->Configure Tool -> add ..), но я всегда отдельно ей пользуюсь.
# Костя 2014-06-04 15:51
Добрый день,
собрал программатор по схеме в статье, скачал архив с avrdude и sinaprog. Работает отлично, шьет быстро. Оболочка (sinaprog) довольно удобная. На мой вкус, не мешало бы в схему добавить просто светодиод с резистором как индикатор питания.
Выяснилось однако, что не читает eeprom в моем проекте на mega8. Вылечилось удалением строки "page_size = 4;" в соответствующем разделе avrdude.conf.
# Pashgan 2014-06-14 09:52
LED1 же индикатор питания? Или речь об индикаторе питания программируемог о микроконтроллер а?
# Костя 2014-06-22 14:35
LED1 зажигается на время чтения/записи, индицируя работу с программируемым МК. Я имел ввиду светодиод анодом к цепи "UPROG" катодом на землю (через токоограничиваю щий резистор, конечно), который радостно сиял бы все то время, которое программатор подключен к USB.
# Ivan 2014-07-28 17:04
Спасибо за статью! Теперь можно обойтись без LPT+LS244. Но программатор работает под Windows XP и не работает под Windows 7.
Драйверы стоят, параметры программатора в 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.
Подскажите в чем дело!
# Ivan 2014-08-03 10:02
Проблема решилась заменой новых драйверов старыми. Заработала версия 2.06.00 (отсюда: http://reddylab.livejournal.com/900.html?thread=14468).
Версии 2.08.30 и 2.10.00 работать отказывались.

Кстати в статье неправильный адрес сайта FTDI. Правильный - http://www.ftdichip.com.

Спасибо еще раз за статью!

У вас недостаточно прав для комментирования.