Введение в STM32CubeProgrammer
STM32CubeProgrammer — это очень мощный инструмент для программирования STM32, выпущенный компанией STMicroelectronics. Он в высокой степени интегрирует функции следующих инструментов:
- STVP или STLinkUtility (инструмент программирования JTAG/SWD)
- STMFlashLoaderDemo (инструмент программирования UART)
- DfuSeDemo (инструмент записи USB)
- ST-LinkUpgrade (инструмент для обновления прошивки программатора Stlink)
Пользовательский интерфейс STM32CubeProgrammer
STM32CubeProgrammer предоставляет как графический, так и командный интерфейс пользователя. Кроме того, он также предоставляет API C++, и пользователи могут интегрировать функции STM32CubeProgrammer в разрабатываемые ими приложения для ПК.
Как показано на рисунке выше, в области настроек справа пользователи могут выбрать подключение к микроконтроллеру STM32 через отладочный интерфейс STLink или коммуникационные интерфейсы, такие как USB и UART. После подключения к микроконтроллеру STM32 в области «Информация об устройстве» можно увидеть текущую модель MCU, версию и размер Flash-памяти. Если подключена официальная плата разработчика ST, также будет отображено название платы разработчика.
Функции STM32CubeProgrammer
STM32CubeProgrammer поддерживает стирание и чтение/запись встроенной памяти микроконтроллеров STM32 через отладочный интерфейс SWD/JTAG STLink или через интерфейсы связи, такие как UART, USB, I2C, SPI и CAN, с использованием заводского загрузчика системы, хранящегося внутри микросхемы.
Ниже приведены основные функции STM32CubeProgrammer:
Стирание и программирование
STM32CubeProgrammer поддерживает стирание отдельных секторов и полное стирание микросхемы флэш-памяти. Он может импортировать различные форматы файлов для программирования, включая двоичные (.bin), elf (.elf, .axf, .out), шестнадцатеричные (.hex) и Motorola S-record (.srec) файлы.
Операция удаления
После установления соединения с целевым микроконтроллером через STLink вы можете стереть секторы Flash на странице «Erasing & Programming» (Стирание и программирование) по секторам или выполнить полное стирание микросхемы, нажав кнопку «Full chip erase» (Полное стирание микросхемы).
Программирование Операция
На странице «Стирание и программирование» вы можете нажать кнопку «Обзор», чтобы импортировать исполняемый файл, а затем нажать «Начать программирование», чтобы запустить процесс программирования.
В качестве альтернативы на странице «Редактирование памяти и файлов» можно открыть исполняемый файл, который необходимо запрограммировать, а затем нажать «Загрузить», чтобы начать программирование.
На странице «Редактирование памяти и файлов» в разделе «Память устройства» вы также можете прочитать значения памяти микроконтроллера в указанном диапазоне адресов и сохранить прочитанное содержимое в виде двоичных (.bin), шестнадцатеричных (.hex) или S-записей (.srec) с помощью меню «Сохранить как».
Помимо программирования всего исполняемого файла, вы можете напрямую изменить значение по определенному адресу на странице «Memory & File Edition» в разделе «Device Memory». После нажатия «Enter» STM32CubeProg автоматически прочитает, изменит, сотрет и запишет обратно. Этот метод можно использовать для программирования однократно программируемых (OTP) байтов.
Чтение/запись опционного байта
На странице OB (Option Byte) можно просмотреть текущие настройки опционных байтов для подключенного микроконтроллера. Здесь также можно изменить значения опционных байтов. Подробное описание опционных байтов см. в справочном руководстве по конкретному микроконтроллеру.
Программирование «два в одном»
Используя режим программирования «Два в одном» на странице «Стирание и программирование», вы можете запрограммировать как флэш-память, так и опционные байты за одну операцию. Настройка опционных байтов выполняется с помощью «STM32CubeProgrammer command-line» с командой «-ob». Например, чтобы установить защиту от чтения на уровень 1 после программирования флэш-памяти, выполните следующие действия:
- Установите путь к исполняемому файлу, который необходимо загрузить.
- Установите флаги «Полное стирание чипа» и «Загрузить файл» в разделе «Автоматический режим».
- В поле ввода «Option bytes commands» (Команды опционных байтов) введите «-ob rdp=0xBB».
- Нажмите «Start automatic mode» (Запустить автоматический режим), и STM32CubeProgrammer последовательно выполнит указанные операции, отображая ход выполнения в окне журнала.
Подробные сведения о формате команды «-ob» см. в разделе 3.2.15 документа UM2237 (Руководство пользователя программного инструмента STM32CubeProgrammer). Определения полей OptByte в команде «-ob» не объясняются в UM2237, но их можно найти, просмотрев вкладку «Option bytes» (Байты опций) в графическом интерфейсе STM32CubeProgrammer, поскольку определения в команде «-ob» соответствуют тем, что указаны здесь. В качестве альтернативы можно использовать команду «-ob displ» для отображения текущей конфигурации всех байтов опций, что позволит понять определения каждого поля OptByte.
Чтение/запись внешней памяти
Если вы хотите читать/записывать данные во внешнюю память, подключенную к STM32 через интерфейсы SPI, FMC, QSPI, вам понадобится внешний загрузчик. CubeProgrammer предоставляет стандартные внешние загрузчики, соответствующие внешней памяти, встроенной в платы разработчика STM32. Если вы используете другую модель памяти, вы можете создать свои собственные файлы внешнего загрузчика (*.stldr). Подробные инструкции см. в разделе 2.3.3 UM2237.
Перед выполнением операций с внешней памятью необходимо выбрать соответствующий внешний загрузчик на странице «External Loader» (Внешний загрузчик). Этот внешний загрузчик будет использоваться в последующих операциях стирания и программирования внешней памяти на страницах «Erasing & Programming» (Стирание и программирование) и «Memory & File Edition» (Редактирование памяти и файлов).
Загрузчик
Микроконтроллеры STM32 поставляются с внутренней системной памятью, содержащей загрузчик, который позволяет обновлять встроенную флэш-память через интерфейсы USART, USB, I2C, SPI и CAN. Поддерживаемый интерфейс загрузчика зависит от модели микроконтроллера STM32. Подробную информацию можно найти в приложении AN2606. STLink v2 и STLink v3 обеспечивают мостовые интерфейсы от протоколов связи USART, USB, I2C, SPI и CAN к USB, что позволяет подключать микроконтроллеры STM32 к ПК.
STM32CubeProgrammer предоставляет интерфейс на стороне ПК для выполнения стирания и программирования встроенной флэш-памяти через загрузчик. STLink v2 поддерживает только интерфейсы связи USART и USB, а STLink v3 добавляет поддержку интерфейсов связи I2C, SPI и CAN. Ранее ST предлагала два отдельных программных инструмента для ПК: «STM32 Flash loader demonstrator» и «Dfuse Demo», каждый из которых поддерживал загрузчик USART и функциональность USB DFU. Теперь вы можете использовать STM32CubeProgrammer, единый программный инструмент, для поддержки всех этих интерфейсов связи.
Окно ввода информации SWO
В процессе разработки часто возникает необходимость вывода отладочной информации. Один из распространенных методов — перенаправление вывода printf на последовательный порт, что занимает один последовательный порт. Другой метод — перенаправление вывода printf на вывод SWO (Serial Wire Output) через интерфейс отладки SWD, что позволяет отправлять отладочную информацию через SWO. Окно SWV (Serial Wire Viewer) STM32CubeProgrammer может отображать отладочную информацию, отправленную через SWO, и сохранять всю полученную информацию в указанный файл «.log».
Интерфейс командной строки
STM32CubeProgrammer предоставляет интерфейс командной строки, который позволяет выполнять большинство его функций путем выполнения команд. Исполняемый файл «STM32_Programmer_CLI.exe» находится в папке «bin» установочного каталога STM32CubeProgrammer. При запуске «STM32_Programmer_CLI.exe» отобразится список поддерживаемых команд и их параметров.
Интерфейс командной строки также предоставляет некоторые функции, недоступные в графическом интерфейсе, такие как создание доверенных пакетов, безопасное программирование, вычисление значений CRC и многое другое. Подробные инструкции см. в UM2237. Пример на рисунке демонстрирует подключение к целевому чипу через интерфейс SWD и установку уровня защиты от чтения 1 с помощью командной строки. Полная команда: «STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB».
Обновление прошивки STLink
После подключения отладчика STLink к компьютеру откройте STM32CubeProgrammer и обновите соединение STLink, чтобы просмотреть текущую версию прошивки STLink. Нажмите кнопку «Обновление прошивки» и откройте инструмент STLinkUpgrade, чтобы обновить версию прошивки STLink.
Как использовать STM32CubeProgrammer?
STM32CubeProg — это комплексный инструмент программирования, который включает в себя такие типичные операции, как чтение, запись (загрузка/программирование), стирание и программирование опционных байтов.
STM32CubeProg Скачать
Официальный сайт: https://www.st.com/en/development-tools/stm32cubeprog.html
Среда установки
STM32CubeProg поддерживает операционные системы Windows, Linux и macOS. Поскольку он основан на JAVA, вам необходимо установить Java Runtime Environment (JRE) на свой компьютер. Процесс установки показан на изображении ниже (версия 2.5.0b):
Подключение микросхем и STM32CubeProg
При использовании STM32CubeProgrammer для подключения к целевой плате через STLINK могут возникнуть случаи, когда подключение не удается. Это может быть связано с низкой версией прошивки в STLINK. Чтобы решить эту проблему, нажмите кнопку «Обновление прошивки», чтобы выполнить обновление прошивки. Во время процесса обновления может потребоваться несколько раз подключить и отключить устройство. После завершения обновления отключите и снова подключите устройство один раз, чтобы STM32CubeProgrammer распознал STLINK.
Программирование и отладка микросхем
После завершения отладки программы необходимо запрограммировать чип с помощью вашего кода. Обычно у вас есть три варианта:
- Использовать интерфейс отладки JTAG/SWD для программирования микросхемы, что часто требует использования программного обеспечения STLink Utility или STVP.
- Запрограммируйте чип через интерфейс UART, используя демонстрационное программное обеспечение STM32 Flash loader на ПК.
- Запрограммировать микросхему через интерфейс USB, используя программное обеспечение USB DfuSe.




