Pull to refresh

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

Level of difficultyMedium
Reading time6 min
Views23K

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

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

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

Разумеется данный вопрос коснулся и Автора статьи. Сначала, сидя на табуретке, держа в одной руке стипендию, а в другой желание программировать железку, хочется начать изучение "по уму", однако жизненные факторы на раннем этапе развития заставляют себя ограничивать... Поэтому идеальный вариант — дешёвый китайский программатор 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

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

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

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

Краткий обзор оригинального 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

Достоинства китайского 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

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

  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

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

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

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

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

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

Недостатки:

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

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

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

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

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

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

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

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

Обновлени программатора
Обновлени программатора
Ожидание завершения обновления
Ожидание завершения обновления

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

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

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

Существует более свежая версия данного программатора от того же автора, я лично ей не пользовался, она ничем не отличается от этой, краевым разъёмом. На мой взгляд описываемая версия будет удобнее своим краевым разъёмом. Вот ссылка для сравнения.

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

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

Only registered users can participate in poll. Log in, please.
Каким программатором пользуетесь Вы?
19.63% Оригинальный ST-Link V232
60.74% Китайский ST-Link V299
7.36% ST-Link V312
23.93% Используете плату NUCLEO или DISCOVERY с встроенным ST-Link39
19.02% J-Link31
10.43% Прошиваете через USB в режиме DFU17
12.27% Прошиваете через UART20
10.43% Собираюсь сделать себе описываемый программатор в статье17
9.2% Другое15
163 users voted. 14 users abstained.
Tags:
Hubs:
Total votes 33: ↑33 and ↓0+33
Comments47

Articles