DIY-программатор ST-Link V2.1

Привет, Хабр!

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

А какой программатор вы используете?

6bf3c78c6d23aef065350c43c630cfea.png

Разумеется данный вопрос коснулся и Автора статьи. Сначала, сидя на табуретке, держа в одной руке стипендию, а в другой желание программировать железку, хочется начать изучение «по уму», однако жизненные факторы на раннем этапе развития заставляют себя ограничивать… Поэтому идеальный вариант — дешёвый китайский программатор ST-Link V2… Был…

Введение

В данной статье речь пойдёт о самодельном программаторе ST-Link V2.1.

Всё дело в том, что со временем приходит усталость от пользования дешёвыми китайскими программаторами ST-Link V2. У них нет поддержки SWO (Serial Wire Output), VCO (Virtual COM Port) и MSC (Mass Storage Class). Покупать оринигальный программатор ST-Link V2 совсем не тянет, тратить в 10 раз больше практически за те же возможности, что у китайского программатора, тоже не вариант.

Сущетсвует также ST-Link V3, он сомещает все те функции, которых лишён ST-Link V2., но цена его просто космос.

Подробнее см. Сравнение с аналогами.

Поэтому со временем возможно каждому приходит потребность как-то выкручиваться и делать себе модифицированный программатор. Кто-то делает ST-Link V2.1 из китайского «свистка» путём разрезания дорожек и напаивания дополнительных проводов и подтягивающего резистора, кто-то делает j-link программатор из BluePill и т.д. Можно конечно ещё себе купить DISCOVERY или NUCLEO с встроенным ST-Link V2–1 и вообще горя не знать. Это и программатор почти со всеми возможностями, и универсальная плата для разных семейств STM32. Однако снова же, цена…

Ссылки на другие статьи Хабр по модификации ST-Link V2 в версию V2.1

https://habr.com/ru/articles/442290/

https://habr.com/ru/articles/402927/

В связи с вышеизложенным было принято решение сделать себе полноценный, практичный и надёжный программатор ST-Link V2.1. Особенности: интерфейс SWD, функция виртуального COM-порта, поддержка SWO, функция MSC (mass storage class), низкая цена (4–5$ за плату).

Нюанс стоимости

Конечно, в реальности делать платы, это где-то 15$ за 10 штук + компоненты где-то 30–35$ на все платы, если нужно кому-то отослать по почте — ещё сверху стоимость упаковки и отправки. Если всё сложить и высчитать примерную стоимость отправки кому-нибудь в любую точку Земного шара по почте, затем разделить на 10 (кол-во плат) получим среднюю стоимость платы: 5$ с учётом того, что паять придётся самому, при желании можно отправить уже запаянную, но это дороже.

a69de98a631a150fc2a0fe663efd96e8.jpg

Краткий обзор оригинального ST-Link V2–1 в платах NUCLEO

Прежде чем разбирать самодельный ST-Link V2.1, взглянем на оригинальную схему принциальную данного программатора входящего в состав платы NUCLEO и DISCOVERY:

Оригинальная схема электрическая принципиальная программатора ST-Link V2.1

Оригинальная схема электрическая принципиальная программатора ST-Link V2.1

Рассматривать схему здесь может быть неудобно, все материалы есть на GitHub.

Рассмотрим основные моменты:

  1. Собран на базе STM32F103CBT6. Версия «CB» использована потому, что у всем привычного «С8» не хватит памяти для загрузки прошивки «STM32+MSD+VCP». В дешёвый «С8» хорошо вмещается прошивка «STM32+STM8», чем успешно пользуются китайцы, делая свои дешёвые «свистки»;

  2. Интерфейс программирования: SWD;

  3. Подтяжка к +D (DP) шины USB делается через транзистор. Это сделано для возможности аппаратного переподключения программатора через USB. Это обычный кусок в схеме, но китайцы им не пользуются.

  4. Использован бедный разъём micro-USB без защиты от статического напряжения (об этом позже).

В целом всё, ничего особенного за исключением отсутствия возможности отладки по SWO.

Обзор самодельного ST-Link V2.1

1. Анализ схемы электрической принципиальной

За основу схемы электрической принципиальной был взят строенный в NUCLEO ST-Link. Что-то было скопировано, что-то добавлено или модифицировано:

Самодельный ST-Link V2.1

Самодельный ST-Link V2.1

Рассматривать схему здесь может быть неудобно, все материалы есть на GitHub.

Рассмотрим отличные особенности самодельного ST-Link V2.1:

  1. Разъём USB Type C с защитой от статического напряжения (вещь маленькая и копеечная, но стоит того);

  2. Есть поддержка VCP и добавлена индикация передачи данных по линии RX, TX;

  3. Добавлены диоды Шоттки на линию +5В и +3.3В для защиты от переполюсовки. Если нужно исключить диоды и падение напряжение, параллельно им добавлены перемычки;

  4. Имеется вывод SWO на краевом разъёме (printf теперь реальность);

  5. Имеется кнопка отключения программатора от ПК по линии USB.

Сравнение с аналогами

1. Достоинства и недостатки китайского ST-Link V2

700aedd4167fca82a745b062b02f0eec.jpg

Достоинства китайского ST-Link V2:

  1. Подходит для программирования STM32 и STM8;

  2. Дешёвый и легко доступный;

  3. И всё, прикиньте.

окончены

окончены

Недостатки китайского ST-Link V2:

  1. Отсутствие вывода SWO (Serial Wire Output). Любителей использовать внутренний терминал и функцию printf () увы данный программатор сильно разочарует, а у новичков нередко данный факт вызывал желение забросить изучение такой замечательной сфере деятельности.

  2. Отсутствие выводов под UART (Universal Asynchronous Receiver Transmitter): RX и TX. Отсюда следует, что Вам не доступен VCO (Virtual COM Port) и это на самом деле крик души, ибо это надёжный и удобный способ ввода/вывода информации. Тем более, особенно когда начинающие смотрят примеры в интернете, скорее пример кода написан на HAL с использованием функции HAL_UART_Transmit () для вывода информации в терминал. Увы…

  3. Очень неудобен в использовании: программатор нужно сразу втыкать в разъём компьютера (или придётся обзавестить хорошим экранированным USB-USB удлинителем). Далее ведём китайские проводки к микроконтроллеру, по пути 100500 раз их перекрещивая, поскольку выводы на программаторе растрассированы таким образом, что нельзя взять 4 провода и провести их эстетично напрямую к отладочной плате BluePill или BlackPill, или иной другой. Почему бы китайцам не установить разъём USB Type-C на программатор, чтобы можно было подключиться через длинный уже универсальный кабель, а также сделать нормальнную трассировку своего программатора.

    «C’mon, you sell thousands of st-links from AliExpress to all over the world and you can’t develop new better version? This will take about 2 hours at all, guys!»

    Random User

  4. Не оригинальный камень STM32 в 95% программаторах. Часто могут возникать проблемы с отказом ПК определить данный программатор по USB. Кроме этого китайцы часто отправляют уже бракованный программатор, не убедившись в его исправности перед отправкой. Более того, пайка и сборка корпуса данного программатора зачастую оставляет желать лучшего: может быть плохо запаен USB разъём, из-за чего при снятии металлического корпуса разъём будет болтаться, пока не оторвутся контактные площадки с дорожками.

2. Достоинства и недостатки оригинального ST-Link V2

149793d36e403d80fb3eccb5fa320360.jpg

Достоинства:

  1. Подходит для программирования STM32 и STM8;

  2. Доступно два интерфейса программирования: SWD и JTAG;

  3. Можно подключить через кабель mini-USB Type B к ПК.

Недостатки:

  1. Высокая цена (от 20$);

  2. Нет VSP, MSD и SWO.

  3. Разъём подключения mini-USB Type B без защиты от статического напряжения.

3. Достоинства и недостатки оригинального ST-Link V3

ecb49780ffa8e27812129445b9de8ee5.jpg

Достоинства:

  1. Подходит для программирования STM32 и STM8;

  2. Можно подключить через кабель micro-USB к ПК;

  3. Доступно два интерфейса программирования: SWD и JTAG;

  4. Доступен VCP.

Недостатки:

  1. Высокая цена (от 50$);

  2. Нет поддержки SWO;

  3. Разъём подключения micro-USB Type B без защиты от статического напряжения.

На запрос «Купить ST-Link V3 недорого» выбивиает это:

a0caabaf77998dd7d5d71509ebf6416a.png

Смотреть другие источники не имеет смысла, на чип дип цена от 100$ до 200$ в других магазинах не лучше.

Прошивка программатора

На GitHub есть бутлоадер, скачиваете его и заливаете в камень через любой имеющийся ST-Link под рукой. Обновление программатора делаем по типу уже имеющихся статей на Хабр:

https://habr.com/ru/articles/442290/

Обновлени программатора

Обновлени программатора

Ожидание завершения обновления

Ожидание завершения обновления

Подведение итогов

В целом всё, все материалы есть на GitHub: схема принципиальная, гербер файлы, бутлоадер, драйвера и установочник ST-Link Utility v4.3, по схеме и фотографиям видны элементы, которые нужно установить.

Я не стал забивать статью кучей разной информацией, поскольку тема не является сложной, а по материлам на GitHub понятны особенности программатра, методика изготовления и отладки. Кроме всего я добавил файл корпуса для печати на 3Д принтере. Выглядит он так:

970e63bd5093c84823216e48aa958976.pnga75eb0f5047079b59bb423573d64d39c.jpg

Существует более свежая версия данного программатора от того же автора, я лично ей не пользовался, она ничем не отличается от этой, краевым разъёмом. На мой взгляд описываемая версия будет удобнее своим краевым разъёмом. Вот ссылка для сравнения: https://github.com/GolinskiyKonstantin/ST-Link-V2–1/tree/6569656585df9b29ced242313036e0fa67f95222

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

P.S. Данная статья не вышла бы, если бы не просьба моих читателей. Спасибо за вашу активность!

© Habrahabr.ru