![]() |
![]() |
|||||||||||||||
Лебедь, Щука и Рак, или программатор 3-in-1
Автор: Aheir В одну телегу впрячь не можно А.С. Пушкин, поэма «Полтава»
М-да, что-то пробило меня сегодня на классику… Причем все как-то больше в ключе сочетания несочетаемого. Что странно, поскольку речь у нас пойдет о вполне себе живом устройстве, хоть и спорном в чем-то. Но – обо всем по порядку. 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, распиновка следующая: Распиновка разъемов программаторов выдержана в едином стиле, если перепутать – ничего страшного случиться не должно… Ну, хотелось бы в это верить) U3, U5, U6 – DC-DC преобразователи для развязки питания, не знал, какой именно попадется под руку, так что развел на плате несколько распространенных среди меня вариантов. К 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-Microelectronics из схемы этого устройства тайны не делает и ее можно найти на сайте компании или посмотреть в документации к разнообразным Discovery-платам для STM32. Здесь на разъемы выведено довольно много разных интерфейсов, большинством которых я не пользуюсь, поэтому в рассматриваемом программаторе схема упростилась вот до такого вида: Наружу я вывел SWD и SWIM, в моей практике этого достаточно. На плате сохранен разъем с сигналами JTAG, но, честно скажу, на этом программаторе пользоваться им не доводилось. Она уже сильно упрощена по отношению к оригинальной (которая тоже не тайна, на сайте Микрочипа есть документация на этот программатор). Например, для генерации повышенного напряжения (12В) используется DC-DC преобразователь, исключены цепи управления напряжением питания целевого микроконтроллера и измерения этого напряжения и т.д. В моих реалиях это решение оправдано, т.к. в хозяйстве есть и честные полнофункциональные программаторы, а область применения этого клона несколько иная. В собранном виде оно выглядит так: В нашем устройстве схема еще немного уменьшилась, исчезли кнопка и лишние светодиоды: А вот с AVR-Doper все банальнее. Аппаратно он основан на схеме AVR910 от Protoss’а (подробно можно посмотреть в этой статье), тут все предельно просто: Некоторое время размышлял, не развести ли на плату AVRISP-MKII, но все же решил этого не делать. TPI и PDI нужны крайне редко, программатор под них есть. В остальном – для меня решающих преимуществ у AVRISP-MKII перед AVR-Doper не обнаруживается… Да и привык я уже к нему, если честно). Ну что ж… Схемы представлены, плата разведена и изготовлена, начинаем собирать в порядке логической очередности. Сначала – развязку и хаб. Подключаем к компу, ставим все необходимые драйвера и смотрим в диспетчер устройств: Определились дополнительный хаб, TUSB5052 и его два последовательных порта. Все честно. Теперь собираем AVR-Doper (как самый простой), прошиваем микроконтроллер (я делал это снаружи, на плате отдельный разъем для прошивки не предусмотрен, хотя все необходимые сигналы доступны через контактные площадки). Подключаем, смотрим: Оп-па… А это как? Начинаем разбираться. Свойства USB-концентратора: Ага… Значит, нам питания не хватает… А с чего бы, собственно? И откуда вообще взялись 200мА декларированного потребления для AVR-Doper? Смотрим исходники этого программатора, там в файле «usbconfig.h» есть запись: Все здорово, вот только один нюанс: нифига оно не «will be divided», как оказывается). Как вариант – пересобрать прошивку, и, наверное, так и надо сделать, но в любом случае bus-powered хаб нас в данном случае не очень устраивает и надо что-то с этим решать. Образ ЕЕПРОМ с правильными настройками я сделал на основе примеров, идущих в комплекте «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» - я с этим программатором работаю именно из-под нее: Дивимся на желтую надпись и послушно выполняем предписанное: Файл ОС выбираем из директории установки утилиты: Опять же, ждем завершения процесса, получаем рабочий программатор: В итоге, после всех телодвижений, в диспетчере устройств получаем такую картину: В принципе - все, можно пользоваться. Остается только по вкусу добавить необходимые шлейфо-шнуро-переходники под всяческие конструкции и платы. Здесь уж каждому свое. Конструктивно получилось вот так: Есть индикация передаваемых и получаемых данных по обоим каналам, есть возможность замкнуть выход первого канала на вход второго – для контроля передаваемых данных. Я уже достаточно давно предпочитаю не лениться и стараться изготавливать для каких-либо операций специально предназначенную для них оснастку или инструменты. Будь то слесарно-столярные мероприятия или электроника) В конечном итоге практика показывает, что временные затраты на это окупаются с лихвой. Описанное устройство позволяет мне с большим удобством и оперативностью осуществлять многие типовые операции, с которыми я сталкиваюсь в своей электронной повседневности. Надеюсь, что и кого-нибудь из читателей эта статья натолкнет на какие-то мысли по поводу. Ради этого и написан весь текст выше)
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |