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

Пакет поддержки STM32

Страница в процессе разработки.

Target Hardware — это режим, который обеспечивает предварительную настройку проекта перед генерацией кода, сборкой и загрузкой прошивки, а также запуском модели на микроконтроллере.

Для работы с платами STM32 в данном режиме используется блок EDM-Target-STM32, который обеспечивает генерацию, сборку и загрузку прошивки, а также запуск модели на микроконтроллере.

Параметры блока EDM-Target-STM32

Блок EDM-Target-STM32 настраивает взаимодействие с микроконтроллером через следующие параметры:

  • Путь к проекту CubeMX — полный путь к сгенерированному проекту STM32CubeMX.

  • Путь к тулчейну[1] — полный путь к компилятору arm-none-eabi-gcc.

    При указании <auto> сначала ищется в путях, куда их ставит CubeIDE (если он установлен). Затем в PATH и в системных путях.

    • Пример для Windows:

      C:\ST\STM32CubeIDE_1.13.2\STM32CubeIDE\plugins\
      com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_2.0.100.202309141235\
      tools\bin\
    • Пример для Linux:

      /opt/st/stm32cubeide_1.13.2/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.linux64_2.0.100.202309141235/tools/bin/arm-none-eabi-gcc
  • Путь к STM32CubeProgrammerCLI — полный путь к исполняемому файлу STM32CubeProgrammerCLI.

    Для автоматического обнаружения установленного тулчейна воспользуйтесь выражением <auto> в путях для определения тулчейна:

    stm32 1

  • UART модуль — номер USART, который будет использоваться для интерактивного режима.

    Этот номер должен совпадать с модулем, который необходимо предварительно настроить в STM32CubeMX для передачи данных по UART. Подробная инструкция приведена в разделе Интерактивный режим.

    После настройки в CubeMX укажите тот же номер USART в параметре «UART модуль» блока EDM-Target-STM32 (например, 2 для USART2).

  • COM-порт — последовательный порт, соответствующий выбранному UART модулю (например, COM3 или /dev/ttyUSB0).

Для работы блока необходимо заранее установить программное обеспечение STMicroelectronics (см. раздел «Необходимое ПО»).

Необходимое ПО

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

  • STM32CubeMX — для конфигурирования периферии микроконтроллера и генерации проекта.

  • STM32CubeIDE — рекомендуемая среда разработки, включающая компилятор и средства отладки.

Допускается работа без STM32CubeIDE. В этом случае необходимо установить отдельно:

  • Компилятор gcc-arm-none-eabi

  • Утилиту для прошивки STM32CubeProgrammerCLI

Использование утилит может происходить двумя способами:

  • Указание утилит вручную — в этом случае просто задайте полный путь к компилятору и STM32CubeProgrammerCLI в параметрах блока EDM-Target-STM32. Переменная PATH при этом не используется.

  • Режим <auto> — тогда Engee будет искать утилиты автоматически. В этом случае переменная окружения PATH применяется, и утилиты должны быть доступны через нее.

Подготовка Engee

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

Если пакет поддержки уже установлен, то можно переходить к запуску клиентской программы и подключитесь по выданному URL.

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

  1. Установите и настройте STM32CubeMX.

  2. Создайте проект для вашей платы STM32 и выполните базовую настройку периферии.

  3. Нажмите GENERATE CODE и сохраните проект в удобную директорию.

  4. Установите STM32CubeIDE или отдельно настройте компилятор и утилиту прошивки, если используете внешний тулчейн.

Подробная конфигурация проекта CubeMX для работы с Engee описана ниже в разделе Настройка и запуск модели.

Настройка и запуск модели

  1. Откройте модель Engee.

  2. Нажмите по кнопке выбора целевой платформы и выберите режим Target Hardware:

    target hardware 1

  3. Добавьте блок EDM-Target-STM32 из библиотеки блоков на холст Engee. Если блок отсутствует — обновите пакет поддержки командой:

    engee.package.start("Engee-Device-Manager")
  4. Настройте проект в STM32CubeMX:

    • В разделе Project ManagerProject выберите Copy only the necessary library files.

    • В разделе Project ManagerToolchain / IDE обязательно установите значение CMake.

      stm32 3

      Выбор CMake является обязательным. Без этого формат проекта будет несовместим с Engee.

    • В разделе Code Generator выберите Generate peripheral initialization as a pair of '.c/.h' files per peripheral.

      stm32 2

    • Настройте необходимую периферию и нажмите GENERATE CODE.

      stm32 4

    • Укажите путь к сгенерированному проекту в параметре Путь к проекту CubeMX блока EDM-Target-STM32.

      stm32 5

  5. Выберите режим выполнения модели:

    • Запустить модель на железе target hardware 4 — интерактивное выполнение с управлением из Engee.

    • Запуск в независимом режиме target hardware 3 — автономное выполнение без управления из Engee.

  6. Нажмите кнопку запуска.

Если блок EDM-Target-STM32 не помещен в модель, при запуске появится ошибка:

ErrorException("EDM-Target-STM32 block not found. To start model in Target Hardware mode, the model must include an EDM-Target-STM32 block.")

Особенности настройки для разных режимов

Настройка для FreeRTOS

Проект под FreeRTOS[2] настраивается максимально просто:

  1. В STM32CubeMX откройте Pinout & ConfigurationMiddleware and Software Packs.

  2. Включите FREERTOS.

  3. В разделе FREERTOS Mode and Configuration установите Interface в значение CMSIS_V2.

    stm32 6

  4. Остальные параметры оставьте по умолчанию.

  5. Сгенерируйте код кнопкой GENERATE CODE.

В режиме FreeRTOS ручная настройка частоты выполнения модели не требуется — в отличие от режима bare-metal, где таймер настраивается вручную.

Настройка для bare-metal

В режиме bare-metal[3] частота выполнения модели задается вручную через таймер:

  1. Выберите свободный таймер (например, TIM3).

  2. Установите источник тактирования Internal Clock.

    stm32 7

  3. Рассчитайте параметры таймера по формуле:

    T = ((P + 1) × (R + 1)) / F_CPU

    Где:

    • P — Prescaler

    • R — Counter Period

    • F_CPU — Тактовая частота микроконтроллера

      Пример для 72 МГц:

      P = 7199
      R = 9
  4. Установите значения в параметрах таймера.

    stm32 8

  5. Во вкладке NVIC Settings включите прерывание таймера.

    stm32 9

  6. Добавьте вызов функции model_tick()[4]:

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
      if (htim->Instance == TIM1)
      {
        HAL_IncTick();
      }
    
      if (htim->Instance == TIM3)
      {
        model_tick();
      }
    }
  7. После инициализации таймера добавьте запуск:

    HAL_TIM_Base_Start_IT(&htim3);

Интерактивный режим

Интерактивный режим использует UART для связи с Engee:

  1. В STM32CubeMX выберите свободный USART модуль.

  2. Установите параметры:

    • Baud Rate — 115200 Bit/s

      stm32 10

    • Остальные параметры — По умолчанию

  3. В параметрах блока EDM-Target-STM32 укажите:

    • UART модуль — Номер USART

    • COM-порт — Порт устройства

      stm32 11

Примеры:

  • Linux — /dev/ttyUSB0

  • Windows — COM1

    Проверка доступных портов в Linux:

    ls /dev | grep ttyUSB
Для отображения UART как COM-порта может потребоваться настройка USB_DEVICE. Подробнее см. руководство: STM32 и USB. Реализация USB Virtual COM Port

Решение возможных проблем

Проблемы с подключением по UART

При сообщении Unable connect to target:

  • Проверьте надежность USB-соединения

  • Убедитесь в корректности подключения TX/RX

  • В Linux добавьте пользователя в группу, которая имеет доступ к последовательным устройствам (например, wheel, uucp или другую — в зависимости от вашего дистрибутива).

Проблемы прошивки

Если были удалены якоря USER CODE BEGIN или системный код CubeMX:

  • Удалите поврежденные файлы проекта

  • Сгенерируйте проект заново в CubeMX (нажав GENERATE CODE)

Проблемы сборки

  • Ошибки отображаются в интерфейсе клиентской программы с полным выводом информации о возникшей проблеме

  • Проверьте корректность путей к утилитам

  • Убедитесь, что путь к инструментам указан корректно в параметрах блока и они доступны по указанному пути


1. Тулчейн — это набор консольных инструментов (компилятор, компоновщик и утилиты), которые из исходных файлов проекта собирают прошивку для микроконтроллера.
2. FreeRTOS — это лёгкая операционная система реального времени (RTOS), которая обеспечивает планирование задач, задержки, очереди и другие механизмы, позволяющие удобно выполнять модель параллельно с остальной логикой прошивки.
3. Bare-metal — это запуск программы без операционной системы. Код работает напрямую на микроконтроллере, и все задачи (таймеры, вызовы model_tick(), обработка событий) должны быть настроены вручную.
4. model_tick — это автоматически генерируемая Engee функция, которая отвечает за «такт» модели. Она должна вызываться с нужной периодичностью (обычно 1 мс), чтобы модель выполнялась с правильной частотой.