ArmマイコンにTRY まずは"Lチカ"からスタート


写真はNECLEO STM32F446RE評価ボードで、プログラム作成にTRY。開発屋過程、疑問点など開発ノートにまとめて置くと、あとでとても参考になります。

2023.8.2

はじめに
「お気に入りのSDRトランシーバー4号機の製作」プロジェクトスタートに際し、採用決定したマイコン-ボードNUCLEO-F446REは、PICしか経験の無い当局にとっては かなりハードルが高く、自作SDRソフト製作を目標に、STEPを追って学習していきます。
 このシリーズでは、「参考書のソースでやってみたけど動かない」、などのトラブル経験なども含めて紹介していきます。

開発環境
 STMマイコンの場合、比較的短期間で開発ツールがVerUPするので、他のHPで紹介されている、ツールの表示画面と合わないことも多く、当局の 現在の開発環境をまとめておきます。
 PC Win10、開発ツール STM32CubeIDE Ver1.11.2、HAL(関数ライブラリー)を使用 評価ボード NUCLEO_F446RE、開発言語"C" を使用して開発を進めます
 Web上では、HAL以外にSPL(HAL以前の関数ライブラリー)やMbed(現在はKeil Studio、クラウド上での開発)のソースサンプルが紹介されていますので、 最初は区別ができませんでした。

  TRY目標
 ソフト開発の最終目標は「SDRトランシーバーの製作」を設定しているので、必要なブロック別にソースコードと関数の使い方にTRY、以下STEPを目標としました。
-1.デジタル入出力を使ってみる、SDRのハード制御にかかせない構成で、まずは"Lチカ"から。
-2.DAコンバーターを使ってみる、予定ではDAを使いませんが、デバックなどの動作確認に使いそうです。
-3.I2Cを使ってみる、使用予定のPLL IC Si5351の周波数設定に必須。
-4.USBを使ってみる、従来はUARTでの制御でしたが、今回は、USBを使った制御にTRY。
-5.ADを使ってみる、入力信号455kHzのIF信号をADしてみる
-6.NCO(数値制御発振器)、CICフィルタにTRY。
 最初は、数行程度のプログラムからはじめ、少しずつ実践的なプログラムに拡張していきます。

準備資料
 最初の段階では、プログラムは書籍やWebからのコピーになりますが、より理解するために関連資料も並行して目を通しておきます。とにかく資料が多く しかも細かく分類されているので、以下の資料をSTMのサイトからD/Lします。リンク先が変わってしまうので"STM32 資料番号"で検索してください。
NUCLEO-xxxxRx回路図 MB1136
STM32 NUCLEO-64 ユーザーマニアル UM1724
STM32F446RE ICデーターシートDS10693
STM32F446RE ICリファレンスマニアル RM0390
STM32CubeIDE ユーザーマニアル UM2609
STM32F4xx HAL+LLユーザーマニアル UM1725 

プログラム作成してみる
 プログラム作成の基本的な部分(レジスタのBit設定やインクルードファイルの挿入等)は、下図(クリックで拡大)の様なユーザーインターフェイス画面から 項目の選択や必要項目記入といった流れで進めていき、最後にコード生成ボタンをクリックすることでソースコードのひな型が自動で作成されます
 今回はGPIOの使い方練習として、ボード内のLEDを点滅(Lチカ)のプログラムを作成してみます。

 プロジェクト作成、STM32CubeIDEを立ち上げ(ちょっと時間かかる)左上File > New > STM32Projectを選択すると左図画面に変わるので、
1.Board Selecter > 2.Commercial PartsNumberリストからNUCLEO_F446REを選択 > 3.右下Board Listを選択 > 4.Nextをクリック
 当局の場合、3.で1アイテムのみ表示されるのでクリック不要と勘違いしてしまい、Nextをクリック出来ずにちょっと悩みました。
 Nextクリックで画面が変わり、Project Nameを入力(適当にrenshyuGPIOとして)し、確認メッセージが出るので「Yes」で次に進みます。

GPIOピンなどの設定

 使用するピンの設定、ボードの回路図を確認すると"LED"はPA5ピンに接続されているので、ICピン配置図のPA5をクリックして"OUTPUT"に設定します。
配置図初期設定では、他のピンも設定されているので"Reset"しておきます、"Reset"してはいけないピンは"Reset"出来ないように保護されているので安心です。
 Resetしていないピンは、コード生成時に、プログラムに組み込まれるので、無駄なコードが増えますが特にバグにはなりません。慣れない内は不要なピンはResetしておいた方が すっきりします。
 設定の確認、Categories欄の>マークをクリックして、GPIOを選択すると、PA5の設定内容が表示されます。デフォルトではPA5に"LD2"というラベルが付いていますが 自分なりの名前をつけたり、名前無しにもできます。
 間違いなければ、コード生成ボタン(画面上の方にある、黄色い歯車アイコン)を押して、確認「Yes」でエディタ画面にかわります。

 

ソースコードの記述

 ひな型ソースの/* User code Begin3 */ 〜 /* User code End3 */ の間に今回作成するLチカのソース(98行目から101行目)を記述します。
ここで使ったHAL関数の詳細はHAL+LLライブラリーのマニアルに説明がありますが、マニアル自体は英語で2000ページ以上もあり目を通すだけでも気が遠くなるので 簡単に「こういう風に書く物」として理解していきます。それにしても大文字入力が多くてキー操作が面倒。
 次に、ビルド(トンカチマークアイコン)をクリックしてエラーがなければ、PCとボードをUSB接続してRunをクリックすればプログラムが書き込まれLEDが0.5秒毎に点滅すれば成功です。
 今回作成したプログラムは4行ですが、ひな型全体ではmain.cだけでも200行程あり、従来レジスタ設定等の、多くの部分は理解しないままLチカが出来てしまいました。

 

今後の進め方
 Lチカが出来たので、次回はGPIO入力にTRYしてみます。

GPIO入力、割り込み入力にTRYへ

   Top Menu