Документация Engee
Notebook

Программирование STM32 из Engee

В этом примере рассмотрено выполнение модели Engee на микроконтроллере STM32F407VGT6 на отладочной плате Discovery. Приводятся пояснения работы для двух доступных фреймворков для STM32: stm32duino и stm32cube. Приводятся примеры моделей и результаты их выполнения.

Введение

Интеграция Engee со встраиваемыми системами, равно как и с внешними устройствами/интерфейсами осуществляется через платформу Engee.Интеграции.

В первую очередь, необходимо установить этот компонент Engee согласно документации. И cоединить клиентскую программу с сервером Engee.

В этом примере нам потребуются два раздела библиотеки блоков Engee Оборудование -> Target:

  • Arduino - для работы через фреймворк stm32duino
  • STM32 - для работы через фреймворк stm32cube

Используемый в примере микроконтроллер - STM32F407VGT6 на отладочной плате Discovery (STM32F407G-DISC1). Плата имеет встроенный STLink отладчик, его мы и будем использовать для прошивки контроллера.

Для демонстрации работы мы задействуем 4 цифровых выхода, подключенных к встроенным на плату светодиодам LD3-LD6 (PD12-15).

Для обмена данными между микроконтроллером и Engee в интерактивном режиме используем USART2 (RX - PA3, TX - PA2). В качестве преобразователя UART<=>USB используется преобразователь на базе CP2102. Схема соединений представлена ниже.

image.png

Подключим отладочную плату к компьюетру и установим все необходимые драйвера (STLink и CP2102).

stm32duino (EDM-Target-Arduino)

Подготовка необходимых компонентов

При работе через пакет поддержки Arduino требуется:

arduino-cli core install STMicroelectronics:stm32 --additional-urls https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

Теперь, при вызове команды

arduino-cli board listall

можно наблюдать аналогичный вывод:

Наименование платы               FQBN
.
.
.
Blues boards                     STMicroelectronics:stm32:Blues
Discovery                        STMicroelectronics:stm32:Disco
.
.
.
Generic STM32C0 series           STMicroelectronics:stm32:GenC0
Generic STM32F0 series           STMicroelectronics:stm32:GenF0
Generic STM32F1 series           STMicroelectronics:stm32:GenF1
Generic STM32F2 series           STMicroelectronics:stm32:GenF2
Generic STM32F3 series           STMicroelectronics:stm32:GenF3
Generic STM32F4 series           STMicroelectronics:stm32:GenF4
Generic STM32F7 series           STMicroelectronics:stm32:GenF7
Generic STM32G0 series           STMicroelectronics:stm32:GenG0
Generic STM32G4 series           STMicroelectronics:stm32:GenG4
Generic STM32H5 series           STMicroelectronics:stm32:GenH5
Generic STM32H7 Series           STMicroelectronics:stm32:GenH7
Generic STM32L0 series           STMicroelectronics:stm32:GenL0
Generic STM32L1 series           STMicroelectronics:stm32:GenL1
Generic STM32L4 series           STMicroelectronics:stm32:GenL4
Generic STM32L5 series           STMicroelectronics:stm32:GenL5
Generic STM32U0 series           STMicroelectronics:stm32:GenU0
Generic STM32U3 series           STMicroelectronics:stm32:GenU3
Generic STM32U5 series           STMicroelectronics:stm32:GenU5
Generic STM32WB series           STMicroelectronics:stm32:GenWB
Generic STM32WB0 series          STMicroelectronics:stm32:GenWB0
Generic STM32WBA series          STMicroelectronics:stm32:GenWBA
Generic STM32WL series           STMicroelectronics:stm32:GenWL
Generic STM32WL3 series          STMicroelectronics:stm32:GenWL3
.
.
.

Это означает, что arduino-cli готов к работе с STM32

Модель примера

Теперь реализуем модель бегущих огней.

Модель примера - stm32duino_running_lights.engee.

image.png

Она реализует элементарный алгоритм поочередной передачи вектора включаемых и выключаемых светодиодов на демультиплексор с четырьмя выходами.

Для программирования целевого устройства Arduino необходимо установить блок EDM-Target-Arduino.

Для работы с STM32 в этом блоке нужно задать следующие настройки:

  • Производитель: STMicroelectronics.
  • Архитектура: stm32.
  • Идентификатор платы: Disco.

Эти три параметры (Полное имя платы) - это FQBN, который мы видели при вызове команды arduino-cli board listall. Также его можно узнать при вызове arduino-cli board list.

В разделе настроек "Окружение" следует обратить внимание на следующее:

  • Путь к ArduinoCLI - можно указать явно "D:\targets\engee-device-manager.exe", или можно указать auto, тогда путь к arduino-cli будет взят из системных путей.
  • COM порт - имя порта, используемого для обмена данными в интерактивном режиме. В нашем случае - это COM8, в который включен преобразователь CP2102.
  • Директория моделей - это папка на компьютере, в которой будут сохранены файлы сгенерированного из модели C-кода, скрипт .ino и бинарные файлы.

Для работы с периферией - цифровыми выходами используем блок Arduino-digitalWrite.

В них достаточно указать соответствующие номера каналов / имена портов для STM32 в символьном виде. В нашем случае:

:PD12, :PD13, :PD14, :PD15

Выполнение модели

Для выполнения модели нужно переключить среду выполнения: Engee -> Targer Hardware.

После можно выполнить модель в независимом (без обмена данными), или в интерактивном режиме (с обменом данными).

Во втором случае мы получаем возможность наблюдать за записываемыми сигналами в Engee и изменять параметры модели на лету.

Ниже приведена демонстрация работы модели в независимом режиме на STM32:

stm32cube (EDM-Target-STM32)

Подготовка необходимых компонентов

При работе через пакет поддержки Arduino требуется:

  • скачать и установить STM32CubeMX - будет использоваться для конфигурации периферии и генерации кода проекта CubeMX.

  • скачать и установить STM32CubeIDE - будет использоваться для компиляции кода и прошивки контроллера.

    • STM32CubeIDE можно заменить использованием компилятора gcc-arm-none-eabi и утилиты для прошивки STM32CubeProgrammerCLI.
  • скачать, установить и добавить в системные пути CMake для генерации кода проекта.

  • подготовить проект CubeMX с конфигурацией используемой периферии и сгенерировать код.

Подготовка проекта CubeMX

Подробная инструкция для корректной настройки проекта CubeMX приведена в документации.

В этом примере мы используем:

Ниже приведены изображения выбора пинов на карте контроллера:

image.png

Файл проекта CubeMX - stm32cube_running_lights.ioc приложен в файлах проекта.

Модель примера

Модель примера - stm32duino_running_lights.engee.

Рассматриваемая модель отличается от предыдущей только блоками пакета поддержки STM32:

image.png

Блок конфигурации проекта EDM-Target-STM32 требует определить следующие настройки для нашего примера:

  • Семейство: f4xx (для контроллера F407VGT6)
  • Программатор: stlink (так как мы используем встроенный на плату STLink программатор)
  • Путь к тулчейну для сборки: C:\ST\STM32CubeIDE_2.1.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740\tools\bin\arm-none-eabi-gcc.exe (путь к расположению arm-none-eabi-gcc на компьютер, можно указать <auto>е)
  • Путь к утилите для прошивки: C:\ST\STM32CubeIDE_2.1.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.400.202601091506\tools\bin\STM32_Programmer_CLI.exe (путь к расположению STM32_Programmer_CLI на компьютере, можно указать <auto>)
  • Путь к проекту CubeMX: D:\targets\stm32cube\stm32cube_running_lights\ (путь, по которому был сохранен и сгенерирован проект из CubeMX)
  • Планировщик: freeRTOS (определён в проекте CubeMX)
  • COM-порт: COM8 (имя порта для обмена данными в интерактивном режиме)
  • Резервируемый модуль USART: 2 (определён в проекте CubeMX)

После этих настроек можно перейти к выполнению модели на STM32

Выполнение модели

Аналогично предыдущему выполнению, необходимо переключить среду выполнения модели и можно использовать оба режима. Благодаря планировщику FreeRTOS при выполнении кода на контроллере будет выдерживаться размер шага модели.

Демонстрация работы модели на STM32 в независимом режиме показана на записи ниже:

Заключение

В примере мы рассмотрели и проверили программирование STM32 из Engee в двух фреймворках: stm32duino и stm32cube, и, соответственно, для двух пакетов поддержки - Arduino и STM32.

Файлы проекта - модели и проект CubeMX удобно использовать для старта в пользовательских проектах с STM32.