Прошивка blue pill через usb

Обновлено: 08.07.2024

Отладочная плата на микроконтроллере stm32f103c8t6, является одной из самых популярных в любительской среде "электронщиков". Это одна из самых удачных плат в соотношении "цена/функционал", а сам stm32f103xxxx, который выпускается уже 10 лет, является ветераном и первопроходцем микроконтроллеров на ядрах ARM Cortex M3.

    Для быстрого знакомства с платой я предлагаю пройтись по следующим пунктам:
  • Краткий обзор платы;
  • Исправление аппаратного бага с помощью термофена и паяльника;
  • Прошивка загрузчика STM32duino;
  • "Подъем" виртуального COM порта на USB-модуле микроконтроллера stm32f103c8t6 с помощью STM32Cube MX и IAR ARM. Подключение микроконтроллера к планшету на Android.
  • Подключение и написание программы опроса I 2 C модуля RTC DS3231 с помощью STM32duino.

Краткое описание

Полезная информация о плате собрана на страничке проекта STM32duino.

Для начала взглянем на раcпиновку платы:


и принципиальную схему:

На схеме нас будет интересовать резистор R10. На вики STM32duino, относительно этого резистора утверждается следующее:

Т.е. они пишут, что согласно спецификации USB, на линии D+ должен быть установлен резистор номиналом 1.5K в то время как китайцы ставят резисторы на 4.7К или 10К. И далее предлагается поменять его на резистор требуемого номинала. Там даже прилагается фото с результатом переделки:


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

На моей версии платы был установлен резистор на 10K:


Протестировав плату на паре стационарных компьютеров и на одном планшете с Android я могу сказать, что плата скорее всего будет работать и без переделки, но возможно будет подглючивать. У меня она не всегда распознавалась в Windows, а в Android не отображалась в списке подключенных устройств, хотя терминальная программа при этом устройство видела и принимала с него данные.

Поэтому, если есть такая возможность, то резистор все же лучше поменять:


Ну и заодно я впаял штыревой разъем, что бы в лишний раз не мараться. Получилось как-то так:


Ок. теперь когда отремонтирован USB, можно начать программировать.

Прошивка и программирование Blue Pill

Подключаем плату к ST-Link и запускаем "STM32 ST-LINK Utility":


Жмем "Connect to the target" и если в графе Device чип определился правильно, значит все Оk, чип живой и готов к работе. Хотя, это конечно следовало проверить ДО того как браться за паяльник ;)

Попробуем прошить Blink через ST-Link из Arduino. Для этого запустим Arduino с установленным паком Arduino_STM32. В меню выбора платы щелкнем по Generic-STM32F103C series


Из примеров загрузим вариант Blink'а для STM32:


В тексте скетча исправим номер пина PB1 на PC13, т.е. на пин с зеленым светодиодом.


В меню выбора программатора выберем ST-Link:


После чего пробуем прошить:


В итоге имеем вес прошивки в 13 КБайт, и успешный лог выполнения. К конце прошивка немного подвисает, на этапе "waiting for tty device", т.е. в ожидании последовательного порта, как будто бы прошивка происходила через USB-загрузчик, но в целом, все ОК.

Установка USB загрузчика STM32duino

Попробуем поставить загрузчик STM32duino для прошивки через USB-кабель. Для этого скачиваем отсюда прошивку с суффиксом PC13(пин со светодиодом):


Далее загружаем скачанную прошивку в микроконтроллер:


Откладываем в сторону ST-Link, и подключаем микроконтроллер к компьютеру через microUSB разъем. Затем снова запускаем Arduino IDE и в опции "Upload Method" указываем "STM32duino bootlooder".

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


Замечу, что прошивалось через Linux версию Arduino IDE.

Здесь есть один нюанс. Джампики на плате должны находиться в положении "ноль". Если они, допустим, будут вообще сняты, то Arduino не сможет перезагрузить микроконтроллер перед прошивкой, и он не сможет войти в режим загрузчика. Так же должно быть понятно, что если теперь прошить микроконтроллер через ST-LINK, то загрузчик затрётся.

Теперь я отложу эту плату в сторону чтобы не затереть загрузчик STM32duino, который еще понадобится, и возьму другую. Попробуем поднять на микроконтроллере Virtual COM Port c помощью STM32Cube MX и IAR ARM.

Прошивка в Virtual COM PORT

Запускаем "куб" и открываем новый проект:


Выбираем смою модель микроконтроллера:


Выставляем тактирование от кварца, и включаем отладку по SWD:


Включаем USB Full-Speed модуль:


Выставляем режим работы USB модуля как Virtual COM Port:


Для индикации рабочего цикла задействуем светодиод на PC13 ножке:


С конфигурацией GPIO покончено, переходим к настройке тактирования. Сразу же откажемся от автоматических настроек:


Настроим тактирование например так:


Осталось дело за малым, задать идентификатор для ножки PC13:




С "кубом" закончили, экспортируем проект в IAR ARM:


Настройка параметров экспорта: имя проекта, среда разработки, рабочие каталоги:


После чего открываем проект в IAR:


В главный цикл добавим следующий код:



Все, можно нажимать на компиляцию и загружать прошивку в микроконтроллер. "Весит" она кстати тоже не мало, десять килобайт. Можно убирать в стол ST-Link, он больше не понадобится. Подключаем микроконтроллер через USB к компьютеру, если речь идет о Linux, то больше ничего делать не надо, драйвер уже имеется в ядре и при подключении выдает такой лог:

Можно открывать терминальную программку и смотреть на всплывающие строки: "hello world!"

Если же речь идет о Windows, то потребуется еще поставить драйвер com-порта. Для этого зайдем на my.st.com, залогинимся и в строке поиска ведем запрос: "stm32 virtual com port"


В выпадающем списке нам сразу предлагается STSW-ST32102, он то нам и нужен. Скачиваем, распаковываем, находим инсталятор:

Подводный камень кроется в том, что после установки драйвера его еще нужно будет установить ;)

Т.к. у меня виртуальная машина, я пробрасываю в нее свое устройство:


Операционка обнаруживает новое устройство и предлагает установить драйвер:


Нам нужно указать папку в которую распаковались драйвера.


Они должны быть в "Program Files\STMicroelectronics\Virtual comport driver\Win7". Я не знаю, чем руководствовались парни из STM кидая драйвера от WinXP в папку Win7. Если у вас операционка Win7 или Win8, то в соответствующих папках будут находиться инталяторы для этих операционок, их нужно запустить. А делать так как я показываю, не надо. Это только для Win2000/XP/Vista.


Щелкаем на установку драйвера:


В случае успеха, система выдаст соответствующий репорт:


Теперь устройство можно будет найти в диспетчере устройств:


Теперь можно запустить терминальную программку, чтобы посмотреть на выводимые микроконтроллером через USB данные:


Подключение микроконтроллера STM32F103C8T6 к Android-планшету

Микроконтроллер с USB портом можно подключить не только к стационарному компьютеру, но и Ardroid устройству.

На моем планшете с root-доступом, устройство прекрасно видно:


Скачанная наугад программка usb-терминал, сразу нашла устройство:



В принципе, даже не изучая Java и AndroidStudio, используя лишь NDK, можно написать хороший код для сопряжения Android-девайсов и STM32-микроконтроллеров. Это может дать новую жизнь старым смартфонам и планшетам, которые можно использовать для отображения информации или управления чем-то.

Подключение I 2 C модуля DS3231

Теперь я снова беру плату с прошитым загрузчиком STM32duino, и попробую сделать, как говориться, без лишней пыли, что-то более полезное чем hello_world, а именно подключить RTC DS3231 через интерфейс I 2 C.

Микроконтроллер stm32f103c8t6 имеет два аппаратных I 2 C интерфейса. Дефолтовый интерфейс в Medium_Density чипах висит на пинах PB6 и PB7:


Подключаем модуль к микроконтроллеру:


В Arduno IDE копируем этот скетч, компилируем, загружаем, смотрим на результат работы:

В этом руководстве (перевод статьи [1]) показано, как записать загрузчик USB (USB Bootloader) в память микроконтроллера STM32F103C8T6 платы Blue Pill. С помощью этого загрузчика можно намного удобнее программировать плату Blue Pill Board через её порт USB, без необходимости применения дополнительного внешнего оборудования (такого как отладчик ST-Link или преобразователь интерфейсов USB - TTL UART).

Примечание: настоятельно рекомендуется предварительно ознакомиться с базовым руководством [2], чтобы получить общее понятие о конфигурации, настройках, соединениях платы Blue Pill.

Самая главная киллер-фича платы Arduino UNO (или любых подобных плат Arduino), из-за которой она стала такой популярной - простота программирования. Все, что нужно - просто подключить платку Arduino к компьютеру PC, запустить среду Arduino IDE, выполнить пару простых настроек - и после этого можно сразу погрузиться в мир программирования. Это действительно очень просто, если Вы правильно выбрали в настройках модель платы и правильный порт USB.

Изначально нельзя сказать то же самое про плату STM32F103C8T6 Blue Pill. В руководстве [2] было показано, как программировать обычную плату с микроконтроллером STM32F103C8T6 с помощью дополнительного внешнего адаптера USB - последовательный порт TTL UART. Описанный процесс выгрузки программы через адаптер FTDI не очень сложен, однако чтобы выгрузить программу, нужно каждый раз переключать микроконтроллер в режим программирования через его системный загрузчик (находящийся в ROM), и для нормальной работы нужно переключаться обратно (для чего ножку BOOT0 надо переводить в уровни лог. 1 и лог. 0).

Было бы проще, если использовать штатный microUSB порт платы Blue Pill для программирования. Загрузчик с открытым исходным кодом STM32F103C8T6 USB Bootloader [3] предоставляет такую возможность. С ним можно просто подключить плату Blue Pill через USB, и через него загрузить свою программу прямо из среды Arduino IDE. Как дополнительное преимущество - не придется манипулировать ножкой BOOT0, её можно просто оставить в рабочем режиме.

Для работы нам понадобиться следующее:

• Платка STM32F103C8T6 Blue Pill.
• Преобразователь интерфейсов USB - TTL UART (на чипе FTDI, CH340 или любой другой).
• Несколько соединительных проводов.
• Резистор 1.8 кОм (не обязательно).
• Компьютер PC с установленной системой программирования Arduino IDE

На рисунке ниже показана схема соединений между платой STM32 Blue Pill и преобразователем USB - TTL UART. Она такая же, как была описана в руководстве [2].

STM32 BluePill Connections for Programming fig01

Наша задача - записать в память микроконтроллера двоичный код загрузчика [3] с помощью адаптера USB - TTL UART, как было описано в руководстве [2]. Двоичный код загрузчика находится в файле generic_boot20_pc13.bin, который можно загрузить по ссылке [4] (в каталоге binaries можно найти двоичный код загрузчика для многих других плат STM32).

Процесс установки загрузчика по шагам:

1. Выполните необходимые соединения, как показано на рисунке выше. Ножку BOOT0 необходимо перевести в уровень лог. 1, что при включении питания (или при сбросе) переведет микроконтроллер STM32F103C8T6 в режим программирования через его последовательный порт USART (запустится внутренний загрузчик, находящийся в системной памяти ROM микроконтроллера).

STM32 BluePill BOOT0 BOOT1

Примечание: логические уровни на ножках BOOT0 и BOOT1 переключаются желтыми перемычками. Резистор 1.8 кОм устанавливать не обязательно. Иногда это может понадобиться, при неуверенной работе интерфейса USB, если внутренней подтяжки pull-up не хватает.

2. Подключите к компьютеру адаптер USB - TTL UART, и подайте питание на плату Blue Pill. Питание можно подать через порт microUSB платы Blue Pill, либо так, как показано на рисунке выше - некоторые адаптеры USB - TTL UART выводят на свои контакты напряжение 5V или 3.3V. Запомните, какой номер COM-порта определился на компьютере, в Windows это можно узнать с помощью Диспетчера Устройств.

3. Выберите в каталоге binaries нужный файл загрузчика. Для платки Blue Pill нужен файл прошивки generic_boot20_pc13.bin [4].

Примечание: прошивки для разных плат отличаются в основном только ножкой микроконтроллера, к которой подключен светодиод. У платы Blue Pill это цифровой порт 13 по системе нумерации портов Arduino, что и отражено в имени файла прошивки загрузчика generic_boot20_pc13.bin.

Основные подготовительные работы сделаны. Остается самый важный шаг - выгрузка прошивки загрузчика через адаптер USB - TTL UART. Выгрузить прошивку можно двумя способами - с помощью утилиты STM32CubeProgrammer [5], либо с помощью утилиты STMFlashLoader Demo [6]. И тот и другой способ работают одинаково хорошо, в этой статье описано применение STM32CubeProgrammer.

4. Этот шаг можно пропустить, если утилита STM32CubeProgrammer уже установлена. Загрузите с сайта st.com утилиту STM32CubeProgrammer и установите. Утилита загружается в виде архива наподобие en.stm32cubeprg-win64_v2-7-0.zip (имя зависит от целевой операционной системы и от версии), для загрузки требуется регистрация на сайте st.com (регистрация несложная и бесплатная). Раскройте архив, и запустите находящийся в нем инсталлятор. При установке оставляйте все опции по умолчанию. После установки исполняемый файл утилиты STM32CubeProgrammer.exe будет находиться в папке наподобие "C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer".

5. Запустите утилиту STM32CubeProgrammer, выберите COM-порт для подключения (метки 1 и 2 на рисунке ниже). В этом примере показан выбор COM4, но в вашем случае может быть другой номер COM-порта, который был подключен на шаге 2. Оставьте остальные опции по умолчанию и кликните на кнопке Connect (метка 3 на рисунке).

STM32 BluePill STM32CubeProgrammer config1 fig02

6. В окне будет показан дамп памяти программ FLASH микроконтроллера, начиная с адреса 0x08000000. Кликните на кнопку загрузки файла прошивки, она находится слева (на рисунке ниже она показана красной стрелкой).

STM32 BluePill STM32CubeProgrammer config2 fig03

7. Отобразится окно диалога "Erasing & Programming", см. рисунок ниже. Кнопкой Browse (метка 1 на рисунке) выберите файл прошивки generic_boot20_pc13.bin. Убедитесь, что в поле ввода Start address указано значение 0x08000000 (метка 2 на рисунке). Все опции оставьте, как на рисунке, и кликните на кнопку Start Programming (метка 3 на рисунке).

STM32 BluePill STM32CubeProgrammer config3 fig04

STM32 BluePill STM32CubeProgrammer config4 fig05

8. Закройте утилиту STM32CubeProgrammer, отключите адаптер USB - TTL UART от компьютера. Переставьте перемычку BOOT0 обратно (для уровня лог. 0), после включения питания сразу будет запускаться программа загрузчика.

[Установка необходимых драйверов]

9. Перед тем, как продолжить, нужно скачать драйверы. Сначала загрузите ZIP-архив по ссылке [6], это драйверы для Arduino. Распакуйте содержимое архива, и переименуйте распакованную корневую папку как Arduino_STM32. Скопируйте эту папку со всем содержимым в директорию "C:\Users\ИмяПользователя\Documents\Arduino\hardware" (здесь вместо ИмяПользователя будет другой каталог, соответствующий имени текущего пользователя операционной системы). Если каталог Arduino\hardware не существует, то создайте его.

10. Откройте консоль командной строки с правами администратора, и перейдите в каталог "C:\Users\ИмяПользователя\Documents\Arduino\hardware\Arduino_STM32\drivers\win”. Запустите файл install_drivers.bat, это установит Maple DFU Driver и Maple Serial Driver.

STM32 BluePill STM32CubeProgrammer Maple DFU Drivers fig06

После этого запустите файл install_STM_COM_drivers.bat для установки STM Serial Driver.

[Конфигурирование Arduino IDE]

11. Если Arduino IDE уже открыта, закройте её, подключите STM32 Blue Pill к компьютеру PC кабелем microUSB, и снова запустите Arduino IDE. В Arduino IDE перейдите в меню Tools и сделайте необходимые изменения в селекторе платы (Board Selector) так, как это было описано в руководстве [2]. Но сейчас необходимо поменять метод выгрузки программы (Upload Method) на "Maple DFU Bootloader 2.0". Остальные настройки будут такими же.

STM32 BluePill STM32CubeProgrammer Bootloader Arduino Config1 fig07

[Загрузка программы]

В качестве простой программы, на которой будем проверять работу сделанных настроек, выберите Blinky Sketch для STM32F103C8T6 Blue Pill Board. Убедитесь что для порта светодиода LED выбран порт PC13, и кликните на кнопку Upload. Программа Blinky Sketch скомпилируется, и через USB-загрузчик [3] будет записана в память микроконтроллера платы.

Уроки STM32

В уроке получим минимальную информацию об отладочной плате STM32F103C8T6. Добавим к плате компоненты необходимые для загрузки программ в микроконтроллер (прошивка FLASH).

В наших уроках будем использовать отладочную плату на базе микроконтроллера STM32F103C8T6.

Часто ее называют ”Blue pill”, в переводе – синяя таблетка или пилюля.

STM32F103C8T6

STM32F103C8T6

STM32F103C8T6

По моей партнерской ссылке плата стоит всего 175 руб.

Технические характеристики платы STM32F103C8T6.

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

Микроконтроллер STM32F103C8T6,
ядро ARM Cotrex M3
Число разрядов 32 бита
Максимальная частота 72 мГц
Объем памяти программ (FLASH) 64 / 128 кБайт
Объем памяти данных (RAM) 20 кБайт
Выводы 37
Таймеры общего назначения 3
Расширенный таймер с ШИМ управления двигателем 1
Системный таймер 1
Сторожевые таймеры 2
UART 3
SPI 2
I2C 2
CAN 1
USB 1
Контроллеры прямого доступа к памяти 7
АЦП 2 АЦП, 10 каналов, время преобразования 1 мкс
Часы реального времени есть
Аппаратный модуль расчета CRC есть
Напряжение питания микроконтроллера 2 … 3,6 В
Напряжение питания платы 5 В
Ток потребления до 50 мА
Размеры платы 53 x 22,5 мм

Выводы микроконтроллера непосредственно соединены с выводами платы.

Распиновка STM32F103C8T6

Сейчас обращаем внимание на следующее:

  • Микроконтроллер питается от напряжения 3 В и высокие уровни выходных и входных дискретных сигналов у него тоже 3 В. Но часть выводов, обозначенных на схеме закрашенной точкой, допускают при использовании в качестве входов подключение сигналов с уровнями 5 В. Так называемые толерантные к 5 В входы. Остальные входы рассчитаны на напряжение не более напряжения питания, обычно 3 В. Повышение этого напряжения свыше 4 В приведет к повреждению микроконтроллера.
  • При использовании в качестве выходов, выводы микроконтроллера допускают вытекающий и втекающий ток не более 20 мА. Рекомендуется не более 8 мА. Но 3 вывода, отмеченные восклицательным знаком, могут быть использованы только в схемах с втекающим током и не более 3 мА.
  • К выводу PC13 подключен светодиод общего назначения. Светится он при низком уровне сигнала.

Система питания платы.

Схема цепей питания выглядит так.

Схема питания STM32F103C8T6

Узел вырабатывает напряжение 3,3 В, необходимое для питания микроконтроллера. Используется стабилизатор XC6204.

Он получает питание 5 В либо с USB порта, либо с вывода платы 5 V. Эти цепи соединены непосредственно без защитного диода. Поэтому использовать плату с одновременным питанием от этих двух источников нельзя.

Ток потребления микроконтроллера зависит от частоты тактирования и использования периферийных устройств.

Частота, мГц Ток потребления, мА
Все периферийные устройства включены 72 50
48 36
36 29
24 20
16 15
8 9
Все периферийные устройства выключены 72 33
48 25
36 20
24 14
16 11
8 7

Я привел эту таблицу, чтобы вы поняли насколько важно выбирать оптимальную частоту тактирования, особенно в приложениях критичных к энергопотреблению. Микроконтроллеры STM32 позволяют это делать гибко и оперативно.

Вот полная принципиальная схема платы.

Схема отладочной платы STM32F103C8T6

Загрузка программы в микроконтроллер с помощью системного бутлоадера.

Четырех контактный разъем на торце платы предназначен для загрузки программ с помощью аппаратного программатора, например StLink. Но в микроконтроллере существует программный загрузчик, позволяющий зашить программу через UART 1 (выводы A9 и A10). Он называется системным загрузчиком и зашивается в память микроконтроллера на этапе производства.

За режим работы платы отвечают 2 желтые перемычки.

Это обычный режим работы. При включении или сбросе запускается программа из FLASH.

Перемычки STM32F103C8T6

При таком положении перемычек запускается системный загрузчик. Это режим прошивки FLASH-памяти микроконтроллера.

Перемычки STM32F103C8T6

При таком положении перемычек программа загружается в ОЗУ. Используется на этапе отладки для сохранения ресурса программирования FLASH-памяти.

Соответствие состояния входов BOOT и режимов работы микроконтроллера STM32. Перемычка BOOT0 на рисунках расположена сверху.

BOOT1 BOOT0 Режим запуска программы
0 0 Внутренняя FLASH
1 0
0 1 Системная память
1 1 Внутреннее ОЗУ

Таким образом, процесс программирования через системный бутлоадер выглядит так:

  • подключить выводы A9 и A10 к COM порту компьютера;
  • установить перемычку BOOT0 в режим запуска из системной памяти;
  • сбросить микроконтроллер;
  • запустить на компьютере программу прошивки FLASH микроконтроллера;
  • вернуть перемычки в состояние запуска программы из FLASH;
  • сбросить микроконтроллер.

Во первых в современных компьютерах не часто встречается COM порт. Во вторых слишком много манипуляций с перемычками и сбросом. Утомительное занятие.

Я упростил этот процесс так.

Плату подключил к компьютеру через мост USB-UART. Я использовал PL2303, но можно применить любой другой модуль, даже плату Ардуино со встроенным преобразователем интерфейсов. Например, Arduino Nano. Надо только соединить вход сброса с землей для того, чтобы микроконтроллер не влиял на сигналы преобразователя интерфейса CH340.

Вместо перемычки BOOT0 я установил кнопку. Еще одну кнопку припаял на сигнал сброса. Штатной кнопкой сброса пользоваться неудобно.

Вот моя схема отладочного модуля.

Схема прошивки STM32F103C8T6

Резистор 10 кОм припаян между выводами трех контактного разъема PLS, установленного вместо перемычки BOOT0.

Питание плата STM32 получает от моста USB-UART. На нем надо установить перемычку питания в положение 5 В.

У меня все это выглядит так.

Прошивка STM32F103C8T6

Прошивка STM32F103C8T6

Прошивка STM32F103C8T6

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

  • Нажимаю и удерживаю кнопку ПРОШИВКА, кратковременно нажимаю кнопку СБРОС.
  • Загружаю программу во FLASH микроконтроллера.
  • Отпускаю кнопку ПРОШИВКА.
  • Нажимаю кнопку СБРОС.

Все это делается пальцами одной руки.

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


Данное руководство по прошивке микроконтроллеров STM32. В частности и на примере blue pill, на которой установлен контроллер STM32F103C8T6. Если вы знакомы с ардуино, то понимаете, что контроллер можно прошить программатором, либо через встроенный загрузчик. Но в отличии от AVR, и arduino в семействе STM32 загрузчик уже зашит в микроконтроллер. Да, не нужно прошивать загрузчик в пустой кристалл! Он уже зашит с завода, и зашит так, что он не может слететь. Что бы вы не вытворяли с STM32 загрузчик не слетит.

И при этом его в отличии от AVR не окирпичить неправильно зашитыми фьюзами! Неграмотными действиями при прошивке вы не убьете STM32, не переживайте! Да AVR можно восстановить высоковольтным программатором, но у всех ли он есть? Я собирал AVR FUSE BIT DOCTOR для этого. Был грешок, косячил с тактированием.

Теперь о 2х самых распространенных. Это через этот самый загрузчик и через отладочный разьем. В первом случае потребуется USB то UART переходник. Кто пользуется ардуино у них эти переходники или есть, или распаяны на плате с ардуино.

Если нету, то лучше купить внешний, например такой

CH340G RS232

CH340G RS232

Прошивка STM32 (STM32F103C8T6 )через UART, через выстроенный загрузчик.

Для прошивки через встроенный загрузчик потребуется программа Flash Loader Demonstrator.

Во первых переходник нужно переключить на напряжение 3,3 вольта.

USB to UART для STM32

Перемычка на 3,3 вольта

Установка перемычек

Установка перемычек

Запустить программу Flash Loader Demonstrator и выбрать в ней COM порт, к которому подключена плата (если в компьютере у вас нет ком порта, то в списке будет всего 1 порт, не ошибетесь).

Выбор порта в программе flash loader demonstrator

Выбор порта в программе flash loader demonstrator

Дальше, если все верно подключено, то программа выведет вот такое вот окно.

Контроллер обнаружен flash loader demonstrator

Контроллер обнаружен flash loader demonstrator

Тут выбирать больше не чего, и нужно нажать кнопку NEXT. На следующей вкладке программы, на которой тоже ничего интересного, просто служебная информация, которая мало кому интересна, трогать тут ничего не нужно, и смело можно жать NEXT.


А вот на следующей вкладке нужно выбрать файл который нужно прошить.

Выбор файла для прошивки

Выбор файла для прошивки

Больше тут ничего трогать не надо, жмем порядком надоевший NEXT, и запускаем тем самым процесс прошивки.

Прогресс бар прошивки

Прогресс бар прошивки

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

Окончание прошивки микроконтроллера

Окончание прошивки микроконтроллера

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

Прошивка через отладчик.

Плата Stlink ST-Link V2

Китайский клон ST-LINK V2

Китайский клон ST-LINK V2 для STM32

Соответственно это все китайские клоны, но они прекрасно работают и даже в них самих можно обновить прошивку через программу STM32 ST-LINK Utility.

Прошить контроллер так же просто как и с помощью загрузчика, даже еще проще. Для начала нужно подключить STLINK к bluepill. В голубой таблетке для этого выведены отдельные 4 линии, для питания и отладки. На платах есть вся необходимая маркировка, схема не нужна.


Дальше необходимо запустить программу STM32 ST-LINK Utility

STM32 ST-LINK Utility

STM32 ST-LINK Utility

Для открытия файла с прошивкой необходимо выбрать File->OpenFile и выбрать файл для прошивки

STM32 ST-LINK Utility с открытым файлом


STM32 ST-LINK Utility с открытым файлом

Что бы подключиться к контроллеру необходимо нажать эту кнопку. Контроллер уже должен был быть подключен к программатору, а программатор (отладчик, STLINK, называйте как хотите), к USB порту. Драйвера на ST-Link искать не нужно, они автоматически ставятся с утилитой.

STM32 ST-LINK Utility подключение к микроконтроллеру


STM32 ST-LINK Utility подключение к микроконтроллеру

Для запуска процесса прошивки необходимо выбрать пункт Target->Program или Target->Program & Verufyty. Во втором случае помимо прошивки, произойдет еще чтение зашитой прошивки обратно и сравнение её с оригиналом, на предмет косяков и мусора. Так вы будете знать, зашилась прошивка верно, или что то пошло не так.


STM32 ST-LINK Utility заливка прошивки
STM32 ST-LINK Utility заливка прошивки -старт

Сама прошивка занимает немного времени.

STM32 ST-LINK Utility процесс заливка прошивки

STM32 ST-LINK Utility процесс заливка прошивки

После успешной прошивки увидите вот эту надпись.

STM32 ST-LINK Utility процесс заливка прошивки

STM32 ST-LINK Utility процесс заливка прошивки

Поздравляю! микроконтроллер прошит.

И ничего в этом сложного не было. В любом случае, если остались вопросы, то пишите в группу в VK

Читайте также: