STM32F7 Discovery Kit 第1回
ツイート弊社はこれまでマイコンは主にルネサス製のものを採用してきましたが
2020年3月号のトランジスタ技術でも特集が組まれていたSTM32マイコンを
試してみたいと思い評価基板を購入しました。
STM32マイコンは2007年の発売以降シェアを着実に広げてきている
STマイクロ製の汎用マイコンです。
評価ボードを触っていてSTマイクロさんから提供されている開発環境(IDE)、
サンプルソフト等、非常に魅力的なものだと思ったのですがまだ日本語の資料が
少ないことやくメーカー公式開発環境(CubeIDE)が昨年発表されたばかりでこちらを
使っての開発方法などについても情報が乏しいように感じました。
ドキュメント自体は公式サイトに色々ありますし、コミュニティサイトも活発なようなので
単純に私の英語力のなさがこのように感じる原因かもしれませんが、、、、
購入した評価基板でLCDに簡単な表示を出すまでにネット上をかなりさまよい
歩いたので忘備録もかねてLCDへの表示までの手順を本ブログに掲載したいと思います。
〜開発事前準備〜
対象評価基板:【STM32F7 Discovery Kit】
RSコンポーネンツさんなどで購入可能です。
基板自体は2015年夏頃に発売されたものですがSTM32F7シリーズは
現在でもSTM32シリーズにおける高性能マイコンです。
480x272の液晶が搭載されており購入時点でのデモソフトでは凝ったGUIで
USBから音楽ファイルを再生(イコライザ機能有り)が出来たりなど本マイコンの性能を
体験できます。
ちなみに基板を購入した際にドキュメント類などは一切付属していませんでした。
公式サイトにて本ボード用のページがありそちらにドキュメント類はまとめられています。
開発環境:【STM32CubeIDE】
STM32マイコンを開発する為の開発環境は色々とあるのですが2019年4月に
STマイクロエレクトロニクスから公式のIDEとして【STM32CubeIDE】が
リリースされていますので開発環境はこちらを使用します。
ダウンロードはSTマイクロ公式サイトより
インストールはガイドに沿って進めれば特に問題無いと思うのでここでは省略します。
〜LCDへの描画〜
私は色々と寄り道しましたが手順が分かればやることはシンプルです。
LCD以外の機能についても基本この流れで実装出来ると思います。
・とりあえず購入したボードに合わせたプロジェクトを作る
・サンプルプログラムのソフトウェアパッケージから必要なものをインポート
・main.cに必要なコード追加
具体的なLCDへの描画方法についての手順はこちらです。
- CubeIDEを立ち上げて新規プロジェクト(STM32プログラム)を作成
- Target Selection で Board Selectorから【STM32F746G Discovery】を選ぶ
この時STM32Cube_FW_F7_Vx.xx.xというSTマイクロが提供する
ソフトウェアパッケージをダウンロードする場所を聞いてくるので控えておいて下さい。 - Pinout&Configuration画面が表示されます。デフォルトではFreeRTOSが有効に
なっているのでこれは未使用にします。他はデフォルトでOKです。
プログラムの流れをシンプルにしたかったのでFreeRTOSを無効にしています。
FreeRTOSを使い慣れていればそのままでも良いと思います。
その場合は追加するコードはタスク内で処理して下さい。 - コード生成ボタンを押すか保存をするとコードが生成されます。
念のためここでビルドしてエラーが無いことを確認。
- 2にてダウンロードしたSTM32Cube_FW_F7_Vx.xx.xというソフトウェアパッケージから
LCDを使用する為のサンプルソフトをインポートします。必要なのは以下
STM32Cube_FW_F7_Vx.xx.x\Drivers\BSP\Components
STM32Cube_FW_F7_Vx.xx.x\Drivers\BSP\STM32746G-Discovery
STM32Cube_FW_F7_Vx.xx.x\Utilities - インポートの手順は以下の通り
作成した新規プロジェクトのアイコン上で右クリック
【インポート】->【ファイルシステム】->【次へ】
次のディレクトリから
C:\Users\xxxxx\STM32Cube\Repository\STM32Cube_FW_F7_Vx.xx.x\Drivers\BSP\Components
上記で選んだフォルダがチェックアイコン付きで表示されます。この中で必要なファイルや
フォルダのみを選択すれば良いのですが面倒なので元フォルダにチェックして
全てインポートします。宛先フォルダ(同名のフォルダが無い時は自分で追記すること)
新規プロジェクト名\Drivers\BSP\Components残りの【\Drivers\BSP\STM32746G-Discovery】【\Utilities】も同様にインポート。
- インポートしたコードのインクルードパスを設定します
先ほどと同様に新規プロジェクトのアイコン上で右クリック
【プロパティ】->【C/C++ 一般】->【パスおよびシンボル】->【Includeタブ】->
【言語】->GNU Cで【追加】を押し以下のインクルードパスを追加します。
Drivers\BSP\Components\Common
Drivers\BSP\STM32746G-Discovery - メイン関数にLCD関係のコードを追加
【Core】->【Src】->main.cの以下コメント部分にコードを追加します。
追加箇所26行目辺り
/* USER CODE BEGIN Includes */
#include "stm32746g_discovery_lcd.h"
#include "stm32746g_discovery_sdram.h"
/* USER CODE END Includes */追加箇所180行目辺り
/* USER CODE BEGIN 2 */
BSP_LCD_Init();
BSP_LCD_DisplayOff();
BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS);
BSP_LCD_SelectLayer(1);
BSP_LCD_DisplayOn();
/* USER CODE END 2 */追加箇所200行目辺り
/* USER CODE BEGIN WHILE */
while (1)
{
BSP_LCD_Clear(LCD_COLOR_RED);
HAL_Delay(1000);
BSP_LCD_Clear(LCD_COLOR_BLUE);
HAL_Delay(1000);
BSP_LCD_Clear(LCD_COLOR_GREEN);
HAL_Delay(1000);
/* USER CODE END WHILE */ - 上記追記したらビルドします。
エラーが出る時は恐らくインクルードパスの設定に問題があると思います。
プロジェクトツリー内の【インクルード】にて指定しているパスが全て有効になっているか
確認して下さい。灰色文字になっているパスは指定が上手くできていません。 - ビルド成功後、デバッグを実行すると液晶が一秒おきに赤、青、緑に塗りつぶしされます。
ここまで動けば後はサンプルを参考に色々と追加ができると思います。
ざっとソースコードをみると半角フォント等を表示する関数も用意されているようなので
文字も簡単に表示できそうです。(というかできました。)
〜感想〜
これまでのマイコン開発では基本的にルネサス製のIDEのみで対応してきたこともあって
【STM32CubeIDE】の使い方を理解するのに時間がかかってしまったのですが
使い慣れてくればマイコン周辺機能についてはコード生成機能で提供される
STM32標準のHALライブラリを使用することで各周辺機能の動作を一通り確認と
といった工程ではかなりの工数を削減できると思います。冒頭で記載したように
まだ日本語の資料等が少ないですがサンプルプログラム等も上手く使うことで
今回試したLCDへの表示機能を使用する際も自身で記述するコードは最小限で
実装が可能です。
category -BLOG 2020/04/03 16:00