STMicroelectronics-ロゴ

STMicroelectronics STM32WBA シリーズ スタートガイド

STMicroelectronics-STM32WBA-シリーズ-入門-図-1

製品情報

仕様:

  • 製品名: STM32CubeWBA MCU パッケージ
  • メーカー: STマイクロエレクトロニクス
  • 互換性: STM32WBAシリーズマイクロコントローラ
  • ライセンス: オープンソースのBSDライセンス

製品使用説明書

STM32CubeWBA MCU パッケージの主な特徴:
STM32CubeWBA MCU パッケージは、STM32WBA シリーズ マイクロコントローラでアプリケーションを開発するために必要なすべての組み込みソフトウェア コンポーネントを提供します。 STM32 シリーズ内で移植性が高く、HAL および LL API が付属しています。ampファイル、およびミドルウェア コンポーネント。

アーキテクチャオーバーview:
STM32CubeWBA MCU パッケージのアーキテクチャは、アプリケーション、ライブラリおよびプロトコルベースのコンポーネント、ハードウェア抽象化層、BSP ドライバ、コア ドライバ、および低層 API の XNUMX つのレベルで構成されています。

よくある質問

  • STM32CubeWBA MCU パッケージには何が含まれていますか?
    パッケージには、低層 (LL) およびハードウェア抽象化層 (HAL) API が含まれています。ampファイル、アプリケーション、ミドルウェアコンポーネントなど FileX/LevelX、NetX Duo、mbed-crypto ライブラリなど。
  • STM32CubeWBA MCU パッケージは STM32CubeMX コード ジェネレーターと互換性がありますか?
    はい、このパッケージは、初期化コードを生成するための STM32CubeMX コード ジェネレーターと完全な互換性があります。

導入

  • STM32Cube は、開発の労力、時間、コストを削減することで設計者の生産性を大幅に向上させる STMicroelectronics 独自の取り組みです。 STM32Cube は、STM32 ポートフォリオ全体をカバーします。
    STM32Cubeには次のものが含まれます。
    • 構想から実現までのプロジェクト開発をカバーする、ユーザーフレンドリーなソフトウェア開発ツールのセット。
      • STM32CubeMX、グラフィカルウィザードを使用してC初期化コードの自動生成を可能にするグラフィカルソフトウェア構成ツール
      • STM32CubeIDE、ペリフェラル構成、コード生成、コードコンパイル、およびデバッグ機能を備えたオールインワン開発ツール
      • STM32CubeCLT、コードコンパイル、ボードプログラミング、デバッグ機能を備えたオールインワンのコマンドライン開発ツールセット
      • STM32CubeProgrammer(STM32CubeProg)、グラフィカルバージョンとコマンドラインバージョンで利用可能なプログラミングツール
      • STM32CubeMonitor (STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF、STM32CubeMonUCPD)、STM32 アプリケーションの動作とパフォーマンスをリアルタイムで微調整する強力な監視ツール
    • STM32Cube MCU および MPU パッケージは、各マイクロコントローラおよびマイクロプロセッサ シリーズ (STM32WBA シリーズの STM32CubeWBA など) に固有の包括的な組み込みソフトウェア プラットフォームであり、次のものが含まれます。
      • STM32Cubeハードウェアアブストラクションレイヤー(HAL)、STM32ポートフォリオ全体で最大の移植性を保証
      • STM32Cube低層API、ハードウェアに対する高度なユーザー制御で最高のパフォーマンスとフットプリントを保証
      • ThreadXなどのミドルウェアコンポーネントの一貫したセット、 FileX / LevelX、NetX Duo、USBX、タッチ ライブラリ、mbed-crypto、TFM、MCUboot、OpenBL、および STM32_WPAN (Bluetooth® Low Energy pro を含む)fileおよびサービス、Mesh、Zigbee®、OpenThread、Matter、および 802.15.4 MAC 層)
      • 周辺機器とアプリケーションの完全なセットを備えたすべての組み込みソフトウェアユーティリティampレ
    • STM32Cube拡張パッケージ。STM32CubeMCUおよびMPUパッケージの機能を補完する組み込みソフトウェアコンポーネントが含まれています。
      • ミドルウェア拡張機能とアプリケーションレイヤー
      • Exampいくつかの特定のSTMicroelectronics開発ボードで実行されているファイル
  • このユーザー マニュアルでは、STM32CubeWBA MCU パッケージの使用を開始する方法について説明します。
    • セクション 2 STM32CubeWBA の主な機能では、STM32CubeWBA MCU パッケージの主な機能について説明します。
    • セクション 3 STM32CubeWBA アーキテクチャの概要view オーバーを提供しますview STM32CubeWBA アーキテクチャと MCU パッケージ構造の説明。

一般情報

STM32CubeWBA MCU パッケージは、Arm® TrustZone® および FPU を備えた Arm® Cortex®-M32 プロセッサをベースとした STM32 33 ビット マイクロコントローラ上で動作します。
注記: ArmおよびTrustZoneは、米国および/またはその他の国におけるArm Limited(またはその子会社)の登録商標です。

STM32CubeWBAの主な特長

  • STM32CubeWBA MCU パッケージは、TrustZone® および FPU を備えた Arm® Cortex®-M32 プロセッサをベースとした STM32 33 ビット マイクロコントローラ上で動作します。
  • STM32CubeWBA は、STM32WBA シリーズ マイクロコントローラ用のアプリケーションを開発するために必要なすべての汎用組み込みソフトウェア コンポーネントを 32 つのパッケージに集めています。 STM32Cube イニシアチブに沿って、このコンポーネント セットは、STM32WBA シリーズ マイクロコントローラ内だけでなく、他の STMXNUMX シリーズにも移植性が高くなります。
  • STM32CubeWBA は、STM32CubeMX コード ジェネレーターと完全な互換性があり、初期化コードを生成します。このパッケージには、マイクロコントローラー ハードウェアをカバーする低層 (LL) およびハードウェア抽象化層 (HAL) API と、広範な拡張セットが含まれています。ampファイルは STMicroelectronics ボード上で実行されます。 HAL および LL API は、ユーザーの便宜のためにオープンソース BSD ライセンスで利用できます。
  • STM32CubeWBA MCU パッケージには、Microsoft® Azure® RTOS ミドルウェア、その他の社内およびオープンソース スタックを中心に構築された包括的なミドルウェア コンポーネントも含まれています。ampレ。
  • これらには、無料でユーザーフレンドリーなライセンス条項が付属しています。
    • 統合されたフル機能の Azure® RTOS: Azure® RTOS ThreadX
    • Azure® RTOS ThreadX を使用した CMSIS-RTOS の実装
    • 多くのクラスを備えた USB ホストおよびデバイス スタック: Azure® RTOS USBX
    • 高度な file システムおよびフラッシュ変換層: FileX / レベルX
    • 産業グレードのネットワーキング スタック: 多くの IoT プロトコルに伴うパフォーマンスに最適化: NetX Duo
    • オープンブートローダー
    • Arm® Trusted Firmware-M (TF‑M) 統合ソリューション
    • mbed-crypto ライブラリ
    • STネットワークライブラリ
    • STMTouch タッチ センシング ライブラリ ソリューション
  • これらすべてのミドルウェア コンポーネントを実装するいくつかのアプリケーションとデモも、STM32CubeWBA MCU パッケージで提供されます。
  • STM32CubeWBA MCU パッケージのコンポーネント レイアウトを図 1 に示します。 STM32CubeWBA MCU パッケージのコンポーネント

    STMicroelectronics-STM32WBA-シリーズ-入門-図-2

STM32CubeWBA アーキテクチャー以上view

STM32CubeWBA MCU パッケージ ソリューションは、図 2. STM32CubeWBA MCU パッケージ アーキテクチャで説明されているように、簡単に相互作用する XNUMX つの独立したレベルを中心に構築されています。

STMicroelectronics-STM32WBA-シリーズ-入門-図-3

レベル0

このレベルは 3 つのサブレイヤーに分割されています。

  • ボードサポートパッケージ (BSP)。
  • ハードウェア抽象化レイヤー (HAL):
    • HAL 周辺機器ドライバー
    • 低層ドライバー
  • 基本的な周辺機器の使用例ampレ。

ボードサポートパッケージ(BSP)
この層は、ハードウェア ボードのハードウェア コンポーネント (LCD、オーディオ、microSD™、MEMS ドライバーなど) に関連する一連の API を提供します。これは 2 つの部分で構成されています。

  • コンポーネントドライバー:
    このドライバーは、STM32 デバイスではなく、ボード上の外部デバイスに関連しています。コンポーネント ドライバーは、BSP ドライバーの外部コンポーネントに特定の API を提供し、他のボードに移植できる可能性があります。
  • BSP ドライバー:
    BSP ドライバーを使用すると、コンポーネント ドライバーを特定のボードにリンクでき、ユーザーフレンドリーな一連のドライバーが提供されます。
    API。 API の命名規則は BSP_FUNCT_Action() です。
    Exampファイル: BSP_LED_Init()、BSP_LED_On()
    BSP はモジュラー アーキテクチャに基づいており、低レベルのルーチンを実装するだけであらゆるハードウェアに簡単に移植できます。

ハードウェア抽象化層 (HAL) および低層 (LL)
STM32CubeWBA HAL と LL は補完的であり、幅広いアプリケーション要件をカバーします。

  • HAL ドライバーは、高レベルの機能指向の移植性の高い API を提供します。 MCU と周辺機器の複雑さをエンドユーザーに隠します。
    HAL ドライバーは、汎用のマルチインスタンス機能指向 API を提供し、すぐに使用できるプロセスを提供することでユーザー アプリケーションの実装を簡素化します。元の場合ampファイルでは、通信周辺機器 (I2S、UART など) に対して、周辺機器の初期化と構成、ポーリング、割り込み、または DMA プロセスに基づくデータ転送の管理、通信中に発生する可能性のある通信エラーの処理を可能にする API を提供します。 HAL ドライバー API は、次の XNUMX つのカテゴリに分類されます。
    1. 汎用 API。すべての STM32 シリーズ マイクロコントローラーに共通の汎用機能を提供します。
    2. 拡張 API。特定のファミリまたは特定の部品番号に特定のカスタマイズされた機能を提供します。
  • 低層 API はレジスタ レベルで低レベル API を提供しますが、最適化は向上しますが、移植性は低くなります。
    • MCU および周辺仕様に関する深い知識が必要です。
    • LL ドライバーは、HAL よりもハードウェアに近い、高速で軽量な専門家向けレイヤーを提供するように設計されています。 HAL とは対照的に、LL API は、最適化されたアクセスが重要な機能ではないペリフェラルや、重いソフトウェア構成や複雑な上位レベルのスタックを必要とするペリフェラルには提供されません。
    • LL ドライバーの特徴は次のとおりです。
      • データ構造で指定されたパラメータに従って周辺の主な機能を初期化するための関数のセット。
      • 各フィールドに対応するリセット値を初期化データ構造に入力する一連の関数。
      • ペリフェラルの初期化解除(ペリフェラルレジスタをデフォルト値に戻す)機能。
      • 直接およびアトミックなレジスタ アクセスのためのインライン関数のセット。
      • HAL から完全に独立しており、スタンドアロン モード (HAL ドライバーなし) で使用できる機能。
      • サポートされる周辺機能を完全にカバーします。

基本的な周辺機器の使用例ampレ
この層は元を囲みますampHAL および BSP リソースのみを使用して STM32 ペリフェラル上に構築されたファイル。

レベル1

このレベルは 2 つのサブレイヤーに分かれています。

  • ミドルウェアコンポーネント
  • 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: 2 つの機能モードを備えた組み込みシステム向けに設計されたリアルタイム オペレーティング システム (RTOS)。
        • コモン モード: スレッド管理と同期、メモリ プール管理、メッセージング、イベント処理などの一般的な RTOS 機能。
        • モジュール モード: モジュール マネージャーを介して、事前にリンクされた ThreadX モジュールをオンザフライでロードおよびアンロードできる高度なユーザー モードです。
      • NetX デュオ
      • FileX
      • USBX
    • Bluetooth® Low Energy (BLE): リンク層とスタック層に Bluetooth® Low Energy プロトコルを実装します。
    • MCUboot (オープンソース ソフトウェア)
    • スタックおよび関連クラスター用の Zigbee® プロトコル。
    • Thread® プロトコル スタックとリンク層。
    • Arm® トラステッド ファームウェア-M、TF‑M (オープンソース ソフトウェア): TrustZone® 用の Arm® プラットフォーム セキュリティ アーキテクチャ (PSA) と、関連する安全なサービスのリファレンス実装。
    • mbed-crypto (オープンソース ソフトウェア): mbed-crypto ミドルウェアは、PSA 暗号化 API 実装を提供します。
    • STM32 タッチ センシング ライブラリ: 堅牢な STMTouch 静電容量式タッチ センシング ソリューション。近接、タッチキー、リニアおよびロータリー タッチ センサーをサポートします。これは、実証済みの表面電荷移動取得原理に基づいています。

Exampミドルウェアコンポーネントに基づくファイル
各ミドルウェア コンポーネントには 1 つ以上の ex が付属しています。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 は豊富な ex セットを備えていますampあらゆるレベルのファイルとアプリケーションを統合することで、HAL ドライバーやミドルウェア コンポーネントを簡単に理解して使用できるようになります。これらの元ampファイルは、表 2 にリストされている STMicroelectronics ボード上で実行されます。
    表 2. STM32WBA シリーズ用ボード
    ボード ボード STM32WBA 対応デバイス
    ヌクレオ-WBA52CG STM32WBA52CGU6
    ヌクレオ-WBA55CG STM32WBA55CGU6
    STM32WBA55-DK1 STM32WBA55CGU7
  • STM32CubeWBA MCU パッケージは、互換性のある任意のハードウェア上で実行できます。ユーザーは BSP ドライバーを更新するだけで、提供されている元のバージョンを移植できます。ampボード上のファイル (後者に同じハードウェア機能 (LED、LCD ディスプレイ、ボタンなど) がある場合)。
ファームウェアパッケージが終了しましたview
  • STM32CubeWBA パッケージ ソリューションは、図 3 に示す構造を持つ 32 つの zip パッケージで提供されます。 STMXNUMXCubeWBA ファームウェア パッケージ構造。

    STMicroelectronics-STM32WBA-シリーズ-入門-図-4

  • 各ボードに対して、ex のセットampファイルは、EWARM、MDK-ARM、および STM32CubeIDE ツールチェーン用の事前構成されたプロジェクトとともに提供されます。
  • 図 4. STM32CubeWBA 例amp終わりましたview に、NUCLEO-WBA52CG、NUCLEO-WBA55CG、および STM32WBA55G-DK1 ボードのプロジェクト構造を示します。

    STMicroelectronics-STM32WBA-シリーズ-入門-図-5

  • 元ampファイルは、適用される STM32Cube レベルに応じて分類され、次のように名前が付けられます。
    • レベル0exampファイルはExと呼ばれますampレス、元amples_LL、およびExamples_MIX。これらは、ミドルウェア コンポーネントを使用せずに、それぞれ HAL ドライバー、LL ドライバー、および HAL ドライバーと LL ドライバーの混合を使用します。
    • レベル1exampファイルはアプリケーションと呼ばれます。これらは、各ミドルウェア コンポーネントの典型的な使用例を提供します。 Templates および Templates_LL ディレクトリで利用可能なテンプレート プロジェクトのおかげで、特定のボード用のファームウェア アプリケーションを迅速に構築できます。

TrustZone® 対応プロジェクト

  • TrustZone® 対応例ampファイル名には _TrustZone プレフィックスが含まれます。このルールはアプリケーションにも適用されます (TrustZone® 用にネイティブに提供される TFM と SBSFU を除く)。
  • TrustZone® 対応の Exampファイルとアプリケーションには、図 5 に示すように、セキュアなサブプロジェクトと非セキュアなサブプロジェクトで構成されるマルチプロジェクト構造が提供されます。マルチプロジェクトのセキュアなプロジェクト構造と非セキュアなプロジェクト構造。
  • TrustZone® 対応プロジェクトは、CMSIS-5 デバイス テンプレートに従って開発され、システム パーティショニング ヘッダーを含むように拡張されています。 file パーティション_ .h は、主にセキュア属性ユニット (SAU)、FPU、およびセキュア実行状態でのセキュア/非セキュア割り込みの割り当てのセットアップを担当します。
  • このセットアップは、セキュアな CMSIS SystemInit() 関数で実行されます。この関数は、セキュアなアプリケーションの main() 関数に入る前の起動時に呼び出されます。ソフトウェア ガイドラインについては、Arm® TrustZone®-M のドキュメントを参照してください。

    STMicroelectronics-STM32WBA-シリーズ-入門-図-6

  • STM32CubeWBA パッケージ ファームウェア パッケージは、パーティション _ 内にデフォルトのメモリ パーティショニングを提供します。 .h file\Drivers\CMSIS\Device\ST\STM32WBAxx\Include\Templates から入手できます。
  • このパーティションでは file■ デフォルトでは、SAU は無効になっています。したがって、IDAU メモリ マッピングはセキュリティ属性に使用されます。 RM0495 リファレンス マニュアルの図「TrustZone® テクノロジーを使用したセキュア/非セキュア パーティショニング」を参照してください。
  • ユーザーが SAU を有効にすると、デフォルトの SAU 領域構成がパーティションに事前定義されます。 file次のようにします。
    • SAU 領域 0: 0x08080000 – 0x081FFFFF (フラッシュ メモリの非セキュアでセキュアな半分 (512 KB))
    • SAU 領域 1: 0x0BF88000 – 0x0BF97FFF (非セキュア システム メモリ)
    • SAU 領域 2: 0x0C07E000 – 0x0C07FFFF (安全、非安全な呼び出し可能)
    • SAU 領域 3: 0x20010000 – 0x2001FFFF (非セキュア SRAM2 (64 K バイト))
    • SAU 領域 4: 0x40000000 – 0x4FFFFFFF (非セキュア ペリフェラル マップド メモリ)
  • デフォルトのパーティショニングと一致させるには、STM32WBAxx シリーズ デバイスに次のユーザー オプション バイトが設定されている必要があります。
    • TZEN = 1 (TrustZone® 対応デバイス)
    • SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (内部フラッシュ メモリの 64 ページ中 128 ページがセキュアとして設定) 注: 内部フラッシュ メモリは、TZEN = 1 のデフォルトで完全にセキュアです。ユーザー オプション バイト SECWM1_PSTRT/ SECWM1_PEND は、アプリケーションに応じて設定する必要があります。メモリ構成 (SAU 領域、SAU が有効な場合)。セキュア/非セキュア アプリケーション プロジェクト リンカー fileも整列する必要があります。
  • すべてのexampファイルは同じ構造を持っています。
    • すべてのヘッダーを含む \Inc フォルダー files.
    • ソースコードが含まれる Src フォルダー。
    • 各ツールチェーンの事前構成されたプロジェクトを含む \EWARM、\MDK-ARM、および \STM32CubeIDE フォルダー。
    • ex について説明した readme.md および readme.htmlample の動作と、それを機能させるために必要な環境。
    • 国際 file これにより、ユーザーはファームウェアのほとんどを開くことができます。ampSTM32CubeMX 内のファイル。

STM32CubeWBA を始める

最初の HAL ex を実行するample

このセクションでは、最初の ex を実行することがいかに簡単であるかを説明します。ampSTM32CubeWBA内のファイル。 NUCLEO-WBA52CG ボード上で実行される単純な LED トグルの生成を例として使用します。

  1. STM32CubeWBA MCU パッケージをダウンロードします。
  2. 選択したディレクトリに解凍します。
  3. 図 1 に示すパッケージ構造を変更しないように注意してください。パスが変更されると一部の IDE で問題が発生するため、ルート ボリューム (C:\ST または G:\Tests を意味します) に近い場所にパッケージをコピーすることもお勧めします。長さが長すぎます。

最初の TrustZone® 対応 ex の実行ample

  • TrustZone® 対応 ex をロードして実行する前にample、元ファイルを読むことは必須ですampリードミー file これにより、セクション 4.2.1 TrustZone® 対応プロジェクト (TZEN=1 (ユーザー オプション バイト)) で説明されているようにセキュリティが有効になります。
    1. \Projects\NUCLEO-WBA52CG\Ex を参照します。ampレ。
    2. \GPIO を開き、次に \GPIO_IOToggle_TrustZone フォルダを開きます。
    3. 好みのツールチェーンを使用してプロジェクトを開きます。簡単に終わりますview ex を開いて構築し、実行する方法についてampサポートされているツールチェーンを含むファイルを以下に示します。
    4. すべての安全なプロジェクトと安全でないプロジェクトを順番に再構築します files を実行し、セキュアなイメージと非セキュアなイメージをターゲット メモリにロードします。
    5. 元を実行しますampファイル: 定期的に、セキュア アプリケーションは LD2 を毎秒切り替え、非セキュア アプリケーションは 3 倍の速さで LDXNUMX を切り替えます。詳細については、Readme を参照してください file 元のampル。
  • ex を開いてビルドし、実行するにはampサポートされているツールチェーンを使用してファイルを作成するには、以下の手順に従います。
    • ウォーム:
      1. 元の下でampファイルフォルダーに移動し、\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. プログラムを実行します: [デバッグ]>[実行(F5)]
    • MDK-ARM:
      1. \MDK-ARM ツールチェーンを開きます。
      2. マルチプロジェクトワークスペースを開きます 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. 元を実行しますampル。
    • STM32CubeIDE:
      1. STM32CubeIDE ツールチェーンを開きます。
      2. マルチプロジェクトワークスペースを開きます file 。プロジェクト。
      3. xxxxx_Secure プロジェクトを再ビルドします。
      4. xxxxx_NonSecure プロジェクトを再ビルドします。
      5. セキュアプロジェクトの[Debug as STM32 Cortex-M C/C++]アプリケーションを起動します。
      6. [構成編集]画面で[スタートアップ]パネルを選択し、ノンセキュアプロジェクトのイメージとシンボルを追加読み込みします。
        重要: 非セキュア プロジェクトは、セキュア プロジェクトより前にロードする必要があります。
      7. [OK]をクリックします。
      8. 元を実行しますampデバッグの観点からのファイル。

最初の TrustZone® 無効化例の実行ample

  • TrustZone® をロードして実行する前に、無効な example、元ファイルを読むことは必須ですampリードミー file 特定の構成に対応します。特に記載がない場合は、ボードデバイスのセキュリティが無効になっていることを確認してください (TZEN=0 (ユーザーオプションバイト))。 TZEN = 0 へのオプションの回帰の実行については、FAQ を参照してください。
    1. \Projects\NUCLEO-WBA52CG\Ex を参照します。ampレ。
    2. \GPIO、\GPIO_EXTI フォルダを開きます。
    3. 好みのツールチェーンを使用してプロジェクトを開きます。簡単に終わりますview ex を開いて構築し、実行する方法についてampサポートされているツールチェーンを含むファイルを以下に示します。
    4. すべてを再構築 files を選択し、イメージをターゲット メモリにロードします。
    5. 元を実行しますampファイル: [USER] プッシュボタンを押すたびに、LD1 LED が切り替わります。詳細については、Readme を参照してください file 元のampル。
  • ex を開いてビルドし、実行するにはampサポートされているツールチェーンを使用してファイルを作成するには、以下の手順に従います。
    • ウォーム:
      1. 元の下でampファイルフォルダーに移動し、\EWARM サブフォルダーを開きます。
      2. Project.eww ワークスペースを起動します (ワークスペース名は以前とは異なる場合があります)amp他の人に伝えます)。
      3. すべてを再構築 files: [プロジェクト]>[すべて再構築]。
      4. プロジェクトイメージをロードします: [プロジェクト]>[デバッグ]。
      5. プログラムを実行します: [デバッグ] > [実行 (F5)]。
    • MDK-ARM:
      1. 元の下でampファイルフォルダー内の \MDK-ARM サブフォルダーを開きます。
      2. Project.uvproj ワークスペースを起動します (ワークスペース名は以前とは異なる場合があります)amp他の人に伝えます)。
      3. すべてを再構築 files:[プロジェクト]>[すべてのターゲットを再構築する] fileNS]。
      4. プロジェクトイメージをロードします: [デバッグ]>[デバッグセッションの開始/停止]。
      5. プログラムを実行します: [デバッグ]>[実行(F5)]。
    • STM32CubeIDE:
      1. STM32CubeIDE ツールチェーンを開きます。
      2. [をクリックしますFile]>[ワークスペースの切り替え]>[その他]を選択し、STM32CubeIDE ワークスペース ディレクトリを参照します。
      3. [をクリックしますFile]>[インポート] をクリックし、[一般]>[既存のプロジェクトをワークスペースに]を選択し、[次へ]をクリックします。
      4. STM32CubeIDE ワークスペース ディレクトリを参照し、プロジェクトを選択します。
      5. すべてのプロジェクトをリビルドする files: [プロジェクトエクスプローラー]ウィンドウでプロジェクトを選択し、[プロジェクト]>[プロジェクトのビルド]メニューをクリックします。
      6. プログラムを実行します: [実行]>[デバッグ(F11)]
カスタムアプリケーションの開発

注記: ソフトウェアは命令キャッシュ (ICACHE) を有効にして、フラッシュ メモリから 0 待機状態の実行を取得し、最大のパフォーマンスとより良い消費電力を実現する必要があります。

STM32CubeMX を使用したアプリケーションの開発または更新

  • STM32CubeWBA MCU パッケージでは、ほぼすべてのプロジェクトがampファイルは、システム、周辺機器、ミドルウェアを初期化するために STM32CubeMX ツールを使用して生成されます。
  • 既存のプロジェクトの直接使用ampSTM32CubeMX ツールのファイルには STM32CubeMX 6.10.0 以降が必要です。
    • STM32CubeMX のインストール後、提案されたプロジェクトを開いて、必要に応じて更新します。既存のプロジェクトを開く最も簡単な方法は、*.ioc をダブルクリックすることです。 file STM32CubeMX がプロジェクトとそのソースを自動的に開くようにする files.
    • STM32CubeMX は、このようなプロジェクトの初期化ソース コードを生成します。アプリケーションのメインソースコードは、「USER CODE BEGIN」と「USER CODE END」のコメントに含まれています。 IP の選択と設定が変更された場合、STM32CubeMX はコードの初期化部分を更新しますが、メイン アプリケーションのソース コードは保持します。
  • STM32CubeMX でカスタム プロジェクトを開発するには、次の段階的なプロセスに従ってください。
    1. 必要なペリフェラルのセットに一致する STM32 マイクロコントローラを選択します。
    2. ピン配置競合ソルバー、クロックツリー設定ヘルパー、消費電力計算機、MCU ペリフェラル構成 (GPIO や USART など) およびミドルウェア スタック (USB など) を実行するユーティリティを使用して、必要な組み込みソフトウェアをすべて構成します。
    3. 選択した構成に基づいて初期化 C コードを生成します。このコードは、いくつかの開発環境ですぐに使用できます。ユーザーコードは次のコード生成時に保持されます。
  • STM32CubeMX の詳細については、ユーザー マニュアル STM32CubeMX の STM32 構成および初期化 C コード生成 (UM1718) を参照してください。
  • 利用可能なプロジェクトのリストについては、exampSTM32CubeWBA のファイルについては、アプリケーション ノート STM32Cube ファームウェア ex を参照してください。ampSTM32WBA シリーズ用のファイル (AN5929)。

ドライバーアプリケーション

HALアプリケーション
このセクションでは、STM32CubeWBA を使用してカスタム HAL アプリケーションを作成するために必要な手順について説明します。

  1. プロジェクトを作成する
    • 新しいプロジェクトを作成するには、\Projects\ の下にある各ボードに提供されているテンプレート プロジェクトから開始します。 \テンプレート、または \プロジェクト\ の下にある利用可能なプロジェクトから\サンプルまたは\プロジェクト\ \アプリケーション (ここで、はボード名を指します (STM32CubeWBA など)。
    • Template プロジェクトは空のメイン ループ関数を提供します。ただし、STM32CubeWBA プロジェクト設定を理解するための良い出発点となります。テンプレートには次の特徴があります。
      • これには、特定のボード上でコードを開発するために必要なコンポーネントの最小セットである、HAL ソース コード、CMSIS、および BSP ドライバーが含まれています。
      • これには、すべてのファームウェア コンポーネントの含まれるパスが含まれています。
      • サポートされる STM32WBA シリーズ デバイスを定義し、CMSIS および HAL ドライバーを正しく設定できるようにします。
      • すぐに使えるユーザーを提供します file以下に示すように事前設定されています。
        HAL は Arm® コア SysTick を使用してデフォルトのタイムベースで初期化されました。 HAL_Delay() の目的で実装された SysTick ISR。
        注記: 既存のプロジェクトを別の場所にコピーする場合は、含まれるすべてのパスが更新されていることを確認してください。
  2. 必要なミドルウェアをユーザープロジェクトに追加します(オプション)
    情報源を特定するには fileプロジェクトに追加される 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 で定義されたマクロによる)。
    • stm32wbaxx_hal_conf.h で定義された SysTick 割り込み優先順位 TICK_INT_PRIO でミリ秒ごとに割り込みを生成する SysTick の構成。
    • NVIC グループの優先順位を 0 に設定します。
    • stm32wbaxx_hal_msp.c ユーザーで定義された HAL_MspInit() コールバック関数の呼び出し file グローバルな低レベルのハードウェア初期化を実行します。
  5. システムクロックを設定する
    システム クロックの構成は、以下で説明する 2 つの API を呼び出すことによって行われます。
    • HAL_RCC_OscConfig(): この API は内部および外部オシレーターを構成します。ユーザーは 1 つまたはすべてのオシレーターを設定することを選択します。
    • 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. アプリケーションを開発する
    • このstagつまり、システムの準備が整い、ユーザー アプリケーション コードの開発を開始できます。
    • HAL は、ペリフェラルを構成するための直感的ですぐに使用できる API を提供します。ポーリング、割り込み、DMA プログラミング モデルをサポートし、あらゆるアプリケーション要件に対応します。各ペリフェラルの使用方法の詳細については、豊富なエクスペリエンスを参照してください。ampファイル セットは STM32CubeWBA MCU パッケージで提供されます。
      注意: デフォルトの HAL 実装では、SysTick タイマーがタイムベースとして使用され、一定の時間間隔で割り込みを生成します。 HAL_Delay() がペリフェラル ISR プロセスから呼び出される場合は、SysTick 割り込みの優先順位がペリフェラル割り込みよりも高い (数値的に低い) ことを確認してください。それ以外の場合、呼び出し元の ISR プロセスはブロックされます。タイムベース構成に影響を与える関数は、ユーザー内の他の実装の場合にオーバーライドできるようにするために __weak として宣言されます。 file (汎用タイマーを使用、例:ampファイル、または別の時間ソース)。詳細については、HAL_TimeBase ex を参照してください。ampル。

LLアプリケーション
このセクションでは、STM32CubeWBA を使用してカスタム LL アプリケーションを作成するために必要な手順について説明します。

  1. プロジェクトを作成する
    • 新しいプロジェクトを作成するには、\Projects\ の下にある各ボードに提供されている Templates_LL プロジェクトから開始します。 \Templates_LL、または \Projects\ の下にある利用可能なプロジェクトから\元amples_LL (はボード名を指します (NUCLEO-WBA32CG など)。
    • テンプレート プロジェクトは空のメイン ループ関数を提供します。これは、STM32CubeWBA のプロジェクト設定を理解するための良い出発点となります。テンプレートの主な特徴は次のとおりです。
      • これには、特定のボード上でコードを開発するために必要なコンポーネントの最小セットである、LL および CMSIS ドライバーのソース コードが含まれています。
      • これには、必要なすべてのファームウェア コンポーネントのパスが含まれています。
      • サポートされている STM32WBA シリーズ デバイスを選択し、CMSIS および LL ドライバーを正しく設定できるようにします。
      • すぐに使えるユーザーを提供します file次のように事前設定されています。
        ◦ main.h: LED および USER_BUTTON 定義の抽象化レイヤー。
        ◦ main.c: 最大周波数のシステム クロック構成。
  2. 既存のプロジェクトを別のボードに移植する
    別のターゲット ボード上の既存のプロジェクトをサポートするには、各ボードに提供され、\Projects\ の下にある Templates_LL プロジェクトから開始します。 \テンプレート_LL。
    • LL exを選択してくださいample: LL ex が配置されているボードを見つけるにはampファイルがデプロイされています。LL ex のリストを参照してください。ampファイル STM32CubeProjectsList.html。
  3. LL ex を移植するamp上:
    • Templates_LL フォルダーをコピー/ペーストして初期ソースを保持するか、既存の Templates_LL プロジェクトを直接更新します。
    • 次に、移植は主に Templates_LL を置き換えることで構成されます。 file元によるamples_LL を対象としたプロジェクト。
    • ボード固有のパーツはすべて保管してください。明確にするために、ボード固有のパーツには特定のフラグが付けられています。 tags:

      STMicroelectronics-STM32WBA-シリーズ-入門-図-7

    • したがって、主な移植手順は次のとおりです。
      • stm32wbaxx_it.h を置き換えます。 file
      • stm32wbaxx_it.c を置き換えます。 file
      • main.h を置き換えます file LL テンプレートの LED とユーザー ボタンの定義を BOARD SPECIFIC CONFIGURATION に保持して更新します。 tags.
      • main.c を置き換えます。 file そしてそれを更新します:
    • SystemClock_Config() LL テンプレート関数のクロック設定を BOARD SPECIFIC CONFIGURATION に保持します。 tags.
    • LED 定義に応じて、各 LDx の出現を main.h で使用可能な別の LDy に置き換えます。 file.
    • これらの変更により、元のample はターゲットのボード上で実行されるようになりました

セキュリティアプリケーション
このパッケージはセキュリティ アプリケーションとともに提供されます。

SBSFUアプリケーション

  • SBSFU は、セキュア ブートおよびセキュア ファームウェア アップデート機能 (MCUboot ベース) を含む、信頼のルート ソリューションを提供します。
  • ソリューションはアプリケーションを実行する前に使用されます。
  • このソリューションは元の機能を提供しますamp安全でないアプリケーションから分離された安全なサービスのファイル (GPIO トグル)。実行時の安全でないアプリケーションは引き続きこのソリューションを使用できます。

TFM アプリケーション
TFM は、セキュア ブートおよびセキュア ファームウェア アップデート機能を含むルート オブ トラスト ソリューションを提供します。
(MCUboot に基づく)。ソリューションはアプリケーションを実行する前に使用されます。このソリューションは、安全でないアプリケーションから分離された TFM 安全なサービスを提供します。実行時の安全でないアプリケーションは引き続きこのソリューションを使用できます。

RFアプリケーション
RF アプリケーションについては、アプリケーション ノート「STM32WBA シリーズ マイクロコントローラを使用したワイヤレス アプリケーションの構築 (AN5928)」で説明されています。

STM32CubeWBA リリース アップデートの入手
最新の STM32CubeWBA MCU パッケージ リリースとパッチは、STM32WBA シリーズから入手できます。これらは、STM32CubeMX の CHECK FOR UPDATE ボタンから取得できます。詳細については、STM3 のコンフィギュレーションおよび初期化 C コード生成 (UM32) に関するユーザー マニュアル STM32CubeMX のセクション 1718 を参照してください。

よくある質問

  • LL ドライバーの代わりに HAL を使用する必要があるのはどのような場合ですか?
    • HAL ドライバーは、高レベルの移植性を備えた、高レベルの機能指向の API を提供します。製品や周辺機器の複雑さはエンド ユーザーには隠されています。
    • LL ドライバーは、より優れた最適化を備えた低層レジスタ レベル API を提供しますが、移植性は低くなります。製品または IP 仕様に関する深い知識が必要です。
  • HAL ドライバーと LL ドライバーを併用できますか?できる場合、制約は何ですか?
    • HAL ドライバーと LL ドライバーの両方を使用することができます。 IP 初期化フェーズに HAL を使用し、LL ドライバーで I/O 操作を管理します。
    • HAL と LL の主な違いは、LL ドライバーがペリフェラル レジスタ上で直接動作するのに対し、HAL ドライバーは操作管理用のハンドルを作成して使用する必要があることです。ザ・エクスamples_MIX exampこのファイルは、HAL と LL を混合する方法を示しています。
  • LL 初期化 API はどのようにして有効になりますか?
    • LL 初期化 API および関連リソース (構造体、リテラル、およびプロトタイプ) の定義は、USE_FULL_LL_DRIVER コンパイル スイッチによって条件付けされます。
    • LL 初期化 API を使用できるようにするには、このスイッチをツールチェーン コンパイラ プリプロセッサに追加します。
  • STM32CubeMX はどのようにして組み込みソフトウェアに基づいてコードを生成できるのでしょうか?
    STM32CubeMX には、ユーザーにグラフィック表現を提供し、*.h または *.c を生成できる周辺機器やソフトウェアを含む、STM32 マイクロコントローラーに関する知識が組み込まれています。 file■ ユーザー設定に基づきます。

重要なお知らせ – よくお読みください

  • STMicroelectronics NV およびその子会社 (以下「ST」) は、ST 製品および/またはこのドキュメントを予告なしにいつでも変更、修正、拡張、修正、および改善する権利を留保します。購入者は、注文を行う前に ST 製品に関する最新の関連情報を入手する必要があります。ST 製品は、注文確認時に適用される ST の販売条件に従って販売されます。
  • ST 製品の選択、選択、使用については購入者が単独で責任を負い、ST は購入者の製品の適用支援や設計については一切責任を負いません。
  • ST は、明示的か黙示的かを問わず、いかなる知的財産権のライセンスも付与しません。
  • ここに記載されている情報と異なる規定を伴う ST 製品を再販した場合、当該製品に対して ST が付与した保証は無効になります。
  • STおよびSTロゴはSTの商標です。 STの商標の詳細については、www.st.com/trademarksを参照してください。 他のすべての製品名またはサービス名は、それぞれの所有者に帰属します。
  • このドキュメントの情報は、このドキュメントの以前のバージョンで以前に提供された情報に優先し、置き換えられます。
  • © 2023 STマイクロエレクトロニクス – 無断転載を禁じます

ドキュメント / リソース

STMicroelectronics STM32WBA シリーズ スタートガイド [pdf] ユーザーマニュアル
STM32WBA シリーズ はじめに、はじめに、はじめに

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *