0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STM32CubeMXを使ったサンプルFW(X-CUBE)プロジェクトの生成方法 - ユーザーオリジナルボードを使用した例

Last updated at Posted at 2024-12-17

概要

前回の記事(以下のリンク先)では、 マイコンの初期化コード自動生成ツール「STM32CubeMX」1 を使用して、STM32Cube機能拡張パッケージ(X-CUBE)2で提供されているサンプルコードを、STM32 Nuceloボードをターゲットにしてご紹介しました。

 今回は、STM32 NuceloボードなどのSTM32CubeMX内で選択可能な評価ボードではなく、ユーザーが作成したオリジナルボードをターゲットにした場合について解説します。

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

 本記事で使用したボードは、STが日本で独自に作成したデモ・ボードです。STM32G0B1マイコンとToF測距センサ「VL53L8CX」を搭載したシンプルな構成ですが、MEMSセンサ・ボードを取り付けることもできるボードとなっています。
image.png

以下に、今回必要な部分のみのブロック図を示しました。
image.png

主なFWプロジェクトの生成手順

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

 上記のFWプロジェクトの生成の他に、生成後のビルドと実行内容に関しても紹介します。また、前回の記事と重複する手順内容に関しては、一部省いているので、前回記事も併せてご参照ください。

前回記事: https://qiita.com/sttsuyuki/items/365e123ed8e926f57958

今回使用したソフトウェア・バージョンとボード:
ソフトウェア :
・STM32CubeMX : 6.12.0
・STM32CubeIDE: 1.16.0
・X-CUBE-TOF1 : 3.4.1
ボード :
・ST-Japanオリジナル・ボード

詳細

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

(1) STM32CubewMXを起動し、[File]-[New Project] メニューを選択
image.png

(2) [MCU/MPU Selector] タブの画面にて、使用するボードに搭載されているSTM32マイコン:STM32G0B1KCT6の新規プロジェクトを作成
 下図のように Commercial Part Number にSTM32マイコンの製品名の一部などを入れると、製品の候補が表示されるので、その中から STM32G0B1KCT6を選択して、[Start Project] ボタンをクリックします。
image.png

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

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

(1) Software Packs Components Selectorのウィンドウを開く

image.png

(2) STM32CubeMX上で使用可能なSWパッケージのリストからX-CUBE-TOF1を選択

image.png

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

 今回はオリジナルのボードを使用するため、表示されるリストの中に、このボード用のアプリケーション例はありません。(例えば、拡張ボードX-NUCLEO-53L8A1用のアプリケーション例は、53L8A1で始まるアプリケーション例の名前となります。)
 そのため、デバイス(IC)名:VL53L8CXが、名前の先頭についているアプリケーション例 を選択します。今回は、VL53L8CX_SimpleRanging3を選択しました。

image.png

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

(1) Applicationが黄色くハイライトされている際、Component dependencies内に [Resolve] ボタンが表示されています。これをクリックすることで必要なSoftware Componentsが自動的に選択され、ここでの設定が完了します。
image.png

(2) [OK] ボタンをクリックし、この設定画面を閉じる。
image.png

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

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

3.1. Modeの設定

ここに表示されている 3つの項目全てに✔を入れます。
image.png

3.2. Configurationの設定

3.2.1. [Parameter Settings]タブ :

今回はRangingモードをInterruptに設定して進めていきます。この後のSTM32CubeMXの設定では、外部割り込みを有効にする必要があります。<設定後の内容>を参照してください。

image.png

3.2.2. [User Constants]タブ:

デフォルトのままにしておきます。

3.2.3. [Platform Settings]タブ :

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

image.png

 設定方法は、前回同様にFound Solutionsのプルダウン・メニューから選択するためには、まず、周辺機能やI/Oの設定から行う必要があります。
 実際に使用するボードの回路図などを基に設定していきます。ここでは、上のブロック図の情報から設定します。

(設定例)
TOF_INT_PIN の場合を示します。TOF_INT_PINに最終的に接続されるVL53L8CXの端子は、INT という端子です。VL53L8CXの端子の詳細は、データシート 4 参照ください。INT端子は、レベルシフタを介してSTM32マイコンのPA7 に接続されています。
①PA7端子を左クリックしてGPIO_EXTI7に設定
ここでは、わかりやすくするために端子のラベル名をINTと変更しておきましょう。
②端子で右クリックしてEnter User Label を選択
③ラベル名(INT)を入力
④ラベル名がGPIO_EXTI7 からINT に変更されたことを確認

image.png

これで下図のようにTOF_INT_PINの選択肢にPA7[INT] が追加されます。
image.png

他の設定も同様に行っていきます。

今回使用した基板にはToF測距センサの電源を制御するEnable信号があるため、VL53L8CX_PWR_ENの設定が可能です。しかし、もしこの信号ラインがボードにない場合、①特に端子を設定せずUndefinedのまま進めていき、生成されたソースコードを直接修正、または②未使用端子をダミーとして設定する方法が考えられます。
 Undefinedのまま進めた場合、FWプロジェクト生成時に以下のような警告が出ますが、

image.png

[Yes] ボタンをクリックすることでFWプロジェクト自体は生成されます。この場合ビルド時にエラーが出るので、エラー内容に基づいてソースコードの修正が必要です。

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

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

[Pinout View]
image.png

[System Core]:GPIOとNVIC
今回は、RangingモードをInterruptに設定したので、PA7の外部割込みとUSART2の割込みを有効にする必要があります。
image.png

image.png

[Connectivity] : USARTとI2C

image.png

[Clock Configuration]

image.png

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

image.png

ここで、前回のSTM32 Nuceloボードをターゲットとした場合との主相違点を以下にまとめました。

  • STM32 CubeMXの新規プロジェクトの作成では、ボードではなくデバイス(IC)を選択して作成
  • SoftwarePacks(X-CUBE-TOF1)のアプリケーション例の選択では、 ボード名ではなくデバイス(IC)名の一部が付いたアプリケーションを選択
  • I/Oの割り当て(Platform Settings)において、オリジナル・ボードにはない端子設定があった場合、設定せずにそのままプロジェクトを生成し、後でソースコードを直接修正するなどの対応が必要

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

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

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

image.png

5. FWプロジェクトのビルドと実行

5.1 FWプロジェクトのビルド

まず、STM32CubeMXで生成したFWプロジェクト・ファイルをSTM32CubeIDEで開きます。今回は特にFWの内容を変更することなく、そのまま使うので、ツールバーにある下図のBuildのアイコンをクリックするか、

image.png

ファイルメニューから [Project]>[Build Project] を選択してビルドを行います。
 ビルドが正常に完了したかどうかは、Consoleウィンドウから確認できます。正常に完了すれば以下のように表示されます。

image.png

5.2 デバッガの接続

ビルドがエラーなく正常に終了すれば、ボードへの書き込みが可能です。
(1) 今回は、デバッガ・ツールとしてSTLINK-V3SET 5 を使用します。STLINKを初めて使用される際はSTLINKのUSBドライバをインストールする必要があるので、以下リンク先よりダウンロードして事前にインストールを行ってください。

(2) ボード、STLINK-V3SET、パソコン(PC)を下図のように接続します。
センサ・ボードでは、デバッガI/F( J2 )はSWDとなっていますので、STLINK-V3SETの CN6 と接続します。
 また、今回のサンプルコードではPCとVirtualCOM接続して動作を確認するため、UART-USB変換(VCOM接続)が必要となります。STLINK-V3SETには、デバッガ機能以外にUART-USB変換(VCOM)などの機能もある ため、それを利用します。STLINK-V3SETの CN3 とセンサ・ボードとの接続はそのための結線です。

image.png

注意:STLINK-V3SETの基板上のCN3に、「Rx」と「Tx」のシルクの記載がありますが、これはSTLINK-V3SET側のRx/Tx端子を意味しているのではなく、上表の通り、接続先(ターゲット・ボード側)のRx/Tx端子をここに接続することを意味します。

5.3 ボードへの書き込みと実行

(1) ここでは、STM32CubeIDE のDebugモード上で実行していきます。Debugのアイコンをクリックするか、ファイルメニューから [Run]>[Debug] を選択します。すると、Console ウィンドウにその実行ログが表示されていき、最後に 「Download verified successfully」 と表示されれば、ボードへの書き込みが完了です。

image.png

 この時、デバッグ用画面に切り替えるかの確認画面(Confirm Perspective Switch)のウィンドウが表示されますので、[Switch] ボタンをクリックしてデバッグ用画面に切り替えます。
image.png

(2) DebugモードでRUNする前に、動作確認用にTeraTermを起動しておきます。 TerminalとSerial Portの設定は以下の通りです。

image.png

COM PortはSTLink Virtual COM PortのCOMポートを選択します。WindowsのDevice Managerでは以下のように表示されています。
image.png

(3) Resumeのアイコンをクリックするか、ファイルメニューから[Run]>[Resume]を選択します。しばらくした後、TeraTermに以下のような測距データが表示される画面になればOKです。
image.png

TeraTermの画面上にも説明が表示されていますが、以下のキーがコマンドなっています。
"r":解像度の切り替え : [4x4] or [8x8]
"s" : 表示データの切り替え:
  [測距データ(mm)] or
  [測距データ(mm)、Status、Signal(Kcps/SPAD)、Ambient(Kcps/SPAD)]
"c" : 画面を一旦クリアした後、結果を再表示

  1. STM32CubeMXとは?
    STが提供する開発環境(STM32 ODE)の中の一つで、STM32マイコン用の初期化コード自動生成ツール

  2. STM32Cube拡張パッケージ(X-CUBE)とは?
    STが提供する開発環境(STM32 ODE)の中の一つで、STM32 X-Nucleo機能拡張ボードに使用できる無償の拡張ソフトウェア

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

  4. VL53L8CXのウェブサイト
    https://www.st.com/ja/imaging-and-photonics-solutions/vl53l8cx.html#overview

  5. STLINK-V3SETのウェブサイト
    https://www.st.com/ja/development-tools/stlink-v3set.html

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?