В этом руководстве (перевод статьи [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].
Наша задача - записать в память микроконтроллера двоичный код загрузчика [3] с помощью адаптера USB - TTL UART, как было описано в руководстве [2]. Двоичный код загрузчика находится в файле generic_boot20_pc13.bin, который можно загрузить по ссылке [4] (в каталоге binaries можно найти двоичный код загрузчика для многих других плат STM32).
Процесс установки загрузчика по шагам:
1. Выполните необходимые соединения, как показано на рисунке выше. Ножку BOOT0 необходимо перевести в уровень лог. 1, что при включении питания (или при сбросе) переведет микроконтроллер STM32F103C8T6 в режим программирования через его последовательный порт USART (запустится внутренний загрузчик, находящийся в системной памяти ROM микроконтроллера).
Примечание: логические уровни на ножках 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 на рисунке).
6. В окне будет показан дамп памяти программ FLASH микроконтроллера, начиная с адреса 0x08000000. Кликните на кнопку загрузки файла прошивки, она находится слева (на рисунке ниже она показана красной стрелкой).
7. Отобразится окно диалога "Erasing & Programming", см. рисунок ниже. Кнопкой Browse (метка 1 на рисунке) выберите файл прошивки generic_boot20_pc13.bin. Убедитесь, что в поле ввода Start address указано значение 0x08000000 (метка 2 на рисунке). Все опции оставьте, как на рисунке, и кликните на кнопку Start Programming (метка 3 на рисунке).
Программа прошивки начнет записываться в память микроконтроллера, начиная с адреса 0x08000000, и через несколько секунд процесс завершится (отобразится сообщение "File download complete").
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.
После этого запустите файл 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". Остальные настройки будут такими же.
[Загрузка программы]
В качестве простой программы, на которой будем проверять работу сделанных настроек, выберите Blinky Sketch для STM32F103C8T6 Blue Pill Board. Убедитесь что для порта светодиода LED выбран порт PC13, и кликните на кнопку Upload. Программа Blinky Sketch скомпилируется, и через USB-загрузчик [3] будет записана в память микроконтроллера платы.
После загрузки программы светодиод начнет мигать.
[Ссылки]
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. 10. 210427Arduino_STM32-master.zip - подержка плат STM32 в среде программирования Arduino. |