Авторизация
Зарегистрироваться

ST-LINK V2 и переходники к нему

  1. Цена: 9.65$ с пересылкой
  2. Перейти в магазин

Раньше программаторы для микроконтроллеров делал для себя сам. Но все мы становимся со временем хуже, и на этот раз я поленился и решил купить готовый. Речь идет про микроконтроллеры STM32.



Вообще говоря, им вообще не требуется программатор. Если подать единицу на вывод BOOT0 (при нуле на BOOT1), то программа стартует с встроенного загрузчика, который позволяет программировать контроллер по UART (как один из вариантов, можно и через другие интерфейсы). Обычно при этом применяют переходник USB – UART. Но это не очень удобно, лучше использовать для программирования и отладки интерфейс SWD. У меня есть плата Discovery со встроенным отладчиком и штырьками SWD, которую вначале и использовал. Но хотелось иметь отдельный программатор, и тут на Aliexpress увидел по вполне доступной цене клон ST-LINK V2 в красивом корпусе. Этот корпус и склонил меня к покупке.

Качество исполнения корпуса и логотип – прямо как у фирменной вещи. Снизу – большая наклейка, где часть надписей на китайском.



В комплекте идет провод USB (довольно тонкий), шлейф с разъемами IDC на 20 контактов, провод интерфейса SWIM для программирования STM8 (с ними пока дела не имел) и провод, которым можно подключиться к SWD.


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

Внутри все красиво, качество литья пластика вопросов не вызывает. Плата тоже спаяна аккуратно.


На плате установлен микроконтроллер Geehy APM32F103CBT6. Судя по обозначению, это клон STM32F103CBT6, но раньше я такого клона не встречал. Сайт производителя нашелся без проблем. При подключении программатора к компьютеру в окне утилиты STM32 ST-LINK Utility можно увидеть версию прошивки: «ST-LINK Firmware version: V2J28S7».


Рядом с разъемом USB виден стабилизатор напряжения на 3.3 В с маркировкой 422P (LN1154B332MR-G). Максимальный выходной ток – 300 мА. Элементов защиты линий USB не замечено.


Фото платы с двух сторон в более высоком разрешении:



Основной разъем здесь – 20-контактный, который обычно используют для JTAG. Но я не понимаю, что должно случиться, чтобы поставить такой разъем в свое устройство. JTAG для ПЛИС и то использует намного более компактный 10-пиновый разъем. К тому же, у STM32 есть удобный интерфейс SWD, который требует в минимальной конфигурации подключения всего 4-х проводов. Но тут делать это крайне неудобно – надо по одному подключать провода к штырькам 20-контактного разъема, можно легко ошибиться. Такое терпеть невозможно, и я сделал переходник – в разъем IDC-20 завел отдельные провода, а на другом конце установил 4-контактный разъем.


Очень удобно, когда отлаживаемое устройство может питаться от программатора. Здесь как раз есть выход напряжения питания +3.3 В (контакт 19). Для включения питания это напряжение надо подать на вывод V_TARGET. Но делать такое соединение постоянным неправильно. Когда устройство питается от собственного источника, он окажется подключенным к выходу питания программатора, что плохо. Поэтому лучше предусмотреть выключатель питания, что у меня в этом переходнике и сделано.

Готовые переходники с 20-контактного разъема JTAG на 4-контактный SWD существуют (ссылка, ссылка), но выполнены они не самым лучшим образом. И у них нет возможности подключения питания. И они торчат вверх, что очень неудобно.



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


Возможно, я бы и дальше жил со своим переходником, но однажды пришлось сделать устройство на STM32 с режимом сна. Когда устройство находится во сне с выключенным тактовым генератором, то подключиться к нему по SWD нельзя. Аналогичная ситуация возникает и в случае, когда интерфейс SWD программно отключен. Мне приходили с Aliexpress контроллеры в таком состоянии. В этих случаях требуется подключение программатора с использованием сигнала сброса (Connect Under Reset). Подача сигнала сброса не требует большой скорости, это можно сделать даже вручную: закоротить вход сброса на землю, запустить утилиту программирования, быстро раскоротить. Но удобнее, когда сброс будет подаваться автоматически. Для этого потребуется 5-проводное подключение (добавляется сигнал NRST). Поэтому я решил сделать новый переходник. Схема переходника получилась следующая:


Отдельно надо сказать о распиновке разъема SWD. Я привык к схеме, которая реализована на плате Discovery.



Такое расположение контактов выглядит очень логичным: между сигналами SWCLK и SWDIO в шлейфе проходит земля, что снижает взаимные наводки. Именно такую разводку разъема я использую во всех своих устройствах. Но с большим удивлением я обнаружил, что на популярных платах Blue Pill (и некоторых других) разводка SWD другая.


Такая разводка мне кажется менее логичной, поэтому в переходнике я сделаю как в Discovery. А для подобных плат сделаю отдельный провод, где просто переставлю контакты разъема.

Чтобы переходник выглядел приличней, решил спрятать весь монтаж снизу, сделав его полностью SMD, включая разъем. Светодиод смонтирую так, чтобы излучение было направлено к плате, где будет отверстие. Выключатель нашелся для обычного монтажа в отверстия, но сделать из него SMD не проблема. Его тоже буду паять снизу, а для корпуса сделаю в плате прямоугольное окно. Заодно оно сделает крепление выключателя более надежным. Плата развелась так:


Ну а дальше – изготовление. Вырезаю заготовку из одностороннего стеклотекстолита толщиной 1.5 мм с размерами чуть больше будущей платы. Теперь – мой любимый ЛУТ. Несколько минут, и рисунок перенесен на текстолит.


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


Плата вытравлена, следующий этап – обработка контура. Это можно сделать ножовкой и напильником, но я делаю это на фрезерном станке.


Отверстий в этой плате почти нет, только одно для светодиода, плюс окно для выключателя. Для светодиода сверлю отверстие сначала диаметром 2 мм, затем сверху с помощью зенкера с углом 90 градусов делаю его коническим. Для выключателя фрезерую паз (но можно просто просверлить пару отверстий), затем довожу надфилем до прямоугольной формы.



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



Вместе с ST-LINK переходник выглядит так:


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

Теперь очередь за проводами. Сначала делаю простейший провод с 4-контактными разъемами для подключения SWD с разводкой как у Discovery. Первый контакт обозначен красной полоской на шлейфе.

Второй провод – с разводкой контактов как у Blue Pill. Делаю разъем белым, ну типа белая ворона.


И теперь то, ради чего все это затевалось – 5-контакный переходник с контактом NRST. Он мне понадобился для конкретных плат, где штырьки для SWD вообще запаиваться не будут. Отверстия для этих штырьков остаются свободными. Контактировать с такими отверстиями можно с помощью подпружиненных контактов, которые продаются на Aliexpress (ссылка). Такие контакты были куплены.


Вот чертеж контакта с сайта продавца, размеры на нем более-менее соответствуют действительности:


Смонтировать эти контакты можно прямо в вилке разъема, они нормально входят в контакты разъема, если удалить пружинящие язычки. Вставляются довольно плотно, потом пропаиваются. Дальше обычным образом разделывается провод.



В корпусе разъема отверстия надо немного увеличить (сверлом примерно 1.4 мм), чтобы прошли конические части контактов.


Провод готов.



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


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


Для программирования использую bat-файл такого содержания:

C:\Progra~1\STMicr~1\STM32S~1\ST-LIN~1\ST-LINK_CLI.exe -c SWD UR -P %1 -V -Rst -Run
pause

В командной строке ему передается имя hex-файла. Иногда вписываю имя прямо в этот файл, когда надо прошивать много одинаковых плат. При вызове утилиты командной строки ST-LINK_CLI.exe используется параметр UR, который означает Connect Under Reset. Если сигнал сброса не используется, этот параметр не нужен. Описание параметров командной строки есть в документе UM0892 «STM32 ST-LINK utility software description».

Программирую в среде IAR, для удобства прошивки после компиляции назначил кнопку F8 для запуска утилиты ST-LINK. Настройки следующие:


В полях введены следующие строки:

C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe

-c SWD -P $TARGET_BPATH$.hex -V -Rst –Run

Вывод отладочной информации через SWO не проверял, на своих платах я никогда SWO не вывожу на разъем. Но в самом программаторе сигнал SWO выведен на контакт 13 разъема. По протоколу JTAG также работать не пробовал за ненадобностью. Есть проекты самодельных программаторов, которые имеют более широкие возможности, например, вот этот. Но при такой цене за готовый программатор делать что-то свое не имеет особого смысла.


Можно подвести итог:

Плюсы:

+ работает;
+ красивый корпус;
+ можно программировать STM32 и STM8;
+ поддержка JTAG и SWD;
+ в комплекте USB кабель и все необходимые провода.

Минусы:

– не лучшее решение штатного переходника для SWD.
Планирую купить 0 Добавить в избранное +11 +11
свернуть развернуть
Комментарии (6)
RSS
+
avatar
  • darek
  • 20 ноября 2024, 02:44
0
Комментарий ожидает проверки администрацией сайта. Подробнее...
+
avatar
0
понравилось, плюсанул. Но это смутило — 'можно сделать ножовкой и напильником, но я делаю это на фрезерном станке'. Стеклотекстолит дома на фрезере и этим потом дышать, ну такое…
+
avatar
  • Leoniv
  • 20 ноября 2024, 03:14
+1
Да, крайне неприятная работа. Но от напильника пыли будет не меньше.
+
avatar
0
Хмм…
а чем не угодили «народные» стлинки по полтора-два бакса?
я про такие и подобные — тысячи их на Алишечке, можно спокойно выбрать для своего региона с наименьшим ценником
https://aliexpress.com/item/1005003575620794.html
+
avatar
  • sswa
  • 20 ноября 2024, 03:41
0
А как у этого программатора с обновлением прошивки? (в обзоре не увидел)
+
avatar
+2
Леонид Иванович, спасибо большое за идею с pogo-pin в разъём Dupont — не приходило в голову, обычно кусочек макетки использовал.
Кстати, на Али продаются «прищепки» с такими пинами, которые идеально подойдут в Вашей ситуации — можно будет не держать разъём, а подключить прищепку и убрать руки. Вот пример:прищепка для программирования
К сожалению, Вы приобрели явную подделку оригинального программатора — в оригинале множество дополнительных деталей, например, защитный буфер на линиях данных.
Согласен, что с большинстве ситуаций достаточно и такой версии без защит, но тогда экономически более целесообразно купить «свисток» ST-Link на том же Али — стоит 2-3 доллара, начинка абсолютно такая же, как у Вашего программатора. Единственный недостаток — разведены только линии SWD, полноценный JTAG использовать не получится. Но не думаю, что это существенно — у микроконтроллеров STM32 SWD отлично работает. Вот пример: St-Link V2
Если ориентироваться на будущее, можно поискать ST-Link V3, но они выпускаются в абсолютно убогих исполнениях, стоят дороже, а дополнительного функционала не дают.
Кстати, множество выходов из строя китайских программаторов ST-Link V2 связаны с некачественными кварцами на 8 МГц. Если программатор перестал подавать признаки жизни, стоит попробовать перепаять кварц — зачастую помогает.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.