Программатор ST-Link V2 сам по себе не прошивает микроконтроллер — для записи прошивки в STM32 требуется отдельная программа на компьютере, и чаще всего проблемы начинаются именно на этапе её выбора: одна утилита не видит устройство, другая сообщает об ошибке No target connected, третья вообще не определяет чип. Причина обычно кроется в отсутствующем драйвере, неверном подключении линий SWD или устаревшей прошивке самого программатора, а не в неисправности микросхемы.
В этой статье разберём, какие программы подходят для прошивки через ST-Link V2, как установить драйверы, подключить программатор к целевой плате и выполнить запись прошивки. Отдельно рассмотрим типовые ошибки и способы их диагностики, чтобы вы могли проверить каждый шаг самостоятельно.
Какие программы работают со ST-Link V2
Официальным инструментом STMicroelectronics на сегодня является STM32CubeProgrammer — универсальная утилита, которая поддерживает прошивку по интерфейсам SWD, JTAG, UART и USB. Она пришла на смену более старой программе ST-LINK Utility, которая, впрочем, до сих пор используется многими разработчиками благодаря простому интерфейсу.
Помимо официальных решений, существуют альтернативы из экосистемы открытого ПО. Выбор зависит от ваших задач: разовая прошивка готового hex-файла, отладка кода или автоматизация процесса через командную строку.
- 🛠️ STM32CubeProgrammer — официальная утилита ST с графическим интерфейсом и версией для командной строки; рекомендуемый вариант для большинства задач.
- 📦 ST-LINK Utility — устаревшая, но рабочая программа; больше не обновляется, однако подходит для простых операций чтения и записи.
- 🔧 OpenOCD — консольный инструмент с открытым кодом, часто применяется в связке со средами разработки для отладки.
- ⚙️ stlink (texane/stlink) — неофициальный набор утилит для Linux и macOS, популярный у пользователей Unix-систем.
Если вы прошиваете микроконтроллер впервые, начните с STM32CubeProgrammer: программа бесплатна, доступна для Windows, Linux и macOS, а скачать её можно с официального сайта STMicroelectronics после регистрации.
Установка драйверов для ST-Link V2
Без корректно установленного драйвера ни одна программа не увидит программатор. На Windows устройство должно определяться в диспетчере устройств как STMicroelectronics STLink dongle в разделе контроллеров USB. Если вместо этого вы видите неизвестное устройство с жёлтым восклицательным знаком — драйвер не установлен или встал с ошибкой.
Драйвер распространяется вместе с пакетом STSW-LINK009 (подписанные драйверы USB) либо устанавливается автоматически вместе с STM32CubeProgrammer. Порядок действий вручную выглядит так:
- 💾 Скачайте пакет драйверов с сайта STMicroelectronics и распакуйте архив.
- 🖱️ Запустите установщик, соответствующий разрядности вашей системы (для 64-битной Windows — файл с суффиксом amd64).
- 🔌 Подключите ST-Link V2 к USB-порту только после завершения установки.
- ✅ Проверьте диспетчер устройств: программатор должен появиться без предупреждающих значков.
⚠️ Внимание: дешёвые клоны ST-Link V2 в металлическом корпусе иногда продаются с устаревшей внутренней прошивкой. Если программа предлагает обновить прошивку программатора через функцию
ST-LINK → Firmware update, делайте это только при стабильном USB-подключении — прерывание обновления может вывести устройство из строя.
Подключение ST-Link V2 к целевой плате
Прошивка выполняется по интерфейсу SWD, для которого достаточно четырёх линий: SWDIO, SWCLK, GND и 3.3V. Распиновку разъёма вашего программатора следует сверить с его документацией или шелкографией на корпусе — у клонов она может отличаться от оригинала, и подключение «по памяти» нередко становится причиной ошибки связи с чипом.
Обратите внимание на питание целевой платы. Вывод 3.3V на ST-Link V2 в первую очередь служит для определения уровня напряжения целевого устройства, а не для его полноценного питания. Если плата потребляет заметный ток, запитайте её отдельно, а линию 3.3V всё равно подключите — без неё программатор не сможет согласовать логические уровни.
Для надёжного соединения придерживайтесь простых правил: провода делайте короткими, общий провод (GND) подключайте первым, а при нестабильной связи попробуйте снизить скорость SWD в настройках программы.
Прошивка через STM32CubeProgrammer: пошагово
После установки программы и драйверов процедура записи прошивки занимает несколько минут. Запустите STM32CubeProgrammer, в правой части окна выберите тип подключения ST-LINK и нажмите кнопку Connect. Если всё подключено верно, в логе появится информация о целевом чипе, а в основной области отобразится карта памяти.
☑️ Проверка перед прошивкой
Далее перейдите на вкладку Erasing & programming, укажите путь к файлу прошивки в формате .hex, .bin или .elf и нажмите Start Programming. Для bin-файлов программа запросит адрес загрузки — для большинства STM32 это начало флеш-памяти 0x08000000, но для конкретной модели этот адрес стоит уточнить в её документации.
После завершения записи полезно включить опцию верификации — программа сверит содержимое памяти чипа с исходным файлом и подтвердит, что прошивка легла без искажений.
Прошивка через ST-LINK Utility и командную строку
Те, кто привык к ST-LINK Utility, найдут аналогичную логику: подключение через Target → Connect, загрузка файла через File → Open file и запись командой Target → Program & Verify. Учтите, что программа давно не обновляется, и с новыми сериями микроконтроллеров она может не работать — в таком случае переходите на CubeProgrammer.
Для автоматизации удобна консольная версия STM32_Programmer_CLI, входящая в состав CubeProgrammer. Пример команды записи прошивки:
STM32_Programmer_CLI -c port=SWD -w firmware.hex -v -rst
Здесь флаг -v включает верификацию после записи, а -rst перезапускает микроконтроллер по завершении. Точный синтаксис и доступные опции зависят от версии утилиты, поэтому сверяйтесь с встроенной справкой через параметр -h.
Что делать, если чип защищён от чтения (RDP)
Если микроконтроллер ранее был защищён опцией Read Out Protection, программа сообщит о невозможности чтения. Снятие защиты выполняется через опцию сброса RDP в STM32CubeProgrammer, но при этом вся флеш-память автоматически стирается — восстановить прежнюю прошивку после этого невозможно.
Типичные ошибки и их диагностика
Большинство сбоев при работе со ST-Link V2 сводится к нескольким повторяющимся сценариям. Ниже — таблица с частыми ошибками и направлениями проверки. Точные формулировки сообщений могут отличаться в зависимости от версии программы.
| Сообщение об ошибке | Возможная причина | Что проверить |
|---|---|---|
| No ST-LINK detected | Драйвер не установлен или устройство занято другой программой | Диспетчер устройств, закройте вторую копию утилиты |
| No target connected | Обрыв линий SWD или нет питания платы | Качество контактов, питание целевого устройства |
| Cannot connect to target | Чип в режиме сна или SWD отключён в прошивке | Подключение с удержанием сброса (connect under reset) |
| Error during flash programming | Защита секторов или повреждённый файл | Опционные байты, целостность hex-файла |
| Unknown device / target ID | Устаревшая прошивка программатора | Обновление прошивки ST-Link |
Отдельно стоит сказать о ситуации, когда микроконтроллер перестал отвечать после загрузки собственной прошивки, в которой пины SWD переназначены под другие функции. В этом случае помогает режим Connect Under Reset или подключение линии NRST к программатору: чип удерживается в сбросе, и отладчик успевает захватить управление до старта пользовательского кода.
⚠️ Внимание: не подавайте на целевую плату напряжение выше допустимого для неё и не подключайте линию 3.3V программатора к плате, уже запитанной от собственного источника с другим уровнем напряжения — несогласованные уровни могут повредить как микроконтроллер, так и сам ST-Link.
Оригинал и клоны: на что обратить внимание
Оригинальный ST-Link V2 от STMicroelectronics и многочисленные недорогие клоны функционально близки, но есть нюансы. Клоны могут поставляться со старой версией внутренней прошивки, из-за чего свежие версии CubeProgrammer будут требовать обновления. Кроме того, распиновка разъёма у клонов не всегда совпадает с оригиналом, а качество сборки варьируется от партии к партии.
Перед первым использованием клона разумно проверить напряжение на выводе 3.3V мультиметром и убедиться, что оно соответствует ожидаемому уровню. Прежде чем прошивать целевое устройство, убедитесь, что его схема рассчитана на уровень 3.3V, а не 5V — подача неподходящего уровня на линии SWD способна вывести чип из строя.
Если клон отказывается обновлять прошивку штатными средствами, не пытайтесь принудительно перепрошить его сторонними методами без чёткого понимания процесса — в сети встречаются инструкции, после которых устройство восстановлению не подлежит.
Часто задаваемые вопросы
Можно ли прошить через ST-Link V2 микроконтроллеры других производителей?
ST-Link V2 предназначен для микроконтроллеров STM32 и STM8 (для STM8 используется интерфейс SWIM). Прошивка чипов других производителей штатно не поддерживается, хотя через OpenOCD в отдельных случаях возможна работа с некоторыми сторонними ARM-контроллерами — это зависит от конкретной модели и требует проверки.
Программа пишет «No target connected», хотя всё подключено. Что делать?
Проверьте питание целевой платы, целостность проводов SWDIO/SWCLK и наличие общего провода GND. Попробуйте снизить частоту SWD в настройках подключения и использовать режим Connect Under Reset. Если плата ранее прошивалась кодом, отключающим SWD, подключите линию NRST.
Чем отличается ST-Link V2 от V3?
Версия V3 — более современное поколение программатора с повышенной скоростью обмена и дополнительными интерфейсами (виртуальный COM-порт, работа с разными уровнями напряжения). Для базовой прошивки STM32 возможностей V2 в большинстве случаев достаточно.
Нужно ли питать плату отдельно во время прошивки?
Если плата потребляет небольшой ток и рассчитана на 3.3V, её можно запитать от программатора. Для плат с заметным энергопотреблением или собственным источником питания используйте штатное питание платы, а линию 3.3V от ST-Link подключите для согласования уровней — согласно документации на вашу конкретную плату.
Какой файл прошивки выбрать: hex, bin или elf?
Для разовой записи удобнее hex или elf, так как в них уже содержится информация об адресах загрузки. Формат bin — это «сырой» образ без адресов, поэтому при его записи адрес начала флеш-памяти придётся указать вручную (для большинства STM32 это 0x08000000, но уточняйте по документации на вашу модель).