Самодельная и доступная альтернатива продаваемому программатору от STMicroelectronics. Является выдержкой и компиляцией нескольких статей и схем найденных в интернете. Реализация в минимально возможном форм-факторе.

У любого разработчика встраиваемого софта должен быть программатор для устройств которые он использует. В моём случае микроконтроллеры фирмы STMicroelectronics, а так же Milandr (российские процессоры на ядре ARM).

Покупка данного девайса весьма затратна, особенно если сравнивать с себестоимостью компонентов - печатной платы и радиодеталей.

Решено было сделать программатор самостоятельно. За основу легли схемы отладочных плат для различных МК, в итоге получился полнофункциональный отладочный модуль и не только для stm32, но и для stm8 и даже миландровских чипов (проверено пока только на К1986ВЕ92, но думаю и другие тоже будут шиться и отлаживаться).

Основные функции:

  • программирование и отладка STM32;
  • программирование и отладка STM8;
  • программирование и отладка ARM Миландр.

Интерфейсы программирования:

  • SWD - до 4 МГц;
  • JTAG;
  • SWIM.

Сам программатор можно рассмотреть на фото выше. Провода растянутые по плате это лишь последующие доработки связанные с отсутствием необходимого светодиода (слева) и с необходимостью программировать платы без подачи на них питания (справа).

Схема устройства максимально проста и понятна:


Ядром является контроллер stm32f103, который и используется во всех отладочных платах. На его входах и выходах устройства, я имею ввиду разъем для подключения программируемого микроконтроллера, установлены диоды для защиты от статики, диоды выбраны достаточно маленькие, но легко доступные и без особых сложностей впаиваемыми, даже людьми с ослабленным зрением, сам я впрочем и не жалуюсь со своими единичками на обоих глазах.

В качестве разъема для подключения к компьютеру используется microUSB, выбор пал только лишь из-за его современности по сравнению с его мини братом. У меня же самого на плате стоит именно мини, когда собирал заложенного микро не было в наличии.
Плата выглядит следующим образом:


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

Для обеспечения работы необходимо зашить по в микроконтроллер, для этого нам понадобиться usb-uart переходник, бутлоадер и утилита для прошивки .

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

Решение было найдено на одном из многочисленных форумов - бинарник прошивки. Правда была проблема, после прошивки контроллера программатор определялся, но работать не хотел, зато спокойно прошивался через st-link utility, было решено подчистить файл прошивки, удалив все лишнее, оставив только сам загрузчик.

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

Для заливки используем разъем P1, выводы 3 и 4 которого замыкаем вместе, переводя микроконтроллер в режим загрузки по usart1. Подключаем uart переходники подаем питание на плату программатора, можно через usb разъем.

В утилите выбираем используемый последовательный порт и следуем остальным инструкциям. Этот процесс в картинках описывать нет смысла - все довольно тривиально.

После окончания прошивки отключаем все вспомогательные устройства и подключаем программатор к компьютеру, он должен нормально определиться. Теперь осталось обновить прошивку программатора с помощью

Любой более-менее интересующийся электроникой человек сегодня знает, что такое «прошивка». Многие из этой категории встречались с ситуацией «прошивка слетела». Самым неприятным подвидом ситуации является состояние «кирпич». Под катом немного теории и практики «раскирпичивания» с использованием устройства-героя обзора.

Я не занимаюсь профессионально ремонтом электроники и не пытаюсь заработать на этом денег. Но исследовательский зуд вкупе с минимальными познаниями в области электроники и информатики иногда толкает меня на залезание в потроха какому-нибудь очередному дивайсу (и как следствие, незапланированные покупки).

Предыстория.

Как-то в гостях у знакомого я наткнулся взглядом на валяющийся в куче хлама спутниковый тюнер, еще вполне себе современный.

Выяснилось, что аппарат неисправен со следующими симптомами: когда-то грузился со второго раза, потом стал грузиться с третьего, потом с пятого, потом с десятого, потом перестал совсем. В сервисе за ремонт заломили неадекватную сумму, в результате просто был куплен новый тюнер, а этот брошен в кучу хлама. На предложение купить его за символическую сумму владелец с радостью согласился, в результате я стал обладателем неисправного тюнера Skyway Light с практически полным комплектом - нашелся пульт, блок питания и даже выносной ИК-приемник.

Первое включение.

Как ни странно, но включился он у меня не с двадцатого раза, а всего лишь с третьего. Отсканировал каналы и начал показывать. Но при попытке запустить приложение Youtube повис. Десять следующих перезагрузок методом перетыкания питания ни к чему не привели. Прошлый владелец не обманул.

Подозрение первое. Питание.

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

Подозрение второе. Прошивка.

Обновить прошивку не удалось ни с флэш-драйва методом зажатой кнопки «вниз», ни через COM-порт с помощью программы Porter Express. В первом случае индикатор чтения на флэшке мигал несколько секунд, после чего наступала тишина. Во втором программы выдавала сообщение «ошибка записи» без какого-либо объяснения, что ее не устраивает. Так я подобрался к третьему подозрению.

Подозрение третье. Чип флэш-памяти.

Натолкнули на эту мысль сразу несколько фактов. Во-первых, в консоли загрузки, которая стала доступна после подключения по COM-порту, при старте вываливалось сообщение «CRC error». Во-вторых, при попытке снять конфигурацию тюнера при помощи Porter Express слитый файл получался каждый раз другим, не совпадающим в предыдущим при побайтовом сравнении.

Беглое изучение Aliexpress показало, что такую микросхему можно купить за небольшие деньги. Но вот тут обнаружилась главная проблема: просто купить флэшку мало. Ее нужно прошить. Либо на программаторе, либо прямо на плате. В моем случае это чип Spansion S29GL256P90TFCR2 - параллельная флэш-память в корпусе TSOP-56. Поиск такого программатора ни среди друзей-электронщиков, ни в веб-магазинах по адекватной цене не увенчались успехом. Остается единственный вариант - прошить флэшку прямо на плате после запаивания. И тут впервые мысленно была произнесена фраза, которая обычно на форумах электроники звучит как приговор: «поможет только JTAG».

Немного про JTAG.

Практически в каждой современной системе-на-чипе есть возможность отладки и тестирования. Чаще всего она реализована в виде последовательного интерфейса с сигналами ввода, вывода, тактирования, выбора и сброса, который и называют JTAG. Обычно эти выводы разведены на плате в виде пинов или контактных площадок. Проблема в том, что стандартизирован только электрический интерфейс. Команды для управления конкретным чипом индивидуальны, мало того, большинство производителей их не разглашают и выяснять их приходится методом реверсивного инжиниринга. Именно поэтому в паблике практически нет инструментов для работы с современными популярными чипсетами.

Заказ адаптера.

Гугление коммерческих продуктов, которые умеют работать с моим чипсетом ST40, привело меня на ресурс ejtag.ru, где обитает комьюнити по ремонту и находится небольшой интернет-магазин. Присмотрев для себя самый дешевый адаптер и убедившись, что он умеет работать с ST40, начал переговоры с жабой приступил к процессу покупки. Процесс отличается от того, к чему мы привыкли в популярных интернет-магазинах. Никаких пэйпэлов и диспутов. Регистрируемся, кладем товар в корзину, оформляем заказ. Через некоторое время приходит сообщение с номером WM-кошелька и суммой для оплаты. Оплачиваем, приходит подтверждение оплаты, через несколько дней - уведомление об отправке. Остается только ждать. Гарантия сделки - доброе имя продавца.

Получение, распаковка, регистрация.

Пластиковый пакет почты России, внутри обернутый пупыркой и положенный в антистатический пакет адаптер, кабель USB A male - Mini USB, шлейф с десятипиновой колодкой (будет виден на других фото, на момент съемки был подцеплен к тюнеру), переходник для прошивки последовательных флэшек самых популярных серий - 25-й, 93-й и в теории 24-й.

Для оценки размеров

Фото внутренностей

Внутри микроконтроллер с системой команд 8051 и микросхема буферов.


На скриншоте виден весь процесс покупки, включая запрос регистрационного кода после получения:

Заказ новой флэшки на Aliexpress.

Развернуто описывать не буду. Заказывал , шло почти два месяца, пришло в пластиковом блистере, который лежал в стандартном пакете.

Заказывал 2 штуки, на случай если одну убью при перепайке.

Перепайка флэшки.

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

На фото видно, что получилось не очень. Ножки чуть сдвинулись, да и от вида неотмытого флюса некоторые ремонтники могут прижать руку к лицу. Но для личного пользования сойдет.

Прошивка.

Распиновка JTAG для моего тюнера есть на форуме магазина. Подпаиваемся к контактным площадкам на плате.

Все готово к прошивке.

Запускаем программу.

Выбираем тип процессора в списке. Нажимаем кнопку «Соединиться».

В списке пробегает куча служебной информации, кнопки «Считать» и «Записать» и «Стереть» становятся активными. Обычно рекомендуют прошить только загрузчик, а потом уже через него прошиться обычным образом с USB-флэшки. Но я залил полный дамп, 32 мегабайта - лень было возиться с распаковкой отдельного загрузчика. Прошивка заняла около получаса, результат на фото:

Резюме.

В интернете представлено множество схем программаторов микроконтроллеров. Представляю вариант внутрисхемного универсального USB программатора с возможностью отладки, которым пользуюсь я. Вы сможете собрать данный программатор своими руками.

Основой программатора является микросхема FT2232D . Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.

Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.

Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.

Выводы U2 (канал А):
24 - ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 - ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 - ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 - ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 - ADBUS4 – в режиме JTAG вход\выход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 - AСBUS0 – свободно программируемый вход\выход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 - AСBUS1 – свободно программируемый вход\выход во всех режимах.

В принципе, эти выводы многофункциональные. Их поведение определяется выбранным режимом при открытии порта.

Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().

40 -BDBUS0 – выход- в режиме UART TXD;
39 -BDBUS1 – вход- в режиме UART RXD;
28 - BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 - BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).

Ниже приведена печатная плата программатора

На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.

Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.

Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer"s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа.NET» М.,С-П. Питер, 2007.

Скачать исходники ПО и печатную плату в формате вы можете ниже

Борисов Алексей () г.Сызрань, Самарская обл.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 Микросхема AT93C46D-8S 1 В блокнот
U2 Микросхема FT2232D 1 В блокнот
VT1 MOSFET-транзистор

BSS84

1 В блокнот
С1 Конденсатор 0.01 мкФ 1 В блокнот
С2, С3 Конденсатор 27 пФ 2 В блокнот
С4, С5, С7, С9, С10 Конденсатор 0.1 мкФ 5 В блокнот
С6 Конденсатор 0.033 мкФ 1 В блокнот
С8 Электролитический конденсатор 10 мкФ 1 В блокнот
R1 Резистор

2.2 кОм

1 0.05Вт В блокнот
R2 Резистор

10 кОм

1 0.05Вт В блокнот
R3, R4 Резистор

27 Ом

2 0.05Вт В блокнот
R5 Резистор

470 Ом

1 0.05Вт В блокнот
R6, R7 Резистор

1.5 кОм

2 0.05Вт В блокнот
R8-R16 Резистор

AVR JTAG Programmer - представляет собой сильно упрощенный вариант профессионального программатора AVR JTAG ICE от фирмы Atmel. И в отличии от своего профессионального собрата может быть собран буквально на "коленках" и стоимость его многократно ниже. А если быть еще точнее, то этот программтор не что иное как китайская реплика, имеющая обозначение как AVR JTAG под брендом LCSOFT и которую можно без проблем купить в зарубежных интернет магазинах и аукционах. Данный программатор с базовой прошивкой предназначен для программирования микроконтроллеров фирмы Atmel по интерфейсу JTAG. Рабочей средой для программатора является среда разработки программного обеспечения AVR Studio v4.xx. В принципе в интернете можно встретить и другием программы сторонних разработчиков. Однако стоит отметить, что последние серии микроконтроллеров ему не доступны, такие как например серии AT90USB и вследствии чего эти микроконтроллеры запрограммировать не удасться.

После небольшого лирического отступления стоит рассказать почему мой взор пал на этот программатор. Все дело в том, что когда я делал свой проект Devboard Z80 , то программировать микроконтроллер можно было только через JTAG интрефейс. Поэтому в процессре работы над проектом девборды я просмотрел интернет на предмет доступности программатора. И мой взгляд остановился на этом недорогом программаторе. И все бы ничего, но когда я занялся другим своем проектом, а именно разработкой компьютера ZXM-Zephyr , то не обратил внимание на то, что примененый мной микроконтроллер AT90USB1287 не поддерживается данным программатором. После безуспешных поисков в интернете на предмет возможного обновления прошивки данного программатора было решено попробовать сделать самому прошивку и какую нибудь простенькую программу для программирования микроконтроллера AT90USB1287 хотя бы в рамках проекта ZXM-Zephyr .

Первым моим шагом в изучении этого программатора стала зарисовка его схемы и создание рисунка печатной платы. Далее поискав в интернете информацию о том как программировать микроконтроллеры через JTAG, нашел два проекта с примерами, которые и легли в основу моей прошивки для этого программатора. После создания прошивки написал небольшую утилиту под операционную систему Windows. Все свои изыскания по этой теме я решил выложить на свою страницу, возможно они пригодятся еще кому нибудь.

В заключении хочется добавить, что данный программатор по сути стал неким конструктором, с помощью которого можно программировать не только микроконтроллеры фирмы Atmel, но также и других фирм. Или даже другие микросхемы с интрефейсом JTAG. Нужно лишь только приложить немного усилий - написать необходимую под себя прошивку.

Краткая спецификация: Проект:

1. Схема электрическая принципиальная в формате P-CAD 2002 - скачать
2. Печатная плата в формате P-CAD 2002 - скачать
3. Электрическая и монтажная схемы, перечень элементов в формате pdf - скачать
4. Библиотека элементов формате P-CAD 2002 - скачать


Прошивки:

1. Прошивка микроконтроллера ATmega16А штатная, которой зашиваются при производстве китайских реплик - скачать
2. Прошивка микроконтроллера ATmega16А, которая находилась в пакете AVR Studio v4.17. - скачать
3. Прошивка микроконтроллера ATmega16А для программирования микроконтроллеров фирмы Atmel и имеющие интерфейс JTAG. Важное замечание - необходима внешняя управляющая программа! Версия прошивки v01.00 -

2019-10-11 Дата последнего обновления программы: 2019-10-11

Двуликий Янус

Мы решили назвать этот программатор "Янус ".

Почему так? Потому что в римской мифологии Янус - это двуликий бог дверей, входов и выходов, а также начала и конца. Какая связь? Почему наш программатор ChipStar-Janus двуликий ?

А вот почему:

  • C одной стороны , этот программатор - простой. Распространяется как бесплатный проект , его можно легко изготовить самому .
  • C другой стороны , он разработан фирмой, длительное время профессионально занимающейся разработкой и производством различной радиоэлектронной аппаратуры, в том числе программаторами.
  • C одной стороны , этот программатор - простой, с первого взгляда имеет не сильно впечатляющие характеристики.
  • C другой стороны , работает совместно с профессиональной программой (кстати, точно такой же, как и остальные профессиональные программаторы ChipStar).
  • C одной стороны , мы предлагаем этот программатор для свободной бесплатной сборки.
  • C одной стороны , мы его продаем и в готовом виде, как обычный бюджетный продукт.
  • C одной стороны , на самодельный программатор не распространяется гарантия (что естественно).
  • C одной стороны , если вы его смогли собрать, то и отремонтировать сможете, да и программатор настолько простой, что ломаться, собственно, нечему.
  • C одной стороны , это простой внутрисхемный программатор.
  • C одной стороны , через простые адаптеры расширения он поддерживает программирование NAND FLASH и других микросхем уже "в панельке".

Таким образом, программатор ChipStar-Janus для многих специалистов может стать настоящим выходом в ситуации, когда разных простых или любительских программаторов уже недостаточно, а более сложный программатор кажется избыточным или на него не хватает выделенного бюджета.

Что нас побудило разработать этот программатор.

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

Есть множество дешевых китайских программаторов в уже готовом виде.

Есть немало любительских разработок , часто по качеству превосходящих последние.

Казалось бы, в чем смысл очередной поделки?

Мы длительное время занимаемся разработкой производством и поддержкой универсальных программаторов , в основном назначения. У нас богатый опыт работы с самыми разными микросхемами. Часто к нам обращаются люди уже собравшие, а часто и купившие, какой-нибудь из выше названных "изделий". Нашим специалистам часто без смеха/слез/ужаса (нужное подчеркнуть) невозможно смотреть на схемные решения, качество сборки и, особенно, на программное обеспечение этих приборов. Ладно когда программатор стоит "три копейки", купил, что-то работает, что-то не работает, зато деньги не большие. Но часто соотношение цена/возможности таких приборов у нас вызывают, мягко говоря, удивление. Хочется воскликнуть: это столько не стоит!

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

Итак, программатор ChipStar-Janus в начальной конфигурации - это внутрисхемный программатор. В таком режиме он поддерживает микроконтроллеры PIC и AVR фирмы Microchip , некоторые микроконтроллеры архитектуры MCS51 , микроконтроллеры фирмы STMicroelectronics и еще ряд других, а также микросхемы последовательной памяти с интерфейсом I2C (в основном серия 24 ). К разъему расширения программатора можно подключить простейшие адаптеры и начать программировать микросхемы памяти "в панельке".

Сейчас реализовано программирование "в панельке":

  1. EPROM ) с интерфейсом I2C (серия 24xx );
  2. микросхемы последовательной флэш памяти (Serial FLASH ) с интерфейсом SPI (SPI Flash );
  3. микросхемы последовательной памяти (Serial EPROM ) с интерфейсом MW (серия 93xx );
  4. микросхемы NAND FLASH ;

Программатор и программное обеспечение поддерживает технологию самостоятельного добавления микросхем в три клика. Пока реализовано добавление микросхем NAND и I2C . В самое ближайшее время планируется реализовать эту технологию для микросхем MW (серия 93xx ) и AVR . Таким образом, вы получаете не просто программатор, а мощный инструмент для самостоятельной работы .

Три способа получить программатор ChipStar-Janus

1-й способ:
Собрать программатор самому полностью

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

Алгоритм действий:

2-й способ:
Собрать программатор самому, купив готовую печатную плату и прошитый микроконтроллер

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

Алгоритм действий:

  1. Прочитать условия использования самостоятельно собираемого программатора.
  2. Прочитать инструкцию по сборке программатора.
  3. Скачать полную документацию на программатор.
  4. Купить набор для сборки (готовую печатную плату и микроконтроллер с уже записанной прошивкой).
  5. Закупить необходимую комплектацию для сборки программатора согласно