Пакет STM32CubeTM был создан компанией STMicroelectronics с целью упростить жизнь разработчиков за счет сокращения усилий, времени и материальных затрат на проектирование.
STM32CubeTM охватывает весь спектр микроконтроллеров STM32 и включает в себя:
- STM32CubeMX (Рис. 1) - графический инструмент, позволяющий генерировать C код для инициализации STM32 и встроенной в него периферии, используя графический помощник (Wizard)
- Комплексную платформу встраиваемого программного обеспечения, поставляемого для каждой серии (например, STM32CubeWB (Рис. 2) для серии STM32WB) и включающую в себя:
- STM32Cube™ HAL, встраиваемое программное обеспечение уровня аппаратной абстракции, обеспечивающее максимальную переносимость кода по всему спектру микроконтроллеров STM32. HAL доступен для всех периферийных устройств.
- Низкоуровневые (LL) API (Application Programming Interface), предлагающие быстрый и легкий, экспертно-ориентированный уровень, который ближе к аппаратному обеспечению, чем HAL. LL API доступны только для набора периферийных устройств.
- Набор компонентов промежуточного программного обеспечения (middleware), таких как USB Device, STMTouch (библиотека сенсорного ввода STM32), STM32_WPAN (Bluetooth® Low Energy 5.0, OpenThread, 802-15-4 MAC), FatFS и FreeRTOS.
- Все встраиваемые программные утилиты поставляются с полным набором примеров.
Рис. 1. Пакет STM32CubeMX
(1) Набор компонентов промежуточного программного обеспечения зависит от серии продукта.
Рис. 2. Пакет STM32CubeWB
Ключевые характеристики:
- Совместимое и полное встраиваемое программное обеспечение освобождает пользователя от ряда проблем
- Максимальная переносимость между всеми сериями STM32 поддержана STM32Cube™
- Сотни примеров для легкого понимания
- Высокое качество HAL с использованием инструмента статического анализа CodeSonar®
- Высококачественные низкоуровневые (LL) API, использующие инструмент статического анализа CodeSonar®
- Специфическое STM32WB промежуточное программное обеспечение: USB Device, STMTouch (библиотеки датчиков прикосновения STM32), STM32_WPAN (профили и сервисы Bluetooth® 5, сервисы OpenThread, сервисы 802-15-4 MAC), FatFS и FreeRTOS ™
- STM32WB Bluetooth® 5 и HCI стеки
- Стек OpenThread
- 15.4 MAC
- Бесплатная удобная лицензия
- Механизм обновления с возможностью уведомления о новом релизе
1. Основные функции STM32CubeWB
STM32CubeWB работает на 32-битных микроконтроллерах STM32 с ядром ARM Cortex-M и объединяет в одном пакете все общие встраиваемые программные компоненты, необходимые для разработки приложений на STM32WB. В соответствии с концепцией STM32Cube™ этот набор компонентов обладает высокой переносимостью не только для серии STM32WB, но и для других серий STM32.
STM32CubeWB полностью совместим с STM32CubeMX, что и позволяет генерировать код инициализации.
Пакет включает в себя LL и HAL API, которые охватывают аппаратное обеспечение микроконтроллера, а также обширный набор примеров, работающих на платах STMicroelectronics.
Для удобства пользователей API HAL и LL доступны с лицензией BSD.
Пакет MCU STM32CubeWB содержит набор компонентов промежуточного программного обеспечения с соответствующими примерами. Они поставляются с бесплатной лицензией:
- Решение с открытым исходным кодом FreeRTOS ™ реализовано с интерфейсом CMSIS-RTOS
- Стек USB Device, поддерживающий множество классов: аудио, HID, MSC, CDC и DFU
- STMTouch, решение для сенсорной библиотеки
- STM32_WPAN, промежуточное программное обеспечение беспроводной персональной сети, разработанное в рамках среды STM32WB для поддержки Bluetooth® Low Energy (BLE) 5.0, сертифицированные стеки 802.15.4 OpenThread и слой 802-15-4 MAC
- Файловая система FAT на основе решения FatFS с открытым исходным кодом
Несколько приложений и демонстрационных примеров, реализующих все эти компоненты промежуточного программного обеспечения, также представлены в пакете MCU STM32CubeWB.
2. Обзор архитектуры STM32CubeWB
Решение STM32CubeWB построено на основе трех независимых уровней, которые легко взаимодействуют между собой как показано на Рис. 3.
Рис. 3. Трехуровневая структура пакета STM32CubeWB и взаимодействия между уровнями
2.1. Уровень 0
Этот уровень разделен на три подслоя:
- Пакет поддержки платформы (BSP)
- Уровень аппаратной абстракции (HAL):
- HAL периферийные драйверы
- Низкоуровневые драйверы
- Основные примеры использования периферийных устройств
2.1.1. Пакет поддержки платформы (BSP)
Этот уровень предлагает набор API-интерфейсов для аппаратных компонентов на платах (таких как драйверы LCD, Audio, microSD ™ и MEMS).
Он состоит из двух частей:
- Компонент - Это драйвер, связанный с внешним устройством платы, а не с STM32. Драйвер компонента предоставляет специальные API для драйвера BSP внешних компонентов и может быть портирован на любую другую плату.
- BSP драйвер позволяет связать драйвер компонента с конкретной платой и предоставляет набор удобных для пользователя API. Правило присвоения имени API: BSP_FUNCT_Action ().
Пример: BSP_LED_Init (), BSP_LED_On ().
BSP основан на модульной архитектуре, позволяющей легко переносить данные на любое оборудование, выполняя низкоуровневые процедуры.
2.1.2. Слой аппаратной абстракции (HAL) и низкоуровневый слой (LL)
STM32CubeWB HAL и LL дополняют друг друга и охватывают широкий спектр требований приложений:
- Драйверы HAL предлагают высокоуровневые функционально ориентированные высокопереносимые API. Они скрывают от конечного пользователя сложность MCU и периферии.
Драйверы HAL предоставляют универсальные разнообразные API-интерфейсы, ориентированные на функции, которые упрощают реализацию пользовательских приложений, предоставляя готовый к использованию процесс. Например, для коммуникационных периферийных устройств (I2S, UART и других) он предоставляет API-интерфейсы, позволяющие инициализировать и конфигурировать периферийные устройства, управлять передачей данных на основе опроса, обработки прерывания или прямого доступа к памяти и обработки ошибок, которые могут возникнуть во время коммуникаций. API драйвера HAL делятся на две категории: - Универсальные API, которые предоставляют общие и универсальные функции для всех серий STM32
- API расширения, которые предоставляют специфические и настраиваемые функции для конкретного семейства или определенного парт намбера.
- Низкоуровневые API предоставляются на уровне регистра с лучшей оптимизацией, но меньшей переносимостью. Они требуют глубокого знания MCU и спецификаций периферии.
В отличие от HAL, LL API не предоставляются для периферийных устройств, где оптимизированный доступ не является ключевой функцией, или для тех устройств, которые требуют тяжелой программной конфигурации и/или сложного стека верхнего уровня. - Набор для инициализации основных функций периферийных устройств в соответствии с параметрами, указанными в структурах данных
- Набор функций, используемых для заполнения структур данных инициализации значениями сброса, соответствующими каждому полю
- Функция для деинициализации периферии (периферийные регистры восстанавливаются до значений по умолчанию)
- Набор встроенных функций для прямого и атомарного доступа к регистру
- Полная независимость от HAL и возможность использования в автономном режиме (без драйверов HAL)
- Полный охват поддерживаемых периферийных функций
2.1.3. Базовые примеры использования периферии
Этот слой содержит примеры сборки периферии на STM32, используя только HAL и BSP ресурсы
2.2. Уровень 1
Этот уровень разделен на два подуровня:
- Компоненты промежуточного программного обеспечения
- Примеры на основе компонентов промежуточного программного обеспечения
2.2.1. Компоненты промежуточного программного обеспечения
Промежуточное программное обеспечение представляет собой набор библиотек, охватывающих FatFS, FreeRTOS™, USB Device, STMTouch (библиотека сенсорного ввода STM32) и промежуточное программное обеспечение STM32_WPAN. Горизонтальные взаимодействия между компонентами этого уровня осуществляются напрямую путем вызова API функций, тогда как вертикальное взаимодействие с низкоуровневыми драйверами осуществляется с помощью специальных обратных вызовов и статических макросов, реализованных в интерфейсе системных вызовов библиотеки. Например, FatFS реализует драйвер дискового ввода-вывода для доступа к microSD ™ карте.
Основные характеристики каждого компонента промежуточного программного обеспечения:
- Файловая система FAT:
- FatFS FAT библиотека с открытым исходным кодом
- Поддержка длинных имен файлов
- Динамическая поддержка нескольких дисков
- RTOS и автономная работа
- Примеры с microSD™
- FreeRTOS™
- Стандарт с открытым исходным кодом
- Уровень совместимости со CMSIS
- Бестактовая (tickles) работа* в режиме пониженного энергопотребления
- Интеграция со всеми модулями промежуточного программного обеспечения STM32Cube™
*Энергосберегающая технология, которая позволяет избежать периодического опроса CPU внутренним таймером, когда CPU находится в режиме бездействия.
- Библиотека USB Device
- Поддержка нескольких классов USB (Mass-Storage, HID, CDC, DFU, AUDIO и MTP)
- Поддержка мультипакетной передачи: большой объем данных может быть отправлен без разделения передачи на транзакции пакетов максимального размера
- Использование файлов конфигурации для изменения ядра и конфигурации библиотеки без изменения read-only кода библиотеки
- RTOS и автономная работа
- Связь с драйвером низкого уровня через уровень абстракции с использованием файла конфигурации, чтобы избежать какой-либо зависимости между библиотекой и драйверами низкого уровня
- STM32 сенсорная библиотека
Надежное емкостное сенсорное решение STMTouch, поддерживающее датчик приближения, сенсорный ключ, линейный и поворотный сенсорный датчик. Решение основано на проверенном принципе переноса поверхностного заряда. - Промежуточное программное обеспечение беспроводной персональной сети STM32 (STM32_WPAN), разработанное в рамках STM32WB
- Сертифицированные стеки BLE 5.0
- Стек BLE: канальный уровень, база данных HCI, L2CAP, ATT, SM, GAP и GATT
(ID декларации D042164 доступен по адресу https://launchstudio.bluetooth.com) - Многопрофильная подсистема BLE: полный охват профилей и служб стека программного обеспечения BLE (ID декларации D042214, доступен по адресу https://launchstudio.bluetooth.com)
- 802.15.4 Thread® v1.1 сертифицированные приложения
- Стек Thread® предоставляется OpenThread, реализацией сетевого протокола Thread® с открытым исходным кодом (дополнительную информацию об этом стеке см. по адресу https://openthread.io).
Стек поддерживает две конфигурации: - FTD (Full Thread Device), который будет использоваться для ролей Leader, Router и End Device Thread (за исключением Border Router)
- MTD (Minimal Thread Device), которое будет использоваться для ролей конечного устройства и спящего конечного устройства
- Слой 802.15.4 MAC
Этот MAC API основан на последнем официальном документе IEEE Std 802.15.4-2011, доступном по адресу http://grouper.ieee.org
Он поддерживает полнофункциональные устройства (Full Function Devices) и может обеспечить роль координатора персональной сети (PAN) и устройств с уменьшенной функциональностью (Reduced Function Devices), которые служат узлом для чрезвычайно простых приложений.
2.2.2. Примеры, основанные на компонентах промежуточного программного обеспечения
Каждый компонент промежуточного программного обеспечения поставляется с одним или несколькими примерами (называемыми также приложениями), показывающими, как его использовать. Также представлены примеры интеграции, которые используют несколько компонентов промежуточного программного обеспечения.
2.3. Уровень 2
Этот уровень имеет единственный слой, который содержит глобальную демонстрацию режима реального времени и графики на основе сервисного слоя промежуточного программного обеспечения, низкоуровневого слоя абстракции и использования основных периферийных приложений, базирующихся на особенностях платы.
Лицензия
STM32CubeWB поставляется в соответствии с лицензионным соглашением на программное обеспечение Mix Ultimate Liberty + OSS + V1 третьего производителя (SLA0048). Компоненты программного обеспечения, представленные в этом пакете, поставляются с различными схемами лицензирования, как показано в таблице 1. Набор прикладных проектов, реализующих все компоненты промежуточного программного обеспечения, также предоставляется в пакете MCU STM32CubeWB.
Таблица 1. Лицензионные соглашения на программный компонент
Программный компонент |
Собственник |
Лицензия |
Board Support Package (BSP). |
STMicroelectronics International N.V |
|
Cortex®-M CMSIS v4.5.0 |
Arm® |
|
FreeRTOS™ |
Copyright (C) 2017 Amazon.com, Inc. или его филиалы |
|
STM32WB HAL/LL APIs |
STMicroelectronics International N.V |
|
Application projects |
STMicroelectronics International N.V |
|
Example projects |
STMicroelectronics International N.V |
|
Demonstration projects |
STMicroelectronics International N.V |
|
STM32 touch sensing library |
STMicroelectronics International N.V |
|
STM32 USB Device library |
STMicroelectronics International N.V |
|
FatFS |
STMicroelectronics International N.V |
|
Chan |
FatFS License(1) |
|
Utilities (CPU - Fonts - Log) |
STMicroelectronics International N.V |
|
STM32WB Bluetooth® HCI |
STMicroelectronics International N.V |
|
STM32WB Bluetooth® stack |
STMicroelectronics International N.V |
|
STM32WB 802.15.4 MAC |
STMicroelectronics International N.V |
|
STM32WB Bluetooth®/Thread® concurrent stack |
STMicroelectronics International N.V |
|
Copyright (c) 2016, The OpenThread Authors |
||
ST OpenThread binary stack |
STMicroelectronics International N.V |
|
Copyright (c) 2016, The OpenThread Authors |
||
STM32WB Bluetooth® profiles and services |
STMicroelectronics International N.V |
|
Open Thread core |
STMicroelectronics International N.V |
|
Open Thread stack |
Copyright (c) 2016, The OpenThread Authors |
(1)Лицензия FatFS - это дружественная к бизнесу и разрешающая лицензия с открытым исходным кодом.