Прошивка STM32 через UART при наличии hex-файла

Данная статья вам поможет прошить STM32 через UART, если у вас есть скомпилированный hex-файл прошивки.

Нам понадобится любой USB-UART адаптер из следующих:

  • Silicon Labs CP2102;
  • FTDI FT232RL;
  • Prolific PL2303;
  • или любой другой.

Например, такой:

Или такой:

Качаем Flash Loader Demonstrator. Подключаем плату к компьютеру через USB-UART адаптер. Схема подключения такая:

A9 (TX) — RX
A10 (RX) — TX

Перемычку BOOT0 ставим в положение 1 и нажимаем Reset. Это переключит плату в режим загрузчика. В положении 0 данная перемычка включает режим выполнения пользовательской программы сразу после включения/сброса.

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

Здесь мы видим сообщение, что микросхему успешно удалось прочитать. Если это не удаётся, то значит стоит защита от чтения, которую можно снять соответствующей кнопкой, при этом текущее содержимое будет уничтожено. Функцию защиты можно использовать для защиты программы от копирования. Также здесь мы можем увидеть размер флэш-памяти микроконтроллера.

Здесь мы видим адреса страниц памяти, а также их состояние (защита от чтения/записи). Просто жмём Next.

Вот здесь уже предстоит выбрать, что мы хотим сделать с микроконтроллером, а точнее с его памятью. Можно очистить память (полностью или частично), загрузить программу, выгрузить программу из памяти в файл, установить защиту, либо произвольно отредактировать данные. Выбираем загрузку на устройство (Download to device). Выбираем hex-файл с прошивкой. Галочка «Verify after download» позволяет проверить правильность записи программы. Если же поставить галочку «Jump to the user program», то программа будет выполнена сразу же после загрузки, даже без возвращения перемычки BOOT0 на место и перезагрузки контроллера.

Нажимаем Next и если всё пройдёт успешно, то МК будет прошит.


Обратите внимание, что загрузчик «намертво» прошит в STM32 и стереть его невозможно. Это делает данные микроконтроллеры неубиваемыми в плане прошивки. При неудачной заливке программы, просто необходимо перепрошить её ещё раз.