Логотип STMicroelectronics

Серія STMicroelectronics STM32WBA Початок роботи

STMicroelectronics-STM32WBA-Series-Getting-Started-fig-1

Інформація про продукт

Технічні характеристики:

  • Назва продукту: Пакет STM32CubeWBA MCU
  • Виробник: STMicroelectronics
  • Сумісність: Мікроконтролери серії STM32WBA
  • Ліцензування: Ліцензія BSD з відкритим кодом

Інструкція з використання продукту

Основні характеристики пакета STM32CubeWBA MCU:
Пакет STM32CubeWBA MCU містить усі необхідні компоненти вбудованого програмного забезпечення для розробки програм на мікроконтролерах серії STM32WBA. Він дуже портативний у серії STM32 і поставляється з HAL та LL API, наприкладampфайли та компоненти проміжного ПЗ.

Архітектура закінченаview:
Архітектура пакета STM32CubeWBA MCU складається з трьох рівнів: програми, бібліотека та компоненти на основі протоколу, рівень абстракції апаратного забезпечення, драйвери BSP, драйвери ядра та API нижнього рівня.

FAQ

  • Що входить у пакет STM32CubeWBA MCU?
    Пакет містить API нижнього рівня (LL) і рівня апаратної абстракції (HAL), напрampфайли, програми, компоненти проміжного програмного забезпечення, такі як FileX/LevelX, NetX Duo, бібліотеки mbed-crypto тощо.
  • Чи сумісний пакет MCU STM32CubeWBA з генератором коду STM32CubeMX?
    Так, пакет повністю сумісний з генератором коду STM32CubeMX для генерації коду ініціалізації.

вступ

  • STM32Cube — це оригінальна ініціатива STMicroelectronics, спрямована на суттєве підвищення продуктивності дизайнера шляхом скорочення зусиль, часу та витрат на розробку. STM32Cube охоплює весь портфель STM32.
    STM32Cube включає в себе:
    • Набір зручних інструментів розробки програмного забезпечення для охоплення розробки проекту від задуму до реалізації, серед яких:
      • STM32CubeMX, інструмент налаштування графічного програмного забезпечення, який дозволяє автоматично генерувати код ініціалізації C за допомогою графічних майстрів
      • STM32CubeIDE, універсальний інструмент розробки з периферійною конфігурацією, генерацією коду, компіляцією коду та функціями налагодження
      • STM32CubeCLT, комплексний набір інструментів розробки командного рядка з функціями компіляції коду, програмування плати та налагодження
      • STM32CubeProgrammer (STM32CubeProg), інструмент програмування, доступний у графічній і командній версіях
      • STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), потужні інструменти моніторингу для точного налаштування поведінки та продуктивності програм STM32 у реальному часі
    • Пакети STM32Cube MCU та MPU, комплексні платформи вбудованого програмного забезпечення, специфічні для кожної серії мікроконтролерів і мікропроцесорів (наприклад, STM32CubeWBA для серії STM32WBA), які включають:
      • Рівень апаратної абстракції STM32Cube (HAL), що забезпечує максимальну переносимість у портфоліо STM32
      • API низького рівня STM32Cube, що забезпечує найкращу продуктивність і займає місце з високим ступенем контролю користувача над обладнанням
      • Послідовний набір компонентів проміжного програмного забезпечення, таких як ThreadX, FileX / LevelX, NetX Duo, USBX, сенсорна бібліотека, mbed-crypto, TFM, MCUboot, OpenBL і STM32_WPAN (включаючи Bluetooth® Low Energy profileі служби, Mesh, Zigbee®, OpenThread, Matter і рівень MAC 802.15.4)
      • Усі вбудовані програмні утиліти з повним набором периферійних та прикладних прampлес
    • Пакети розширення STM32Cube, які містять вбудовані програмні компоненти, які доповнюють функціональні можливості пакетів MCU і MPU STM32Cube за допомогою:
      • Розширення проміжного програмного забезпечення та прикладні шари
      • Exampфайли, які працюють на певних платах розробника STMicroelectronics
  • У цьому посібнику користувача описано, як розпочати роботу з пакетом STM32CubeWBA MCU.
    • Розділ 2 Основні функції STM32CubeWBA описує основні функції пакета STM32CubeWBA MCU.
    • Розділ 3 Архітектура STM32CubeWBA завершеноview забезпечує оверview архітектури STM32CubeWBA та структури пакету MCU.

Загальні відомості

Пакет STM32CubeWBA MCU працює на 32-розрядних мікроконтролерах STM32 на основі процесора Arm® Cortex®-M33 з Arm® TrustZone® і FPU.
Примітка: Arm та TrustZone є зареєстрованими торговими марками Arm Limited (або її дочірніх компаній) у США та/або інших країнах.

Основні функції STM32CubeWBA

  • Пакет STM32CubeWBA MCU працює на 32-розрядних мікроконтролерах STM32 на основі процесора Arm® Cortex®-M33 із TrustZone® і FPU.
  • STM32CubeWBA збирає в одному пакеті всі загальні компоненти вбудованого програмного забезпечення, необхідні для розробки програми для мікроконтролерів серії STM32WBA. Згідно з ініціативою STM32Cube, цей набір компонентів є дуже портативним не лише в мікроконтролерах серії STM32WBA, але й для інших серій STM32.
  • STM32CubeWBA повністю сумісний із генератором коду STM32CubeMX для створення коду ініціалізації. Пакет містить API нижнього рівня (LL) і апаратного рівня абстракції (HAL), які охоплюють апаратне забезпечення мікроконтролера, а також широкий набір програмampякі працюють на платах STMicroelectronics. API HAL і LL доступні в ліцензії BSD з відкритим кодом для зручності користувачів.
  • Пакет STM32CubeWBA MCU також містить комплексний компонент проміжного програмного забезпечення, побудований на основі проміжного програмного забезпечення Microsoft® Azure® RTOS, а також інших внутрішніх стеків і стеків із відкритим вихідним кодом із відповідними напр.ampлес.
  • Вони постачаються з безкоштовними, зручними умовами ліцензії:
    • Інтегрована та повнофункціональна Azure® RTOS: Azure® RTOS ThreadX
    • Реалізація CMSIS-RTOS з Azure® RTOS ThreadX
    • Стеки USB-хостів і пристроїв, що містять багато класів: Azure® RTOS USBX
    • Просунутий file системний і флеш-трансляційний рівень: FileX / рівень X
    • Мережевий стек промислового рівня: оптимізований для продуктивності, що забезпечується багатьма протоколами IoT: NetX Duo
    • OpenBootloader
    • Інтеграційне рішення Arm® Trusted Firmware-M (TF‑M).
    • бібліотеки mbed-crypto
    • Бібліотека ST Network
    • Рішення бібліотеки датчиків дотику STMTouch
  • Кілька програм і демонстрацій, що реалізують усі ці компоненти проміжного ПЗ, також надаються в пакеті STM32CubeWBA MCU.
  • Компонент пакета STM32CubeWBA MCU показано на малюнку 1. Компоненти пакета STM32CubeWBA MCU.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-2

Архітектура STM32CubeWBA завершенаview

Пакетне рішення STM32CubeWBA MCU побудовано навколо трьох незалежних рівнів, які легко взаємодіють, як описано на малюнку 2. Архітектура пакету STM32CubeWBA MCU.

STMicroelectronics-STM32WBA-Series-Getting-Started-fig-3

Рівень 0

Цей рівень ділиться на три підрівні:

  • Пакет підтримки плати (BSP).
  • Рівень апаратної абстракції (HAL):
    • Драйвери периферійних пристроїв HAL
    • Драйвери нижнього рівня
  • Базове використання периферійних пристроїв, напрampлес.

Пакет підтримки плати (BSP)
Цей рівень пропонує набір API щодо апаратних компонентів апаратних плат (таких як драйвери LCD, Audio,\ microSD™ і MEMS). Він складається з двох частин:

  • Драйвер компонента:
    Цей драйвер відноситься до зовнішнього пристрою на платі, а не до пристрою STM32. Драйвер компонентів надає спеціальні API для зовнішніх компонентів драйвера BSP і може бути переносним на будь-яку іншу плату.
  • Драйвер BSP:
    Драйвер BSP дозволяє прив’язати драйвери компонентів до певної плати та надає набір зручних для користувача
    API. Правило іменування API – BSP_FUNCT_Action().
    Example: BSP_LED_Init(), BSP_LED_On()
    BSP базується на модульній архітектурі, що дозволяє легко переносити на будь-яке обладнання, просто впроваджуючи підпрограми низького рівня.

Рівень апаратної абстракції (HAL) і нижнього рівня (LL)
STM32CubeWBA HAL і LL доповнюють один одного і покривають широкий спектр вимог до застосування:

  • Драйвери HAL пропонують високорівневі функціонально-орієнтовані високопортативні API. Вони приховують мікроконтроллер і периферійну складність від кінцевого користувача.
    Драйвери HAL надають загальні багатоекземплярні функціонально-орієнтовані API, які спрощують реалізацію додатків користувача, забезпечуючи готові до використання процеси. наприкладampДля комунікаційних периферійних пристроїв (I2S, UART та інших) він надає API, які дозволяють ініціалізувати та конфігурувати периферійний пристрій, керувати передачею даних на основі опитування, переривання або процесу DMA, а також обробляти помилки зв’язку, які можуть виникнути під час зв’язку. API драйвера HAL поділяються на дві категорії:
    1. Загальні API, які забезпечують загальні та загальні функції для всіх мікроконтролерів серії STM32.
    2. API розширення, які надають спеціальні та налаштовані функції для певного сімейства або певного номера деталі.
  • API низького рівня надають API низького рівня на рівні реєстру з кращою оптимізацією, але меншою переносимістю.
    • Вони вимагають глибоких знань мікроконтролера та периферійних характеристик.
    • Драйвери LL розроблені, щоб запропонувати швидкий легкий експертно-орієнтований рівень, який ближче до апаратного забезпечення, ніж HAL. На відміну від HAL, API LL не надаються для периферійних пристроїв, де оптимізований доступ не є ключовою функцією, або для тих, які потребують важкої конфігурації програмного забезпечення або складного стеку верхнього рівня.
    • Особливості драйверів LL:
      • Набір функцій для ініціалізації периферійних основних функцій відповідно до параметрів, указаних у структурах даних.
      • Набір функцій для заповнення структур даних ініціалізації значеннями скидання, що відповідають кожному полю.
      • Функція для периферійної деініціалізації (периферійні регістри відновлюються до значень за замовчуванням).
      • Набір вбудованих функцій для прямого та атомарного доступу до реєстру.
      • Повна незалежність від HAL і можливість використання в автономному режимі (без драйверів HAL).
      • Повний охоплення підтримуваних периферійних функцій.

Базове використання периферійних пристроїв, напрampлес
Цей шар охоплює exampстворені на периферійних пристроях STM32, використовуючи лише ресурси HAL і BSP.

Рівень 1

Цей рівень поділяється на два підрівні:

  • Компоненти проміжного програмного забезпечення
  • Exampфайли на основі компонентів проміжного програмного забезпечення

Компоненти проміжного програмного забезпечення

  • Проміжне програмне забезпечення — це набір бібліотек, що охоплюють Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
  • Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot і mbed-crypto.
  • Горизонтальна взаємодія між компонентами цього рівня здійснюється шляхом виклику представлених API.
  • Вертикальна взаємодія з драйверами нижнього рівня здійснюється за допомогою спеціальних зворотних викликів і статичних макросів, реалізованих в інтерфейсі системного виклику бібліотеки.
  • Основні особливості кожного компонента проміжного програмного забезпечення:
    • Microsoft® Azure® RTOS
      • Azure® RTOS ThreadX: операційна система реального часу (RTOS), розроблена для вбудованих систем із двома функціональними режимами.
        • Загальний режим: загальні функції RTOS, такі як керування потоками та синхронізація, керування пулом пам’яті, обмін повідомленнями та обробка подій.
        • Режим модуля: розширений режим користувача, який дозволяє завантажувати та вивантажувати попередньо пов’язані модулі ThreadX на льоту через менеджер модулів.
      • NetX Duo
      • FileX
      • USBX
    • Bluetooth® Low Energy (BLE): реалізує протокол Bluetooth® Low Energy для рівня зв’язку та стеку.
    • MCUboot (програмне забезпечення з відкритим кодом)
    • Протоколи Zigbee® для стека та пов’язаних кластерів.
    • Стек протоколів Thread® і рівень зв’язку.
    • Довірене мікропрограмне забезпечення Arm®-M, TF‑M (програмне забезпечення з відкритим вихідним кодом): еталонна реалізація архітектури безпеки платформи Arm® (PSA) для TrustZone® із відповідними безпечними службами.
    • mbed-crypto (програмне забезпечення з відкритим кодом): Проміжне програмне забезпечення mbed-crypto забезпечує реалізацію API криптографії PSA.
    • Бібліотека датчиків дотику STM32: надійне ємнісне рішення для датчиків дотику STMTouch, яке підтримує датчики наближення, сенсорні клавіші, лінійні та поворотні датчики дотику. Він заснований на перевіреному принципі отримання поверхневого переносу заряду.

Exampфайли на основі компонентів проміжного програмного забезпечення
Кожен компонент проміжного ПЗ поставляється з одним або кількома прикладамиampфайли (також звані програмами), які показують, як ним користуватися. Інтеграція прampтакож надаються файли, які використовують кілька компонентів проміжного програмного забезпечення.

Пакет мікропрограми STM32CubeWBA завершеноview

Підтримувані пристрої та обладнання серії STM32WBA

  • STM32Cube пропонує високопортативний апаратний рівень абстракції (HAL), побудований навколо загальної архітектури. Це дозволяє застосовувати принцип надбудови рівнів, наприклад, використовувати рівень проміжного програмного забезпечення для реалізації своїх функцій без детального знання того, який MCU використовується. Це покращує можливість повторного використання коду бібліотеки та забезпечує легке перенесення на інші пристрої.
  • Крім того, завдяки багатошаровій архітектурі STM32CubeWBA пропонує повну підтримку всіх серій STM32WBA.
  • Користувачеві залишається лише визначити правильний макрос у stm32wbaxx.h.
  • У таблиці 1 показано макрос для визначення залежно від використовуваного пристрою серії STM32WBA. Цей макрос також має бути визначений у препроцесорі компілятора.
    Таблиця 1. Макроси для серії STM32WBA
    Макрос, визначений у stm32wbaxx.h Пристрої серії STM32WBA
    stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6
    stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7

     

  • STM32CubeWBA має багатий набір напрampфайли та програми на всіх рівнях, що полегшує розуміння та використання будь-якого драйвера HAL або компонентів проміжного програмного забезпечення. Ці ексampфайли запускаються на платах STMicroelectronics, перелічених у таблиці 2.
    Таблиця 2. Плати серії STM32WBA
    дошка Плата STM32WBA підтримує пристрої
    NUCLEO-WBA52CG STM32WBA52CGU6
    NUCLEO-WBA55CG STM32WBA55CGU6
    STM32WBA55-DK1 STM32WBA55CGU7
  • Пакет STM32CubeWBA MCU може працювати на будь-якому сумісному обладнанні. Користувач просто оновлює драйвери BSP, щоб перенести наданий exampфайли на платі, якщо остання має ті самі апаратні функції (такі як світлодіод, РК-дисплей і кнопки).
Пакет прошивки закінченоview
  • Пакетне рішення STM32CubeWBA надається в одному пакеті zip зі структурою, наведеною на рисунку 3. Структура пакета мікропрограми STM32CubeWBA.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-4

  • Для кожної дошки набір екзamples постачається з попередньо налаштованими проектами для інструментальних ланцюжків EWARM, MDK-ARM і STM32CubeIDE.
  • Малюнок 4. STM32CubeWBA examples overview показує структуру проекту для плат NUCLEO‑WBA52CG, NUCLEO-WBA55CG і STM32WBA55G-DK1.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-5

  • КолишнійampФайли класифікуються залежно від рівня STM32Cube, до якого вони застосовуються, і мають такі назви:
    • Рівень 0 прampліси називаються Examples, Examples_LL і прamples_MIX. Вони використовують відповідно драйвери HAL, драйвери LL і суміш драйверів HAL і LL без будь-якого компонента проміжного програмного забезпечення.
    • Рівень 1 прampфайли називаються програмами. Вони надають типові випадки використання кожного компонента проміжного програмного забезпечення. Будь-який додаток мікропрограми для певної плати можна швидко створити завдяки шаблонним проектам, доступним у каталогах Templ ates і Templates_LL.

Проекти з підтримкою TrustZone®

  • TrustZone® увімкнено Прampімена файлів містять префікс _TrustZone. Правило також застосовується до програм (за винятком TFM і SBSFU, які ізначально призначені для TrustZone®).
  • TrustZone® із підтримкою Exampфайли та додатки забезпечені мультипроектною структурою, що складається з безпечних і незахищених підпроектів, як показано на малюнку 5. Багатопроектна безпечна та незахищена структура проекту.
  • Проекти з підтримкою TrustZone® розроблені відповідно до шаблону пристрою CMSIS-5, розширеного для включення заголовка розділення системи file partition_ .h, який головним чином відповідає за налаштування блоку безпечних атрибутів (SAU), FPU та призначення безпечних/незахищених переривань у безпечному стані виконання.
  • Це налаштування виконується у безпечній функції CMSIS SystemInit(), яка викликається під час запуску перед входом у безпечну функцію main() програми. Зверніться до документації щодо програмного забезпечення Arm® TrustZone®-M.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-6

  • Пакет прошивки пакета STM32CubeWBA забезпечує розділення пам’яті за замовчуванням у розділі _ .h fileдоступні в: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
  • У цих розділах files, SAU вимкнено за замовчуванням. Отже, відображення пам’яті IDAU використовується для атрибуції безпеки. Див. малюнок Захищене/незахищене розділення за допомогою технології TrustZone® у довідковому посібнику RM0495.
  • Якщо користувач увімкне SAU, у розділі попередньо визначено конфігурацію регіонів SAU за замовчуванням files наступним чином:
    • Регіон SAU 0: 0x08080000 – 0x081FFFFF (незахищена захищена половина флеш-пам’яті (512 Кбайт))
    • Регіон SAU 1: 0x0BF88000 – 0x0BF97FFF (незахищена системна пам’ять)
    • Регіон SAU 2: 0x0C07E000 – 0x0C07FFFF (захищений, незахищений виклик)
    • Регіон SAU 3: 0x20010000 – 0x2001FFFF (незахищений SRAM2 (64 Кбайт))
    • Регіон SAU 4: 0x40000000 – 0x4FFFFFFF (незахищена відображена периферійна пам’ять)
  • Щоб відповідати розділенню за замовчуванням, пристрої серії STM32WBAxx повинні мати такі параметри користувача:
    • TZEN = 1 (пристрій із підтримкою TrustZone®)
    • SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 із 128 сторінок внутрішньої флеш-пам’яті встановлено як захищені) Примітка: внутрішня флеш-пам’ять повністю захищена за замовчуванням у TZEN = 1. Байти параметрів користувача SECWM1_PSTRT/ SECWM1_PEND повинні бути встановлені відповідно до програми конфігурація пам'яті (регіони SAU, якщо SAU увімкнено). Пов’язувач проекту безпечних/незахищених програм files також повинні бути вирівняні.
  • все ексampфайли мають однакову структуру:
    • Папка \Inc, що містить увесь заголовок files.
    • Папка Src, що містить вихідний код.
    • Папки \EWARM, \MDK-ARM і \STM32CubeIDE, що містять попередньо налаштований проект для кожного ланцюжка інструментів.
    • readme.md і readme.html, що описують напрampповедінка та необхідне середовище для його роботи.
    • ioc file що дозволяє користувачам відкривати більшість мікропрограм, наприкладampфайли в STM32CubeMX.

Початок роботи з STM32CubeWBA

Запуск першого HAL example

У цьому розділі пояснюється, як просто запустити перший exampу STM32CubeWBA. Він використовує як ілюстрацію створення простого світлодіодного перемикача, що працює на платі NUCLEO-WBA52CG:

  1. Завантажте пакет STM32CubeWBA MCU.
  2. Розархівуйте його в обраний вами каталог.
  3. Слідкуйте за тим, щоб не змінювати структуру пакета, показану на малюнку 1. Також рекомендується скопіювати пакет у розташуванні, розташованому поблизу кореневого тому (тобто C:\ST або G:\Tests), оскільки деякі IDE стикаються з проблемами, коли шлях довжина занадто велика.

Запуск першого TrustZone® увімкнено напрample

  • Перед завантаженням і запуском увімкненого TrustZone® напрample, обов’язкове читання випрample readme file для будь-якої конкретної конфігурації, яка гарантує, що захист увімкнено, як описано в Розділі 4.2.1 Проекти з підтримкою TrustZone® (TZEN=1 (байт параметрів користувача)).
    1. Перейдіть до \Projects\NUCLEO-WBA52CG\Exampлес.
    2. Відкрийте папки \GPIO, потім \GPIO_IOToggle_TrustZone.
    3. Відкрийте проект за допомогою бажаного інструментарію. Швидкий оглядview про те, як відкрити, створити та запустити exampфайл із підтримуваними наборами інструментів наведено нижче.
    4. Перебудуйте послідовно всі безпечні та незахищені проекти files і завантажити захищені та незахищені зображення в цільову пам’ять.
    5. Запустіть ексample: регулярно безпечна програма перемикає LD2 щосекунди, а незахищена програма перемикає LD3 вдвічі швидше. Для отримання додаткової інформації зверніться до readme file колишньогоample.
  • Щоб відкрити, створити та запустити exampфайл із підтримуваними наборами інструментів, виконайте наведені нижче дії.
    • EWARM:
      1. Під ексample, відкрийте вкладену папку \EWARM.
      2. Запустіть робоче середовище Project.eww
      3. Перебудуйте безпечний проект xxxxx_S files: [Проект]>[Перебудувати все].
      4. Установіть незахищений проект xxxxx_NS як активну програму (клацніть правою кнопкою миші проект xxxxx_NS [Установити як активний])
      5. Перебудуйте незахищений проект xxxxx_NS files: [Проект]>[Перебудувати все].
      6. Перезавантажте незахищений двійковий файл за допомогою [Проект]>[Завантажити]>[Завантажити активну програму].
      7. Встановіть xxxxx_S як активну програму (клацніть правою кнопкою миші на проекті xxxxx_S [Установити як активну].
      8. Прошивіть безпечний двійковий файл за допомогою [Завантажити та налагодити] (Ctrl+D).
      9. Запустіть програму: [Debug]>[Go(F5)]
    • MDK-ARM:
      1. Відкрийте ланцюжок інструментів \MDK-ARM.
      2. Відкрийте робочу область Multiprojects file Проект.uvmpw.
      3. Виберіть проект xxxxx_s як активну програму ([Установити як активний проект]).
      4. Створіть проект xxxxx_s.
      5. Виберіть проект xxxxx_ns як активний проект ([Установити як активний проект]).
      6. Створіть проект xxxxx_ns.
      7. Завантажте незахищений двійковий файл ([F8]). Це завантажує \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf у флеш-пам'ять)
      8. Виберіть проект Project_s як активний проект ([Установити як активний проект]).
      9. Завантажте безпечний двійковий файл ([F8]). Це завантажує \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf у флеш-пам'ять).
      10. Запустіть ексample.
    • STM32CubeIDE:
      1. Відкрийте ланцюжок інструментів STM32CubeIDE.
      2. Відкрийте робочу область Multiprojects file .демонструвати.
      3. Перебудуйте проект xxxxx_Secure.
      4. Перебудуйте проект xxxxx_NonSecure.
      5. Запустіть програму [Debug as STM32 Cortex-M C/C++] для безпечного проекту.
      6. У вікні [Редагувати конфігурацію] виберіть панель [Запуск] і додайте завантажити зображення та символи незахищеного проекту.
        Важливо: Незахищений проект має бути завантажений перед захищеним проектом.
      7. Натисніть [OK].
      8. Запустіть ексample в перспективі налагодження.

Запуск першого вимкненого TrustZone® example

  • Перед завантаженням і запуском вимкненої TrustZone® напрample, обов’язкове читання випрample readme file для будь-якої конкретної конфігурації. Якщо немає конкретних згадок, переконайтеся, що на пристрої плати вимкнено захист (TZEN=0 (байт параметрів користувача)). Див. поширені запитання щодо виконання додаткової регресії до TZEN = 0
    1. Перейдіть до \Projects\NUCLEO-WBA52CG\Exampлес.
    2. Відкрийте папки \GPIO, потім \GPIO_EXTI.
    3. Відкрийте проект за допомогою бажаного інструментарію. Швидкий оглядview про те, як відкрити, створити та запустити exampфайл із підтримуваними наборами інструментів наведено нижче.
    4. Перебудуйте все files і завантажити ваше зображення в цільову пам'ять.
    5. Запустіть ексample: кожного разу, коли натискається кнопка [USER], світлодіод LD1 перемикається. Для отримання додаткової інформації зверніться до readme file колишньогоample.
  • Щоб відкрити, створити та запустити exampфайл із підтримуваними наборами інструментів, виконайте наведені нижче дії.
    • EWARM:
      1. Під ексample, відкрийте вкладену папку \EWARM.
      2. Запустіть робочу область Project.eww (назва робочої області може змінитися з однієї напрampперейти до іншого).
      3. Перебудуйте все files: [Проект]>[Перебудувати все].
      4. Завантажте зображення проекту: [Проект]>[Налагодження].
      5. Запустіть програму: [Debug]>[Go (F5)].
    • MDK-ARM:
      1. Під ексample, відкрийте вкладену папку \MDK-ARM.
      2. Запустіть робочу область Project.uvproj (назва робочої області може змінитися з однієї напрampперейти до іншого).
      3. Перебудуйте все files:[Project]>[Rebuild all target files].
      4. Завантажте зображення проекту: [Debug]>[Start/Stop Debug Session].
      5. Запустіть програму: [Debug]>[Run (F5)].
    • STM32CubeIDE:
      1. Відкрийте ланцюжок інструментів STM32CubeIDE.
      2. Клацніть [File]>[Змінити робочу область]>[Інше] та перейдіть до каталогу робочої області STM32CubeIDE.
      3. Клацніть [File]>[Імпортувати] , виберіть [Загальні]>[Існуючі проекти в робочу область], а потім натисніть [Далі].
      4. Перейдіть до каталогу робочої області STM32CubeIDE і виберіть проект.
      5. Перебудувати весь проект files: Виберіть проект у вікні [Project Explorer], а потім натисніть меню [Project]>[Build project].
      6. Запустіть програму: [Run]>[Debug (F11)]
Розробка індивідуального додатку

Примітка: Програмне забезпечення має ввімкнути кеш інструкцій (ICACHE), щоб отримати виконання з флеш-пам’яті в стані очікування 0 і досягти максимальної продуктивності та кращого енергоспоживання.

Використання STM32CubeMX для розробки або оновлення програми

  • У пакеті MCU STM32CubeWBA майже всі проекти, напрampфайли генеруються за допомогою інструменту STM32CubeMX для ініціалізації системи, периферійних пристроїв і проміжного ПЗ.
  • Пряме використання існуючого проекту напрampфайл із інструменту STM32CubeMX вимагає STM32CubeMX 6.10.0 або новішої версії:
    • Після встановлення STM32CubeMX відкрийте та за потреби оновіть запропонований проект. Найпростіший спосіб відкрити існуючий проект — двічі клацнути на *.ioc file так що STM32CubeMX автоматично відкриває проект і його джерело files.
    • STM32CubeMX генерує вихідний код ініціалізації таких проектів. Основний вихідний код програми міститься в коментарях «ПОЧАТОК КОДУ КОРИСТУВАЧА» та «КІНЕЦЬ КОДУ КОРИСТУВАЧА». У разі зміни вибору та налаштування IP-адреси STM32CubeMX оновлює частину коду ініціалізації, але зберігає основний вихідний код програми.
  • Для розробки індивідуального проекту в STM32CubeMX виконайте покроковий процес:
    1. Виберіть мікроконтролер STM32, який відповідає необхідному набору периферійних пристроїв.
    2. Налаштуйте все необхідне вбудоване програмне забезпечення за допомогою засобу розв’язання конфліктів контактів, помічника налаштування дерева годинника, калькулятора енергоспоживання та утиліти, яка виконує налаштування периферійних пристроїв MCU (наприклад, GPIO або USART) і стеків проміжного програмного забезпечення (таких як USB).
    3. Згенеруйте код ініціалізації C на основі вибраної конфігурації. Цей код готовий до використання в кількох середовищах розробки. Код користувача зберігається при наступній генерації коду.
  • Щоб отримати додаткові відомості про STM32CubeMX, зверніться до посібника користувача STM32CubeMX щодо створення коду C для налаштування та ініціалізації STM32 (UM1718).
  • Для списку доступних проектів напрampфайли для STM32CubeWBA, зверніться до примітки про програмне забезпечення STM32Cube, напр.ampдля серії STM32WBA (AN5929).

Додатки драйверів

Додаток HAL
У цьому розділі описано кроки, необхідні для створення спеціальної програми HAL за допомогою STM32CubeWBA:

  1. Створіть проект
    • Щоб створити новий проект, почніть із проекту шаблону, наданого для кожної дошки в \Projects\ \Шаблони або з будь-якого доступного проекту в розділі \Проекти\ \Приклади або \Проекти\ \Програми (де відноситься до назви плати, наприклад STM32CubeWBA).
    • Проект Template надає порожню функцію основного циклу. Однак це хороша відправна точка для розуміння параметрів проекту STM32CubeWBA. Шаблон має такі характеристики:
      • Він містить вихідний код HAL, драйвери CMSIS і BSP, які є мінімальним набором компонентів, необхідних для розробки коду на даній платі.
      • Він містить включені шляхи для всіх компонентів мікропрограми.
      • Він визначає підтримувані пристрої серії STM32WBA, що дозволяє правильно налаштувати драйвери CMSIS і HAL.
      • Він надає готовий до використання користувач fileпопередньо налаштовано, як показано нижче:
        HAL ініціалізовано за умовчанням за допомогою SysTick ядра Arm®. SysTick ISR реалізовано для цілей HAL_Delay().
        Примітка: Під час копіювання існуючого проекту в інше розташування переконайтеся, що всі включені шляхи оновлено.
  2. Додайте необхідне проміжне програмне забезпечення до проекту користувача (необов’язково)
    Щоб визначити джерело files буде додано до проекту file перегляньте документацію, надану для кожного проміжного ПЗ. Зверніться до програм у \Projects\STM32xxx_yyy\Applications\ (де посилається на стек проміжного програмного забезпечення, наприклад ThreadX), щоб знати, яке джерело files і включні шляхи повинні бути додані.
  3. Налаштуйте компоненти прошивки
    Компоненти HAL і проміжного програмного забезпечення пропонують набір параметрів конфігурації під час збирання за допомогою макросів #define, оголошених у заголовку file. Конфігурація шаблону file міститься в кожному компоненті, який потрібно скопіювати в папку проекту (зазвичай це конфігурація file має назву xxx_conf_template.h, слово _template необхідно видалити під час копіювання його до папки проекту). Конфігурація file надає достатньо інформації, щоб зрозуміти вплив кожного параметра конфігурації. Більш детальну інформацію можна знайти в документації, що надається для кожного компонента.
  4. Запустіть бібліотеку HAL
    Після переходу до головної програми код програми повинен викликати HAL_Init() API для ініціалізації бібліотеки HAL, яка виконує такі завдання:
    • Конфігурація попередньої вибірки флеш-пам’яті та пріоритету переривання SysTick (за допомогою макросів, визначених у st m32wbaxx_hal_conf.h).
    • Конфігурація SysTick для створення переривання кожну мілісекунду з пріоритетом переривання SysTick TICK_INT_PRIO, визначеним у stm32wbaxx_hal_conf.h.
    • Встановлення пріоритету групи NVIC на 0.
    • Виклик функції зворотного виклику HAL_MspInit(), визначеної в користувачеві stm32wbaxx_hal_msp.c file для виконання глобальної низькорівневої ініціалізації обладнання.
  5. Налаштувати системний годинник
    Конфігурація системного годинника виконується викликом двох API, описаних нижче:
    • HAL_RCC_OscConfig(): цей API налаштовує внутрішні та зовнішні осцилятори. Користувач вибирає конфігурацію одного або всіх осциляторів.
    • HAL_RCC_ClockConfig(): цей API налаштовує джерело системного годинника, затримку флеш-пам’яті, а також преділювачі AHB і APB.
  6. Ініціалізація периферійного пристрою
    • Спочатку напишіть периферійну функцію HAL_PPP_MspInit. Дійте наступним чином:
      • Увімкніть периферійний годинник.
      • Налаштуйте периферійні GPIO.
      • Налаштуйте канал DMA та ввімкніть переривання DMA (за потреби).
      • Увімкнути периферійне переривання (за потреби).
    • Відредагуйте stm32xxx_it.c, щоб викликати необхідні обробники переривань (периферійні та DMA), якщо це необхідно.
    • Записуйте повні функції зворотного виклику процесу, якщо планується використовувати периферійне переривання або DMA.
    • У користувачеві main.c file, ініціалізуйте структуру маркера периферійного пристрою, а потім викличте функцію HAL_PPP_Init(), щоб ініціалізувати периферійний пристрій.
  7. Розробити додаток
    • На цьому сtage, система готова і можна починати розробку коду програми користувача.
    • HAL забезпечує інтуїтивно зрозумілі та готові до використання API для налаштування периферійного пристрою. Він підтримує опитування, переривання та модель програмування DMA, щоб відповідати будь-яким вимогам програми. Щоб отримати докладніші відомості про використання кожного периферійного пристрою, зверніться до rich exampнабір файлів, що надається в пакеті STM32CubeWBA MCU.
      Увага: У стандартній реалізації HAL таймер SysTick використовується як часова база: він генерує переривання через регулярні проміжки часу. Якщо HAL_Delay() викликається з периферійного процесу ISR, переконайтеся, що переривання SysTick має вищий пріоритет (чисельно нижчий), ніж периферійне переривання. В іншому випадку процес ISR абонента блокується. Функції, що впливають на конфігурації часової бази, оголошено як __weak, щоб уможливити перевизначення у випадку інших реалізацій у користувачеві file (за допомогою таймера загального призначення, напрample або інше джерело часу). Для отримання додаткової інформації зверніться до прикладу HAL_TimeBaseample.

Додаток LL
У цьому розділі описано кроки, необхідні для створення спеціальної програми LL за допомогою STM32CubeWBA.

  1. Створіть проект
    • Щоб створити новий проект, почніть із проекту Templates_LL, наданого для кожної дошки в \Projects\ \Templates_LL або з будь-якого доступного проекту в \Projects\ \Напрamples_LL ( відноситься до назви плати, наприклад NUCLEO-WBA32CG).
    • Проект шаблону надає порожню функцію основного циклу, яка є хорошою відправною точкою для розуміння параметрів проекту для STM32CubeWBA. Основні характеристики шаблону:
      • Він містить вихідні коди драйверів LL і CMSIS, які є мінімальним набором компонентів, необхідних для розробки коду на даній платі.
      • Він містить включені шляхи для всіх необхідних компонентів мікропрограми.
      • Він вибирає підтримуваний пристрій серії STM32WBA і дозволяє правильно конфігурувати драйвери CMSIS і LL.
      • Він надає готовий до використання користувач files, попередньо налаштовані таким чином:
        ◦ main.h: рівень абстракції LED і USER_BUTTON.
        ◦ main.c: конфігурація системного годинника для максимальної частоти.
  2. Перенести існуючий проект на іншу дошку
    Щоб підтримати існуючий проект на іншій цільовій дошці, почніть із проекту Templates_LL, який надається для кожної дошки та доступний у \Projects\ \Templates_LL.
    • Виберіть приклад LLample: знайти дошку, на якій LL exampфайли розгортаються, зверніться до списку LL examples STM32CubeProjectsList.html.
  3. Порт LL exampле:
    • Скопіюйте/вставте папку Templates_LL, щоб зберегти початкове джерело, або безпосередньо оновіть існуючий проект Templates_LL.
    • Тоді портування полягає головним чином у заміні Templates_LL files за Exampцільовий проект les_LL.
    • Зберігайте всі окремі частини плати. З міркувань ясності конкретні частини плати позначені спеціальними прапорцями tags:

      STMicroelectronics-STM32WBA-Series-Getting-Started-fig-7

    • Отже, основні етапи портування:
      • Замініть stm32wbaxx_it.h file
      • Замініть stm32wbaxx_it.c file
      • Замінити основний.ч file і оновіть його: збережіть визначення світлодіода та кнопки користувача шаблону LL у розділі КОНФІГУРАЦІЯ ПЛАТИ tags.
      • Замініть основний.c file і оновіть його:
    • Зберігайте конфігурацію годинника функції шаблону SystemClock_Config() LL у розділі КОНФІГУРАЦІЯ ПЛАТИ tags.
    • Залежно від визначення світлодіода, замініть кожне входження LDx іншим LDy, доступним у main.h file.
    • З цими модифікаціями ексample тепер працює на цільовій дошці

Програми безпеки
Цей пакет поставляється разом із програмами безпеки.

Додатки ДБФУ

  • SBSFU надає рішення Root of Trust, включаючи функції Secure Boot і Secure Firmware Update (на основі MCUboot).
  • Розчин використовується перед виконанням програми.
  • Рішення передбачає ексampфайл безпечної служби (перемикач GPIO), ізольований від незахищеної програми. Незахищена програма під час виконання все ще може використовувати це рішення.

Додатки TFM
TFM забезпечує рішення Root of Trust, включаючи функції безпечного завантаження та безпечного оновлення мікропрограми
(на основі MCUboot). Розчин використовується перед виконанням програми. Рішення надає захищені служби TFM, ізольовані від незахищеної програми. Незахищена програма під час виконання все ще може використовувати це рішення.

радіочастотні програми
РЧ-додаток описано в цій примітці до програми: Створення бездротових програм за допомогою мікроконтролерів серії STM32WBA (AN5928).

Отримання оновлень випуску STM32CubeWBA
Найновіші випуски пакетів STM32CubeWBA MCU та виправлення доступні в серії STM32WBA. Їх можна отримати за допомогою кнопки ПЕРЕВІРИТИ НА ОНОВЛЕННЯ в STM32CubeMX. Щоб отримати додаткові відомості, зверніться до розділу 3 посібника користувача STM32CubeMX щодо створення коду C для налаштування та ініціалізації STM32 (UM1718).

FAQ

  • Коли слід використовувати HAL замість драйверів LL?
    • Драйвери HAL пропонують високорівневі та функціонально-орієнтовані API з високим рівнем переносимості. Складність продукту або периферійного пристрою прихована для кінцевих користувачів.
    • Драйвери LL пропонують API низькорівневого рівня реєстру з кращою оптимізацією, але меншою переносимістю. Вони вимагають глибоких знань щодо специфікацій продукту чи IP.
  • Чи можу я використовувати разом драйвери HAL і LL? Якщо я можу, які обмеження?
    • Можливе використання драйверів HAL і LL. Використовуйте HAL для фази ініціалізації IP, а потім керуйте операціями введення/виведення за допомогою драйверів LL.
    • Основна відмінність між HAL і LL полягає в тому, що драйвери HAL вимагають створення та використання дескрипторів для керування операціями, тоді як драйвери LL працюють безпосередньо з периферійними регістрами. Ексamples_MIX прample ілюструє, як змішувати HAL і LL.
  • Як увімкнути API ініціалізації LL?
    • Визначення API ініціалізації LL і пов’язаних ресурсів (структур, літералів і прототипів) обумовлено параметром компіляції USE_FULL_LL_DRIVER.
    • Щоб мати можливість використовувати API ініціалізації LL, додайте цей перемикач у препроцесор компілятора ланцюжка інструментів.
  • Як STM32CubeMX може генерувати код на основі вбудованого програмного забезпечення?
    STM32CubeMX має вбудовані знання мікроконтролерів STM32, включаючи їх периферійні пристрої та програмне забезпечення, яке дозволяє надавати графічне представлення користувачеві та генерувати *.h або *.c fileна основі конфігурації користувача.

ВАЖЛИВА ПРИМІТКА – ПРОЧИТАЙТЕ УВАЖНО

  • STMicroelectronics NV та її дочірні компанії («ST») залишають за собою право вносити зміни, виправлення, покращення, модифікації та вдосконалення продуктів ST та/або цього документа в будь-який час без попереднього повідомлення. Покупці повинні отримати актуальну актуальну інформацію про продукти ST перед розміщенням замовлень. Продукти ST продаються відповідно до умов продажу ST, які діють на момент підтвердження замовлення.
  • Покупці несуть виключну відповідальність за вибір, вибір і використання продуктів ST, а ST не несе відповідальності за допомогу в застосуванні чи дизайн продуктів покупців.
  • Компанія ST не надає жодних ліцензій, явних чи неявних, на будь-які права інтелектуальної власності.
  • Перепродаж продуктів ST з положеннями, відмінними від інформації, викладеної в цьому документі, анулює будь-яку гарантію, надану ST на такий продукт.
  • ST і логотип ST є торговими марками ST. Для отримання додаткової інформації про торгові марки ST див. www.st.com/trademarks. Усі інші назви продуктів або послуг є власністю відповідних власників.
  • Інформація в цьому документі замінює інформацію, надану раніше в будь-яких попередніх версіях цього документа.
  • © 2023 STMicroelectronics – Усі права захищено

Документи / Ресурси

Серія STMicroelectronics STM32WBA Початок роботи [pdfПосібник користувача
Серія STM32WBA Початок роботи, початок роботи, початок роботи

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *