В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

USB-программатор AVR на FT232RL с буффером

📆14 октября 2011   ✒️error   🔎44.188   💬16  
Иметь дело с микроконтроллерами (как и вообще с цифровой техникой) мне приходится довольно редко и если мне надо было прошить микроконтроллер, я просто просил на работе ближайшего «софтверщика» и через 10 минут получал ожидаемое. Но зависимость от других не давала покоя и я решил сделать собственный программатор.

Тернистыми тропами выбора…

Прежде всего, я определился, что обычного ISP (In-circuit Programming) SPI (Serial Peripheral Interface)-программатора мне хватит с головой даже с заделом на обозримое будущее. Недостатков у последовательных внутрисхемных программаторов всего два.

Во-первых, это более низкая скорость прошивания, хотя в большинстве случаев реально несущественно будет ли проц шиться 20 секунд или 2 секунды, разве что если вы не собираетесь наладить себе мануфактуринг.

Во-вторых, это опасность заблокировать процессор неправильной установкой битов конфигурации (фьюзов), или случайно вообще отключить режим ISP, или переназначить вывод RESET на что-то другое (в некоторых младших моделях этот вывод бывает совмещённым с портом).
Что ж, придётся быть внимательным. Тем не менее «вылечить» заблокированный таким образом проц можно с помощью т.н. параллельного высоковольтного программирования или с помощью JTAG.
Оба варианта для домашнего использования востребованными обычно не являются, а вот стоят довольно-таки дороговато. У меня же на работе данные девайсы имеются, поэтому «если что», ситуацию могу исправить там.

Да, ещё одно преимущество ISP-программирования для рядового любителя — программируемый процессор может оставаться впаянным в устройство, т.е. нет необходимости его вынимать и переставлять в программатор.

Итак, однозначно ISP

Однако и тут я набрёл на развилку. «Простые» ISP-программаторы довольно капризны в работе. Дело в том, что они требуют прямого доступа к порту (т.н. bitbang-mode) и часто нестабильно работают на современных компьютерах.
В качестве «классики» можно привести программатор STK200/300 для LPT-порта и программатор Громова для COM-порта, содержащих всего несколько резисторов.

Возникает резонный вопрос: раз контроллер должен подключаться по SPI-протоколу, как это может работать от LPT/COM? А вот это и есть суть битбанг-режима, когда мы, получив прямой доступ к регистрам порта, произвольно управляем состоянием на его пинах.
Таким образом, на LPT/COM-портах можно реализовать какой угодно протокол, в разумных пределах, конечно. В нашем же случае реализовывается протокол ISP; на пинах портов формируются сигналы CLK, MOSI, MISO.

Очевидно, что такой режим является принципиально ненормальным для порта, да и WinXP не приветствует прямой к его регистрам. Именно поэтому для работы с такими программаторами часто рекомендуют компьютеры на основе P-III под управлением Windows98.

Ещё один камень в огород «резисторных» программаторов — потенциальная возможность сжечь порт вследствие отсутствия гальванической развязки с контроллером, который в данный момент находится в устройстве, имеющем свой блок питания (в момент программирования ему тоже требуется питание, а где ж оно возьмётся на LPT/COM?).

Для обхода этого недостатка, было придумано множество модификаций подобных программаторов с добавлением транзисторных ключей, оптронов, буферов (в т.ч. МАХ232) и т.д. вплоть до абсурда; некоторые из них можно было назвать «простыми» только с натяжкой. Да и проблемы зависимости от быстродействия компьютера и с прямым доступом к порту они не решают.

И наконец, LPT/COM-порты постепенно уходят в небытиё. Казалось бы, USB-COM переходник решит проблему, ан нет, не все переходники обеспечивают даже полный СОМ, не говоря уже о битбанге.

Однажды на работе мне попался в руки нерабочий USB-COM переходник, который при жизни однозначно обеспечивал полный СОМ. Расковыряв его, разобрав на корпусе одной из двух микросхем FT232 и ознакомившись с её даташитом я выяснил, что данная микросхема поддерживает и битбанг.

Продолжив поиски в Интернете, я обнаружил, что на этом чипе люди действительно делают также и великолепные USB ISP программаторы, свободные от недостатков простейших. Подключил к USB, установил драйверы (перезагрузка не требуется) и вперёд.

Что же касается сложности схемы, так она выходит ещё и проще чем некоторые «усовершенствованные резисторные». Немного может отпугнуть её цена (ок. $10), но за всё хорошее надо платить (для сравнения готовый USB-COM переходник на её же основе стоит порядка $70).

В принципе, схема подключения может быть и стандартной из даташита, но у такого подключения будет один недостаток. После программирования микроконтроллер должен быть отключён от программатора, для чего достаточно просто отсоединить ISP-кабель. Для тех, кому данный способ представляется неудобным, на сайте DI HALT’а было предложено простое решение добавить к микросхеме буфер 74НС244 с «третьим состоянием» выходов, который по сигналу OE (Output Enable) отключит контроллер от программатора. Ну и в случае неправильного подключения пусть лучше выгорит копеечный буфер, чем FTDI.

Схема программатора на FT232R с буффером

Эту схему я и решил реализовать:
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

Несколько слов о ней. Питание программатор берёт с USB и им же питает программируемый контроллер через джампер JP3. При разомкнутом джампере контроллер может питаться от собственного источника питания.

При неправильной установке фьюзов контроллеру может понадобиться внешний генератор тактовой частоты. Её нам поможет получить всё та же FT232, этот сигнал выведен на джампер JP1.
Для получения 6 МГц на джампере JP1 скачайте утилитку «FT Prog» и пройдя по дереву «Device Xxxxx»→«FT EEPROM»→«Hardware Specific»→«IO Controls»→«C4», установите для пина СBUS4 значение «CLK6». Всё, теперь при наличии питания будем иметь 6 МГц TTL-уровня.

Ну и раз UART-интерфейс на микросхеме присутствует принципиально, выведем и его на JP2.

Микросхема используется в режиме битбанга, т.е. программно мы произвольно управляем состоянием её выходов, а это значит, что нам без разницы какой вывод будет сигналом MISO или MOSI; это же касается остальных выводов. Иными словами, мы можем совершенно произвольно завести выводы микросхемы на ISP-коннектор, а потом сконфигурировать всё программно.

Последнее обстоятельство нам позволяет красиво развести плату (без двух перемычек в виде нулевых резисторов, правда, не обошлось). Поскольку все коннекторы расположены на верхней стороне платы, я поставил обычные светодиоды вместо SMD, иначе снизу их не видно. Получилось вот так (варианты с заливкой землёй и без):
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.


Платы заказывал в одной из фирм, коих у нас в Чехии предостаточно.


Запаиваем детальки:


Остаётся лишь изготовить ISP-кабелёк для внутрисхемного программирования. Их есть два стандартных варианта:


Мне приходилось иметь дело преимущественно со вторым вариантом, кроме того он чуть более помехоустойчив, т.к. в нём между двумя каждыми соседними сигналами проходит земляной провод. Во всяком случае, с 80-сантиметровым проводом у меня не возникало никаких проблем.

И всё в сборе:


Драйверы

С установкой драйверов проблем не возникло. Скачать их можно у производителя микросхемы на ftdichip.com. Рекомендуются драйвера D2XX Direct Drivers.
Для программирования осваиваю консольную утилиту avrdude, для которой, впрочем, в сети можно найти GUI на свой вкус.

Софтинка-прошивалка SinaProg

USB-программатор AVR на FT232RL с буффером
[14/05/2016] Удобная и простая оболочка, работающая совместно с avrdude. К сожалению, разработка проги давно прекращена.
🎁 sinaprog.7z  11.79 Mb ⇣ 26
Вы сможете настроить SinaProg для работы с любой версией программатора на FT232R, переопределив в конфиге обращение к пинам чипа.
Правим avrdude.conf
programmer
  id    = "usb_bb";
  desc  = "USB_BB programmer based on FT232R (datagor.ru)";
  type  = ft245r; 
  
#		= 0;  # TXD [ 1  PIN FT232RL ]
#		= 1;  # RXD [ 5  PIN FT232RL ]
#		= 2;  # RTS [ 3  PIN FT232RL ]
  gates  	= 3;  # CTS [ 11 PIN FT232RL ]
  mosi		= 4;  # DTR [ 2  PIN FT232RL ] 
  sck   	= 5;  # DSR [ 9  PIN FT232RL ]
  miso  	= 6;  # DCD [ 10 PIN FT232RL ]
  reset	 	= 7;  # RI  [ 6  PIN FT232RL ]
;

Волшебная строчка "gates = 3; # CTS [ 11 PIN FT232RL ]" сработает только с пропатченым avrdude. Она и определяет управление состоянием буфферной микросхемы, в данном случае через пин № 11 FT232, см. схему вверху.

Файлы, ссылки

В архиве прилагаю схему и ПП в Eagle CAD. Шейте на здоровье!
🎁ftdi-usb-prog.7z  26.41 Kb ⇣ 198

ПП в Sprint Layout, подготовлена Юрой (Yura_Zayets_Vol)
🎁 proshivalka.7z  5.64 Kb ⇣ 120

Модифицированный avrdude + все либы и конфиги для него + avrdude-gui (графическая оболочка). Архив из статьи от DI HALT.
🎁 FTBB.7z  161.26 Kb ⇣ 39

Статья от DI HALT — Скоростной AVR USB программатор на FT232RL без вспомогательного контроллера

Спасибо за внимание!

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 11 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Грызем микроконтроллеры. Урок 6. Прошиваем МК... Ну вот, писать программы для микроконтроллеров мы научились. Работоспособность прошивки тоже...
Схема на Датагоре. Новая статья Программатор JTAGICE 3. Что внутри?... Совершенно случайно попался мне в руки программатор JTAGICE3, который был выпущен компанией Atmel...
Схема на Датагоре. Новая статья Windows 10 и программаторы на базе AVR910 Prottos... Я он-лайн геймер, поэтому недавно пришлось на моём компьютере обновить ОС с MS Windows 8.1 до MS...
Схема на Датагоре. Новая статья Программатор для ATMEL AVR-910 по USB... Представлю Вам мой вариант печатной платы для сборки такого программатора. Детали, кроме самого МК,...
Схема на Датагоре. Новая статья Программирование микроконтроллеров ATmega... Хеллоу ВСЕМ!!! Итак, как я и обещал, расскажу как залить программу в МК. Для этого нам понадобится...
Схема на Датагоре. Новая статья Программатор AVR910: перезагрузка! Ускорение работы + «превращение» в STK500... Сегодня ночью я не лег спать. Включил фоном какую-то киношку с Джеки Чаном и быстренько спаял...
Схема на Датагоре. Новая статья Библиотеки для подключения COG-индикаторов TIC-55 и TIC-3321 к микроконтроллерам AVR... …простите, а вы не подскажите, как пройти в библиотеку? Небольшая предысторияПрежде, я уже имел...
Схема на Датагоре. Новая статья Программатор AVR-910-slim для контроллеров ATMEL + Code Vision... Прочитав на Датагоре статью Гунтиса о программаторе AVR 910 , задумал сделать ещё меньше размер и...
Схема на Датагоре. Новая статья Программатор PIC-микроконтроллеров PICkit-2 Сlone... Как я уже упомянул в предыдущей статье «Сделай сам универсальный блок управления для дневных...
Схема на Датагоре. Новая статья SPAM-у 30 лет!... Cпам отмечает 30-летие, однако в 1978 году он еще не назывался спамом. Головная боль хозяев...
Схема на Датагоре. Новая статья Ламповый УСИЛИТЕЛЬ на 6ф3п ДЛЯ НАЧИНАЮЩИХ ОТ НАЧИНАЮЩЕГО... Год назад даже боялся подумать, что буду собирать усилитель на лампах. Во-первых, напугали меня...
Схема на Датагоре. Новая статья Аудио ЦАП DAC. Поделки начинающего цапостроителя. Часть 8. Обзор цифровых ресиверов DIR9001, WM8805, AK4113, PCM2707 (Обновлено)... Чем больше времени тратишь на разработку, тем меньше на сборку и отладку. Жизненное наблюдение. На...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

vadeg

<
Читатель Датагора

Dust112

<
Читатель Датагора

alex

<
Читатель Датагора

error

<
Читатель Датагора

End_reW

<
Читатель Датагора

Datagor

<
Читатель Датагора

End_reW

<
Читатель Датагора

Yura_Zayets_Vol

<
Читатель Датагора

Datagor

<
Читатель Датагора

mick63

<
Читатель Датагора

Datagor

<
Читатель Датагора

Datagor

<
Читатель Датагора

error

<
Читатель Датагора

Datagor

<
Читатель Датагора

error

<
Читатель Датагора

Datagor

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой