Например TDA7294

РадиоКот > Схемы > Цифровые устройства > Примочки к ПК

Лебедь, Щука и Рак, или программатор 3-in-1

Автор: Aheir
Опубликовано 30.04.2015.
Создано при помощи КотоРед.


В одну телегу впрячь не можно
Коня и трепетную лань.

А.С. Пушкин, поэма «Полтава»

 

М-да, что-то пробило меня сегодня на классику… Причем все как-то больше в ключе сочетания несочетаемого. Что странно, поскольку речь у нас пойдет о вполне себе живом устройстве, хоть и спорном в чем-то. Но – обо всем по порядку.
Рассказываю об инструменте, который уже достаточно давно живет и работает в моей повседневной практике возни с микроконтроллерами. Началось все с того, что после очередной уборки я у себя со стола выгреб примерно следующее:

ST-Link’и, AVR-ISP’ы, несколько Discovery, пачка STK200+/300, Real ICE, кучка всякого менее распространенного, но от этого не менее нужного железа… Нет, все здорово, но обилие интерфейсов, проводов, переходников, шлейфов и коннекторов иногда все же надоедает. Захотелось чего-то если не более универсального, то уж более компактного точно. В результате родился вот такой программатор:

В подходящем по размеру корпусе от USB-хаба C-Net имеются: ST-Link/v2, AVR-Doper, PICkit 3, пара TTL-совместимых RS-232 (только Rx-Tx) и два USB-A разъема для подключения прочей периферии. Питание от USB или внешнее, полная гальваническая развязка от входного USB. Выходные разъемы – BH-10R, распиновка следующая:

Распиновка разъемов программаторов выдержана в едином стиле, если перепутать – ничего страшного случиться не должно… Ну, хотелось бы в это верить)
Схема большая, целиком в виде картинки ее выложить не получается, так что в конце статьи доступен для скачивания проект в P-CAD 2006, а пока рассмотрим ее по кусочкам. Начинается все с гальванической развязки на ADUM4160 (U2 по схеме) и системы питания:

U3, U5, U6 – DC-DC преобразователи для развязки питания, не знал, какой именно попадется под руку, так что развел на плате несколько распространенных среди меня вариантов.
Далее все это подключается к хабу на TUSB5052, о котором я когда-то уже рассказывал:

К USB-портам 1-3 подключены, соответственно, ST-Link/v2, PICkit 3 и AVR-Doper, порты 4 и 5 выведены наружу. Также наружу на разъем BH-10 выведены два порта RS-232. Правый нижний угол схемы занимает система коммутации питания, которая позволяет подавать на программируемый микроконтроллер напряжение 3,3В, 5В или вообще отключить его (на разъем ST-Link/v2 может быть подано только 3,3В). Этим заведует микроконтроллер Attiny13 (U8), по кнопке переключающий управляющие сигналы для оптореле, коммутирующих питание, и осуществляющий индикацию на семисегментном индикаторе HL1 (отображаются символы «-», «3» и «5»).
Исходно клон ST-Link/v2 я собирал вот по такой схеме на микроконтроллере STM32F103C8:

на вот такой плате (все можно скачать в конце статьи, фотографий устройства, как и его самого, не сохранилось):

В принципе, ST-Microelectronics из схемы этого устройства тайны не делает и ее можно найти на сайте компании или посмотреть в документации к разнообразным Discovery-платам для STM32. Здесь на разъемы выведено довольно много разных интерфейсов, большинством которых я не пользуюсь, поэтому в рассматриваемом программаторе схема упростилась вот до такого вида:

Наружу я вывел SWD и SWIM, в моей практике этого достаточно. На плате сохранен разъем с сигналами JTAG, но, честно скажу, на этом программаторе пользоваться им не доводилось.
Похожая история и с PICkit 3 на микроконтроллере PIC24FJ256GB106. Исходная схема:

Она уже сильно упрощена по отношению к оригинальной (которая тоже не тайна, на сайте Микрочипа есть документация на этот программатор). Например, для генерации повышенного напряжения (12В) используется DC-DC преобразователь, исключены цепи управления напряжением питания целевого микроконтроллера и измерения этого напряжения и т.д. В моих реалиях это решение оправдано, т.к. в хозяйстве есть и честные полнофункциональные программаторы, а область применения этого клона несколько иная. В собранном виде оно выглядит так:

В нашем устройстве схема еще немного уменьшилась, исчезли кнопка и лишние светодиоды:

А вот с AVR-Doper все банальнее. Аппаратно он основан на схеме AVR910 от Protoss’а (подробно можно посмотреть в этой статье), тут все предельно просто:

Некоторое время размышлял, не развести ли на плату AVRISP-MKII, но все же решил этого не делать. TPI и PDI нужны крайне редко, программатор под них есть. В остальном – для меня решающих преимуществ у AVRISP-MKII перед AVR-Doper не обнаруживается… Да и привык я уже к нему, если честно).
Да, один момент: чтобы заставить железо AVR910 работать как AVR-Doper (а это гораздо быстрее), нужна альтернативная прошивка – см. внизу.

Ну что ж… Схемы представлены, плата разведена и изготовлена, начинаем собирать в порядке логической очередности. Сначала – развязку и хаб. Подключаем к компу, ставим все необходимые драйвера и смотрим в диспетчер устройств:

Определились дополнительный хаб, TUSB5052 и его два последовательных порта. Все честно.

Теперь собираем AVR-Doper (как самый простой), прошиваем микроконтроллер (я делал это снаружи, на плате отдельный разъем для прошивки не предусмотрен, хотя все необходимые сигналы доступны через контактные площадки). Подключаем, смотрим:

Оп-па… А это как? Начинаем разбираться. Свойства USB-концентратора:

Ага… Значит, нам питания не хватает… А с чего бы, собственно? И откуда вообще взялись 200мА декларированного потребления для AVR-Doper? Смотрим исходники этого программатора, там в файле «usbconfig.h» есть запись:

Все здорово, вот только один нюанс: нифига оно не «will be divided», как оказывается). Как вариант – пересобрать прошивку, и, наверное, так и надо сделать, но в любом случае bus-powered хаб нас в данном случае не очень устраивает и надо что-то с этим решать.
В TUSB5052, в отличие от TUSB2046 или TUSB2077, отсутствует вход аппаратного конфигурирования режима питания (см. здесь). За режим self-powered/bus-powered отвечает битик в одном из внутренних регистров микросхемы. Поменять его можно только программно. Напомню логику работы (см. здесь, здесь и здесь): при старте проверяем наличие подключенной ЕЕПРОМ и адекватность данных в ней. Есть в ЕЕПРОМ данные первичной конфигурации? Ок, стартуем с ними, смотрим наличие прошивки. Есть? Сливаем ее в РАМ и запускаемся. Нет ничего? Сливаем все с хоста через драйвера. Подручных средств для влезания в прошивку не обнаружилось, поэтому видим перед собой задачу записи правильной конфигурационной информации во внешнюю ЕЕПРОМ, подключенную к TUSB5052. Для генерации образа ЕЕПРОМ Texas Instruments дает нам «TUSB5052 USB I2C Header Generator Utility for VCP Applications (sllc296)», для последующей записи его в микросхему памяти – «TI USB EEPROM Burner Utility for the TUSB5052 (sllc270)».
Удаляем «TUSB5052 Device» в диспетчере, ставим «TI USB EEPROM Burner Utility», переподключаем программатор. Теперь у нас определилось несколько иное устройство, т.к. драйвера изменились:

Образ ЕЕПРОМ с правильными настройками я сделал на основе примеров, идущих в комплекте «TUSB5052 USB I2C Header Generator». Был велик соблазн запихать в ЕЕПРОМ еще и прошивку, но подходящей по объему микросхемы памяти не нашлось. Все материалы доступны ниже, а пока просто запускаем утилиту:

Выбираем из списков наши параметры ну и жмакаем «Program EEPROM», чего уж тут:

Переподключаем устройство, теперь, при наличии «правильной» ЕЕПРОМ, дефолтные драйвера из состава «TI USB EEPROM Burner Utility» уже не годятся, установятся драйвера нормального «TUSB5052 Device» и его портов, как раньше. Теперь в свойствах хаба имеем:

Ну вот, другое дело, за что и боролись. Да, кстати, если удалить ЕЕПРОМ, стереть ее содержимое или просто коротнуть на землю вывод SCL или SDA при включении – опять определится «TI TUSB5152 EEPROMBurner» и можно будет повторить процедуру для другого файла конфигурации, например.

Далее собираем ST-Link/v2, прошиваем в него «STLinkV2.J16.S4.bin» (см. материалы внизу). Это не рабочая прошивка, она нужна только для того, чтобы запустить «ST-LinkUpgrade.exe» и обновиться. Разархивируем куда-нибудь и запускаем утилитку, коннектимся к девайсу:

Остается только нажать «Yes» и дождаться завершения процесса… Поздравляем, ваш ST-Link/v2 готов к работе)

С PICkit 3 похожая ситуация. Собираем, прошиваем «pickit3.hex». Устанавливаем Микрочиповскую «PICkit3 Programmer Application v3.10» - я с этим программатором работаю именно из-под нее:

Дивимся на желтую надпись и послушно выполняем предписанное:

Файл ОС выбираем из директории установки утилиты:

Опять же, ждем завершения процесса, получаем рабочий программатор:

В итоге, после всех телодвижений, в диспетчере устройств получаем такую картину:

В принципе - все, можно пользоваться.
Ах, да, прошивка для управляющей Attiny13… Жуткая вещь: 3 набора состояний портов ввода-вывода, переключаемые кнопкой по кругу. Фьюзы:

Остается только по вкусу добавить необходимые шлейфо-шнуро-переходники под всяческие конструкции и платы. Здесь уж каждому свое.
Я пока что изготовил преобразователь уровней для RS-232, вот такой:

Конструктивно получилось вот так:

Есть индикация передаваемых и получаемых данных по обоим каналам, есть возможность замкнуть выход первого канала на вход второго – для контроля передаваемых данных.

Я уже достаточно давно предпочитаю не лениться и стараться изготавливать для каких-либо операций специально предназначенную для них оснастку или инструменты. Будь то слесарно-столярные мероприятия или электроника) В конечном итоге практика показывает, что временные затраты на это окупаются с лихвой. Описанное устройство позволяет мне с большим удобством и оперативностью осуществлять многие типовые операции, с которыми я сталкиваюсь в своей электронной повседневности. Надеюсь, что и кого-нибудь из читателей эта статья натолкнет на какие-то мысли по поводу. Ради этого и написан весь текст выше)


Файлы:
Прошивка AVR-Dooper
Исходники для управляющей Attiny13
Печатная плата программатора
PICKit3 часть1
PICKit3 часть2
PICKit3 часть3
Печатная плата RS232
ST-Link v2
Драйвера и инструменты для TUSB5052 часть1
Драйвера и инструменты для TUSB5052 часть2
Драйвера и инструменты для TUSB5052 часть3


Все вопросы в Форум.


ID: 2107

Как вам эта статья?

 Нравится
 Так себе
 Не нравится

Заработало ли это устройство у вас?

 Заработало сразу
 Заработало после плясок с бубном
 Не заработало совсем

51 9 4
1
Подробно