Ошибка Error: No target connected в STM32CubeProgrammer почти всегда означает, что программатор не видит микроконтроллер по линиям SWDIO и SWCLK — и причина чаще всего кроется не в самой программе для прошивки STM32, а в отсутствии общего провода GND между отладчиком и платой. Проверьте это соединение в первую очередь, прежде чем менять софт или искать драйверы.
Микроконтроллеры семейства STM32 от STMicroelectronics прошиваются несколькими способами: через отладочный интерфейс SWD/JTAG, через встроенный загрузчик по UART или USB DFU, а также через беспроводные интерфейсы на некоторых сериях. Для каждого способа существует свой инструмент, и выбор правильной программы экономит часы отладки. В этой статье разберём основные варианты, их возможности и типовые ошибки при подключении.
Основные программы для прошивки STM32
Выбор инструмента зависит от задачи: разовая заливка готового HEX-файла, отладка прошивки или массовое производство. Ниже — проверенные решения, которые используются как любителями, так и в промышленности.
- 🔧 STM32CubeProgrammer — официальная универсальная утилита от ST, заменившая устаревшую ST-LINK Utility. Поддерживает SWD, JTAG, UART, USB DFU, SPI, I2C и CAN-загрузчики.
- 🐞 OpenOCD — открытый инструмент для отладки и прошивки через командную строку, часто используется в связке с GDB и в средах вроде PlatformIO.
- 🧩 STM32 ST-LINK Utility — устаревшая, но всё ещё рабочая программа для старых проектов; новые серии микроконтроллеров она может не поддерживать.
- ⚙️ Keil uVision, IAR, STM32CubeIDE — интегрированные среды разработки, в которых прошивка заливается прямо из IDE кнопкой загрузки.
Для большинства задач достаточно STM32CubeProgrammer. Программа бесплатна, работает на Windows, Linux и macOS, имеет как графический интерфейс, так и режим командной строки для автоматизации. Скачивать её следует только с официального сайта STMicroelectronics — сторонние сборки могут содержать устаревшие версии прошивок для самого программатора.
Сравнение популярных инструментов
Чтобы не гадать, какая программа для прошивки STM32 подойдёт именно вам, сверьтесь с таблицей. Данные приведены по ключевым сценариям использования.
| Программа | Интерфейсы | Графический UI | Актуальность |
|---|---|---|---|
| STM32CubeProgrammer | SWD, JTAG, UART, USB DFU, SPI, I2C, CAN | Да | Активно развивается |
| ST-LINK Utility | SWD, JTAG | Да | Снята с поддержки |
| OpenOCD | SWD, JTAG (через адаптеры) | Нет (CLI) | Активно развивается |
| STM32CubeIDE | SWD, JTAG | Да | Активно развивается |
| Flash Loader Demonstrator | UART | Да | Устарела |
Обратите внимание: поддержка конкретной серии микроконтроллеров (например, STM32H7 или STM32U5) зависит от версии программы. Перед работой с новым чипом проверьте список поддерживаемых устройств в документации к конкретной версии утилиты.
Подключение программатора ST-LINK
Для прошивки через SWD потребуется отладчик ST-LINK/V2, ST-LINK/V3 или встроенный отладчик на плате Discovery/Nucleo. Минимальный набор соединений — четыре линии, и ошибка в любой из них приведёт к тому, что целевой чип не определится.
☑️ Подключение ST-LINK к плате
Линия GND — обязательна: без общей земли сигналы SWD не имеют опорного уровня, и связь невозможна. Питание целевой платы можно брать от программатора, но только если потребление схемы невелико — точный допустимый ток указан в документации на вашу модель ST-LINK.
⚠️ Внимание: не подключайте одновременно внешнее питание платы и линию питания от программатора, если не уверены в схемотехнике — встречное включение источников может повредить и отладчик, и целевое устройство.
Если чип ранее был прошит прошивкой, которая переназначает пины SWD или переводит микроконтроллер в глубокий сон, подключение может не удастся. В этом случае в настройках соединения выберите режим Connect Under Reset и задействуйте линию NRST.
Прошивка через STM32CubeProgrammer: пошагово
После установки программы и драйверов (установщик драйвера ST-LINK идёт в комплекте) порядок действий выглядит так. Сначала запустите STM32CubeProgrammer и в правом верхнем углу выберите тип подключения — ST-LINK для отладчика, USB для DFU или UART для последовательного порта. Затем нажмите кнопку Connect.
При успешном соединении в окне появится информация о чипе: серия, объём флеш-памяти, текущее содержимое. Далее откройте вкладку Erasing & Programming, укажите путь к файлу прошивки формата .hex, .bin или .elf, при необходимости отметьте опции верификации и запуска после прошивки, и нажмите Start Programming.
Для автоматизации прошивки на производстве используйте консольную версию утилиты. Пример команды для прошивки через ST-LINK:
STM32_Programmer_CLI -c port=SWD -d firmware.hex -v -rst
Здесь -c port=SWD задаёт подключение, -d — файл прошивки, -v — верификация, -rst — сброс и запуск после завершения. Полный список параметров доступен в документации к утилите.
Прошивка через встроенный загрузчик (UART и USB DFU)
Если отладчика под рукой нет, почти каждый STM32 содержит заводской системный загрузчик (bootloader), записанный в системную память чипа и не стираемый пользователем. Чтобы войти в режим загрузчика, нужно подать на вывод BOOT0 высокий уровень (подтянуть к питанию) и сбросить микроконтроллер. Точная схема активации и набор поддерживаемых интерфейсов зависят от серии чипа — сверяйтесь с документом AN2606 от STMicroelectronics для вашей модели.
Для прошивки по UART потребуется любой USB-UART адаптер с уровнями 3.3 В: линия TX адаптера подключается к RX микроконтроллера и наоборот. В CubeProgrammer выберите тип подключения UART, укажите COM-порт и скорость — загрузчик поддерживает автоопределение скорости в определённом диапазоне.
На чипах с аппаратным USB (например, STM32F103 поддерживает USB только в некоторых сериях загрузчика, а STM32F4 и новее — чаще всего да) доступен режим USB DFU. Плата определяется в системе как DFU-устройство, и в CubeProgrammer достаточно выбрать подключение USB. Для Windows может потребоваться установка драйвера через Zadig, если устройство не распознаётся корректно.
Что делать, если DFU-устройство не определяется в Windows
Откройте Диспетчер устройств и найдите устройство с восклицательным знаком или строку «STM32 BOOTLOADER». Если драйвер не установлен, используйте утилиту Zadig: выберите устройство в списке, укажите драйвер WinUSB и нажмите Install/Replace Driver. После этого перезапустите CubeProgrammer и повторите подключение.
Типовые ошибки и их решение
Даже с правильной программой прошивка не всегда проходит с первого раза. Ниже — самые частые ситуации и способы их диагностики.
- 🔌 No target connected — проверьте GND, целостность проводов SWDIO/SWCLK и наличие питания на целевом чипе. Длинные провода (более 10–15 см) тоже могут мешать — сократите их или снизьте частоту SWD в настройках подключения.
- 🔒 Readout protection enabled — на чипе включена защита от чтения (RDP Level 1/2). Снятие защиты через
Option Bytesприведёт к полному стиранию флеш-памяти — это штатное поведение. - 💾 Ошибка записи по адресу — возможно, файл прошивки собран не под тот адрес начала памяти. Проверьте, что hex/bin рассчитан на стартовый адрес флеша вашего чипа (обычно
0x08000000, но уточните по даташиту). - 🔄 Чип определяется один раз и пропадает — вероятно, прошивка сразу уводит МК в сон или переназначает SWD-пины. Используйте
Connect Under Reset.
⚠️ Внимание: установка RDP Level 2 — необратимая операция на большинстве серий STM32. После неё чип навсегда блокируется для отладки и чтения, вернуть доступ невозможно. Не меняйте Option Bytes, если не уверены в каждом параметре.
Если ни один способ подключения не работает, проверьте сам программатор: подключите его к заведомо рабочей плате. Клоны ST-LINK с сомнительных площадок нередко выходят из строя или требуют обновления собственной прошивки — в CubeProgrammer для этого есть отдельная функция обновления firmware отладчика.
Часто задаваемые вопросы
Какая программа лучше всего подходит для прошивки STM32 новичку?
Оптимальный выбор — STM32CubeProgrammer: официальная утилита с графическим интерфейсом, поддержкой всех способов подключения и русскоязычными инструкциями в сообществе. Она бесплатна и регулярно обновляется производителем.
Можно ли прошить STM32 без программатора ST-LINK?
Да, через встроенный системный загрузчик по UART (нужен USB-UART адаптер) или по USB DFU, если интерфейс поддерживается вашей серией чипа. Для входа в загрузчик вывод BOOT0 подтягивается к высокому уровню перед сбросом. Перечень интерфейсов загрузчика для конкретной модели смотрите в документе AN2606.
Чем отличаются файлы прошивки HEX, BIN и ELF?
HEX содержит адреса записи и потому безопаснее; BIN — «голый» образ, и адрес начала нужно указывать вручную; ELF — файл с отладочной информацией, который CubeProgrammer тоже умеет прошивать. Для передачи готовой прошивки предпочтителен HEX.
Почему CubeProgrammer не видит ST-LINK после обновления Windows?
Возможная причина — слетевший драйвер. Переустановите драйвер ST-LINK из папки установки CubeProgrammer или скачайте пакет драйверов с сайта ST. Также проверьте кабель USB: кабели «только для зарядки» без линий данных — частая причина проблемы.
Как прошить чип, если включена защита от чтения RDP?
Откройте в CubeProgrammer раздел Option Bytes и смените уровень RDP с Level 1 на Level 0. Операция автоматически сотрёт всю флеш-память — восстановить прошивку будет нельзя. RDP Level 2 снять невозможно.