Подключение микроконтроллера STM32 к клону ST-Link V2 четырьмя проводами по интерфейсу SWD — самый быстрый способ залить прошивку, но именно на этапе соединения допускается больше всего ошибок: перепутанные SWDIO и SWCLK, отсутствие общей земли или питание целевой платы от неподходящего источника приводят к отказу соединения ещё до начала программирования. Если утилита выдаёт «No target connected» или «Cannot connect to target», в первую очередь проверяйте именно физику подключения, а не настройки программы.
В этой статье разберём полный цикл работы с программатором: от распиновки и установки драйверов до загрузки HEX-файла через STM32CubeProgrammer и устранения типичных сбоев. Материал подходит как для оригинальных отладчиков ST, так и для распространённых китайских клонов в металлическом корпусе.
Что понадобится для прошивки
Для работы потребуется сам программатор ST-Link V2 (оригинал или совместимый клон), плата с микроконтроллером STM32, четыре соединительных провода и компьютер с Windows, Linux или macOS. На стороне ПК понадобится утилита программирования — чаще всего используют официальный STM32CubeProgrammer от STMicroelectronics, который распространяется бесплатно.
Обратите внимание: клоны ST-Link V2 обычно работают только по интерфейсу SWD и не поддерживают JTAG. Для прошивки STM32 этого достаточно, поскольку SWD — штатный отладочный интерфейс всей линейки.
- 🔌 Программатор ST-Link V2 (оригинал или клон)
- 🧩 Целевая плата с микроконтроллером STM32
- 🔗 4 провода Dupont (мама–мама или мама–папа)
- 💻 Утилита STM32CubeProgrammer или ST-LINK Utility
- 📄 Файл прошивки в формате
.hex,.binили.elf
Распиновка и подключение по SWD
Интерфейс SWD требует минимум четырёх линий: SWDIO (данные), SWCLK (тактирование), GND (общая земля) и 3.3V (контроль напряжения цели или её питание). На платах вроде Blue Pill (STM32F103C8T6) отладочный разъём расположен с торца и подписан прямо на шелкографии: 3V3, SWIO, SWCLK, GND.
Соответствие контактов на клоне ST-Link V2 обычно нанесено на корпус, но у дешёвых клонов маркировка бывает неверной — встречаются экземпляры с перепутанными местами SWDIO и SWCLK. Если соединение не устанавливается при заведомо исправной плате, попробуйте поменять эти два провода местами. Ориентироваться стоит на документацию к конкретному экземпляру программатора.
⚠️ Внимание: контакт 3.3V на ST-Link служит прежде всего для измерения напряжения целевой платы. Не подавайте одновременно питание на цель от программатора и от внешнего источника — это может повредить устройства. Если плата уже запитана отдельно, линию 3.3V всё равно подключите, но не используйте её как второй источник питания.
| Контакт ST-Link | Контакт на плате STM32 | Назначение |
|---|---|---|
| SWDIO | SWIO / PA13 | Линия данных |
| SWCLK | SWCLK / PA14 | Тактовый сигнал |
| GND | GND | Общая земля (обязательно) |
| 3.3V | 3V3 | Опорное напряжение / питание цели |
| NRST (опционально) | NRST | Аппаратный сброс, нужен для Connect Under Reset |
Установка драйверов и программного обеспечения
На Windows перед первым подключением установите драйвер ST-LINK — он входит в комплект поставки STM32CubeProgrammer либо доступен отдельным пакетом на сайте STMicroelectronics. Без драйвера устройство определится в диспетчере устройств с восклицательным знаком, и утилиты его не увидят.
После установки подключите программатор к USB и проверьте, что он появился в системе без ошибок. На Linux дополнительно могут понадобиться правила udev для доступа к устройству без прав root — они описаны в документации к используемому инструментарию.
Пошаговая прошивка через STM32CubeProgrammer
Запустите STM32CubeProgrammer, в правом верхнем углу выберите тип подключения ST-LINK и нажмите кнопку Connect. При успехе в логе отобразится информация о целевом чипе: семейство, объём Flash и Device ID. Если соединение не установилось — программа выдаст ошибку, и нужно возвращаться к проверке проводки.
Далее откройте вкладку Erasing & Programming, укажите путь к файлу прошивки и нажмите Start Programming. Для файлов формата .bin дополнительно потребуется указать стартовый адрес — для большинства STM32 это начало Flash-памяти 0x08000000. Для .hex и .elf адреса уже содержатся в файле.
☑️ Проверка перед прошивкой
После завершения загрузки утилита выполнит верификацию записанных данных. Совпадение контрольных сумм означает, что прошивка записана корректно. Микроконтроллер перезапустится и начнёт выполнение новой программы автоматически либо после сброса.
STM32CubeProgrammer CLI — прошивка из командной строки:
STM32_Programmer_CLI -c port=SWD -w firmware.hex -v -rst
Типичные ошибки и их устранение
Самая частая проблема — сообщение No STM32 target found или Cannot connect to target. Возможные причины: перепутаны линии данных и тактирования, отсутствует земля, плата не запитана либо выводы PA13/PA14 в предыдущей прошивке переназначены под другие функции. В последнем случае помогает режим Connect Under Reset (выбирается в настройках подключения) — программатор удерживает чип в сбросе и подключается до старта пользовательского кода.
Ещё одна ситуация — активированная защита от чтения RDP (Read Protection). Тогда попытка подключения завершается ошибкой о защищённом устройстве. Снятие защиты выполняется через опцию отключения RDP в STM32CubeProgrammer, но учтите: при этом содержимое Flash-памяти полностью стирается — так задумано архитектурой защиты.
- 🔄 Ошибка подключения → проверить SWDIO/SWCLK, землю и питание
- ⛔ «Device is protected» → снять RDP с полным стиранием чипа
- 💤 Прошивка заблокировала SWD-пины → использовать
Connect Under Reset - 🔌 Программатор не виден в системе → переустановить драйвер, сменить USB-порт
⚠️ Внимание: снятие защиты RDP необратимо уничтожает прошивку, находящуюся в микроконтроллере. Если на устройстве находится единственная копия нужной программы, сначала убедитесь, что у вас есть исходный файл прошивки.
Почему помогает Connect Under Reset
Если предыдущая прошивка перевела пины PA13/PA14 в режим GPIO или увела процессор в глубокий сон, отладчик не успевает захватить управление. Режим Connect Under Reset удерживает линию NRST в активном состоянии во время подключения, поэтому ядро не запускает пользовательский код, и SWD остаётся доступным. Для надёжности линию NRST стоит подключить к соответствующему выводу программатора.
Обновление прошивки самого ST-Link
В некоторых случаях, особенно со старыми оригинальными адаптерами, STM32CubeProgrammer предложит обновить внутреннюю прошивку программатора через встроенный механизм Firmware upgrade. Это штатная процедура: утилита сама загружает актуальную версию. Без обновления новые версии ПО могут отказываться работать со старым адаптером.
Для клонов ситуация иная: официальный апдейтер может не распознать их или работать некорректно. Если клон стабильно прошивает целевые платы, обновлять его прошивку без необходимости не стоит.
FAQ: частые вопросы
Можно ли прошить STM32 без отпаивания с готового устройства?
Да, если на плате устройства выведены контакты SWD и ничто не мешает подключению. Достаточно найти пины SWDIO, SWCLK, GND и 3.3V, подключить программатор и выполнить стандартную процедуру. Учтите, что прошивка чужого устройства может быть защищена от чтения и записи.
Чем ST-Link отличается от прошивки через UART-загрузчик?
UART-загрузчик (через встроенный bootloader и перемычку BOOT0) не требует программатора, но позволяет только записать прошивку. ST-Link дополнительно даёт пошаговую отладку, чтение памяти, работу с option bytes и не зависит от состояния загрузчика.
Какой максимальной длины могут быть провода SWD?
Чем короче, тем лучше: длинные провода вносят помехи и вызывают сбои связи. На практике используют провода длиной порядка 10–20 см. При проблемах с длинными линиями можно снизить частоту SWD в настройках подключения.
Почему CubeProgrammer не видит клон ST-Link?
Возможные причины: не установлен драйвер, неисправен USB-кабель или порт, либо прошивка клона несовместима с текущей версией утилиты. Проверьте устройство в диспетчере устройств и попробуйте альтернативные инструменты, например OpenOCD.
Можно ли использовать ST-Link для отладки, а не только прошивки?
Да, это его основное предназначение. В средах разработки вроде STM32CubeIDE или Keil через ST-Link доступны точки останова, пошаговое выполнение и просмотр регистров и памяти в реальном времени.