Программирование ARM Программирование STM32 Blue Pill через USB Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Программирование STM32 Blue Pill через USB Печать
Добавил(а) microsin   

В этом руководстве (перевод статьи [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

 Программа прошивки начнет записываться в память микроконтроллера, начиная с адреса 0x08000000, и через несколько секунд процесс завершится (отобразится сообщение "File download complete").

STM32 BluePill STM32CubeProgrammer config4 fig05

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

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

9. Перед тем, как продолжить, нужно скачать драйверы. Сначала загрузите ZIP-архив по ссылке [10], это драйверы для 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 BluePill STM32CubeProgrammer Bootloader Arduino Config2 fig08

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

[Ссылки]

1. How to Upload STM32F103C8T6 USB Bootloader? Program STM32 Blue Pill via USB site:electronicshub.org.
2. Getting Started with STM32F103C8T6 Blue Pill site:electronicshub.org.
3. rogerclarkmelbourne / STM32duino-bootloader site:github.com.
4. generic_boot20_pc13.bin - двоичный файл загрузчика для Blue Pill.
5. STM32CubeProgrammer software for all STM32 site:st.com.
6. STMFlashLoader Demo.
7. rogerclarkmelbourne / Arduino_STM32 site:github.com.
8. Program "blue pill" with STM32 Cores in Arduino IDE site:onetransistor.eu.
9. STM32 "Blue Pill" в среде Arduino - использование STM32F103C8T6 в Arduino IDE site:tataranovich.com.
10210427Arduino_STM32-master.zip - подержка плат STM32 в среде программирования Arduino.

 

Комментарии  

 
0 #1 Алексей 02.12.2024 21:52
После всех процедур все получилось, программа загрузилась, светодиод мигать начал, и тут произошло самое интересное: STM32 перестала определяться в системе, и СОМ порт пропал, повторно уже я не могу на нее зайти.

microsin: проверяйте все по порядку, начиная с напряжений питания и работой тактового генератора. Попробуйте подключиться через интерфейс программировани я SWD. Надо понять, жив кристалл или нет. Если нет, то поможет только перепайка STM32F103C8T6.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page