0
0

STM32CubeMXを使ってサンプルコード(X-CUBE)FWプロジェクトを生成! - ToFセンサ機能拡張(X-NUCLEO)ボードの例

Last updated at Posted at 2024-07-09

概要

 この記事では、マイコンの初期化コード自動生成ツール「STM32CubeMX」1を使用して、STM32Cube機能拡張パッケージ(X-CUBE2)で提供されている サンプルコードを、ユーザのターゲット(STM32マイコン)に適応したファームウェアプロジェクトの形に生成する方法を解説します。

こんな事例で使えます:
1) 持っているSTM32 Nucleoボード用のサンプル・ファームウェア(FW)プロジェクトがないので、新たにFWプロジェクトを作りたいが、ソースコードを直接修正することなく簡単に試してみたい。
 例) X-CUBE-TOF1の無償ソフトウェア(SW)パッケージ の中のサンプルコードを試したいが、その中にNUCLEO-G0B1RE用のFWプロジェクトがないので、新たにFWプロジェクトを作成しなおす必要がある。
2) STM32マイコンが搭載されたオリジナルのボードでサンプルコードのFWプロジェクトを作成したい。

すべてのSTM32用サンプルコードが今回紹介する機能に対応しているわけではありませんので、ご注意ください。

今回は、上記 1) のケースを紹介していきます。
ToF測距センサ拡張ボード「X-NUCLEO-53L8A1」 に対して、無償SWパッケージ「X-CUBE-TOF1」 が利用可能です。そのアプリケーション例にある 「53L8A1_SimpleRanging」3 というサンプルコードを例として、NUCLEO-G0B1REボード用のFWプロジェクト を作成するところまで行います。

主な手順:
STM32CubeMXを使った設定の大まかな流れは、以下の通りです。

1. STM32CubeMXの新規プロジェクトを作成
2. Software PacksのComponents Selectorを使用して必要なサンプルコードを構築
2.1 SWパッケージ(例:X-CUBE-TOF1)を選択
2.2 SWパッケージの中のアプリケーション例(例:53L8A1_SimpleRanging)を選択
2.3 アプリケーション例に必要なSWコンポーネント(例:ドライバ、ライブラリなど)を選択
3. SWコンポーネントの動作設定と必要なハードウェア・ピンを割り当て
4. FWプロジェクトを設定し、GENERATE CODEボタンをクリックしてFWプロジェクトを生成

今回使用したソフトウェアバージョンとボード:
ソフトウェア:
・STM32CubeMX :6.11.1
・X-CUBE-TOF1 : 3.4.1
ボード:
・X-NUCLEO-53L8A1
・NUCLEO-G0B1RE

詳細

手順を具体的に解説していきます。

1. STM32CubeMXの新規プロジェクトを作成

STM32CubeMXを起動し、[File]-[New Project] メニューから、NUCLEO-G0B1RBボードのプロジェクトを作成します。

image.png

<詳細はこちら>[ここをクリックすると下に展開して表示されます]

image.png

image.png

image.png

2. Software Packs Components Selectorを使用して必要なサンプルコードを構築

[Software Packs] - [Select Components] をクリックすると、

image.png

Software Packs Components Selector のウィンドウが開きます。ここでは、生成したいFWプロジェクトの構築に必要なソフトウェアのコンポーネント、つまり、必要なドライバやライブラリなど、ハードやアプリケーションなどに依存するソフトウェアのパーツを選択していきます。

 まずはPacksの中にある以下3つのアイコンをすべてクリックしてください。

image.png

すると、下図のように Packs 以外に3つの表示エリア( Filters , Components dependencies , Details and warning )が追加されます。

image.png

2.1. 使用したいSWパッケージを選択

Packs の表示エリア内を見ると、既にSTM32CubeMX上で使用可能なSWパッケージのリストが表示されています。これらはSTのウェブサイトからダウンロード可能ですが、STM32CubeMXの中で利用できるようになっています。今回は、X-CUBE-TOF1 を使いたいので、下図のようにFilters の検索機能を使用するか、

image.png

Packs 内のリストをスクロールしてX-CUBE-TOF1 を探します。

image.png

X-CUBE-TOF1の行の左端にある「 〉 」クリックすると、その下に新たに項目が表示されます。表示された項目中にも「 〉 」があるので、全てクリックして展開しておきましょう。

こんな風に表示されます。 [ここをクリックすると下に展開して表示されます]

image.png

[ Install ] ボタン が表示されている場合 [ここをクリックすると下に展開して表示されます]

初めて使用するソフトウェア・パックは、インストールする必要があります。

image.png

[Install] ボタンを押すと、ダウンロードが開始され、その後インストールされます。無事インストールが完了すると [Install] ボタンは消えます。

*STM32CubeMX V6.9.0以降では、mySTへのログインが必要です。
[Install] ボタンをクリックすると、"Please login to download a software package."のダイアログが表示され、続けて [OK] ボタンをクリックすると、"myST" へのログイン画面が表示されます。

・既にアカウントをお持ちの場合: E-mail AddressとPasswordを入力し、[Login] をクリック
・アカウントを持っていない場合: [Create Account] ボタンをクリックして新規登録をしてください

image.png

2.2. 使用したいアプリケーション例を選択

まず、使用したいサンプルコードのアプリケーション例を選択しましょう。先ほど展開した一番上のDevice TOF1_Applicationsの項目から、53L8A1_SimpleRanging を選択します。

image.png

 すると画面上に警告(黄色の三角)マークがいくつか表示され、その内容がDetails and warnings の中に英文で記載されています。これらの警告マークの内容に対して解決を手助けしてくれるのが、Packs表示エリアの下にある Component dependencies の内容です。Component dependencies では、必要なSWコンポーネントとの依存関係を具体的に示してくれます。

Component dependencies や Details and warnings の内容は、Packsの中の選択(黄色くハイライト)されている行によって変わります。 ここでは、Applicationの行が選択されていないと、Component dependencies やDetails and warnings に対応した内容が表示されないため、ご注意ください。

2.3. アプリケーション例に必要なSWコンポーネントを選択

Applicationがハイライトされている際、Component dependencies に表示される内容は以下のようになります。

image.png

Component dependencies 内に [Resolve] ボタンが表示されている場合、これをクリックすることで、ハイライトされた箇所のコンポーネントの依存関係を自動的に選択し解消してくれます。今回は [Resolve] ボタンが利用可能なので、こちらをクリックするだけで設定完了です。Resolveボタン以外にも、 [Show] ボタンと [Select] ボタンがあり、それぞれ以下のような機能を持ちます。

[Show] ボタン: その行に記載されてある項目を Pack 表示エリア内でハイライト
[Select] ボタン: Showでハイライトされた項目を実際に選択(設定)

上記の操作により、これまで黄色の警告マークがついていた Status の列が緑色の✔マークに変わります。これは、53L8A1_SimpleRangingに対して、必要なSWコンポーネントが全て選択されたことを示しています。

image.png

以上でこの画面の設定は完了です。右下の [OK] ボタンをクリックします。
この後は、SWパッケージ(X-CUBE-TOF1)の設定を行っていきます。

3. SWコンポーネントの動作設定と必要な周辺機能およびI/Oの割り当て

[Pinout & Configuration] のタブ画面に戻り、左端の [Categories]⇒ Middleware and Software Packs ⇒ X-CUBE-TOF1 をクリックし、X-CUBE-TOF1のMode and Configurationの設定画面を開きます。

3.1. Modeの設定

Board Extensions 53L8A1Device TOF1 Applications の2つに✔をいれます。これは、先ほどSoftware Components Selectorで選択したアプリケーションと拡張ボードの設定を行うために必要です。

image.png

3.2. Configurationの設定

3.2.1. [Parameter Settings]タブと[User Constants]タブ

今回は、デフォルトのままにしておきます。
image.png

3.2.2. Platform Settingsタブ

このタブでは、サンプルコードで使用する周辺機能やI/Oを設定します。

image.png

Nameの列に記載されている文字列(53L8A1_LPn_Cなど)上にマウスのカーソルを置くと、簡単な説明が表示されます。
image.png

設定方法は、Found Solutions をプルダウンメニューから選択していきますが、その選択肢は、まず周辺機能やI/Oを設定しないと表示されません。そこで、周辺機能やI/Oの設定を行っていきます。
 どのような周辺機能やI/Oが必要となるかは、IPs and Components の列に記載されています。

53L8A1_LPn_Cを例にすると、IPs or Components にはGPIO:Outputとあるので、GPIOのOutputポートをアサインする必要があります。

しかし、端子への割り当てについては、通常、拡張ボード(X-NUCLEO)のユーザマニュアルやNucleoボードの回路図などを参照しつつ設定していくことになります。

Nucleoボード上のArduinoコネクタ端子に対するSTM32マイコンのピンアサインが、ボードの種類によって異なる場合があるため注意してください。

ご参考までに、X-NUCLEO-53L8A1のボードといくつかのNucleoボードに関する必要な情報を、以下リンク先にまとめておきましたのでご活用ください。
ToF測距センサ機能拡張ボード(X-NUCLEO-53L8A1)のSTM32ピン・アサイン対応表 -Qiita

実際に設定した周辺機能などに関するSTM32CubeMXの画面を、以下の<設定後の内容>に記載しました。

<設定後の内容>[ここをクリックすると下に展開して表示されます] • Pinout view

image.png

• System Core: GPIO, NVIC, SYS

53L8A1_LPn_C53L8A1_PWR_EN_C のGPIO outputの出力レベルを High に設定しておく必要があるので、ご注意ください。

NVICの設定では、EXTIの割り込み(EXTI line 4 to 15 interrupts)を有効にしています。今回のX-CUBE-TOF1のParameter Settingsの設定では、特に外部割込みを必要とする内容は含まれていませんが、以下の理由により外部割込みを有効にしています。
 STM32CubeMXから生成されるUserボタンに対するBSPコードには、STM32CubeMXのNVICの設定に関係なく、外部割込みを有効にするコードが含まれています。しかし、これは割り込みを有効にするのみで、その割り込みハンドラは含まれていません。そのため、VL53L8CXのINT端子からの外部割込みが入ると無限ループのハンドラに移行してしまいます。

image.png

• Connectivity: I2C1, USART2
image.png

• Clock Configuration
image.png

上記の設定後、Found Solutions のプルダウン・メニュー内に設定した内容が反映されるので、それぞれ選択していきます。最終的には以下の設定になっていればOKです。
image.png

以上がソフトウェア・パック(X-CUBE-TOF1)に関する設定です。

4. FWプロジェクトの生成

この後は、FWプロジェクトを自動生成するための設定を行います。 [ProjectManager] のタブからプロジェクト名を入力し、使用するIDEを選択して [GENERATE CODE] ボタンをクリックすると、FWプロジェクトが生成されます。
 以下は、STM32CubeIDEを使用した際のProjectManagerの設定例です。

image.png

  1. STM32CubeMXとは?
    STが提供する開発環境(STM32 ODE)の中の一つであり、STM32マイコン用の初期化コード自動生成ツールです。
    https://www.st.com/ja/development-tools/stm32cubemx.html

  2. STM32Cube拡張パッケージとは?
    STが提供する開発環境(STM32 ODE)の中の一つで、STM32 X-Nucleo機能拡張ボードに使用できる無償の拡張ソフトウェア
    https://www.st.com/ja/embedded-software/stm32cube-expansion-packages.html

  3. SimpleRangingとは
    ToF測距センサのデータをVCOM経由で出力し、TeraTermなどのターミナルソフトで下図のように確認できるサンプルコード
    image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0