電子回路わからん日記

にゃーんと言いながら電子回路いじってます

AUDIY、STM32マイコンを始めるってよ

お久しぶりです。

 

突然ではありますが、STM32マイコンの評価ボードの一種であるNUCLEO-F411REを秋月電子から購入しました。

akizukidenshi.com

 

もともとマイコンにも興味があったんですが、最近は特にマイコンプログラミングの必要性を感じずにはいられませんでした。

 

というのも、

  • オーディオ用DAコンバータの殆どは設定をI2CまたはSPIで行う
  • FPGAでアップサンプリングなどの信号処理を実装し、動作確認としてDAコンバータと接続したい
  • 確認用のDAコンバータの設定にI2CやSPIでの制御が必要になる

 

というのが理由です。


探すのに一苦労

で、探し始めるわけですがこれがなかなか難しかったです。

求める条件としては

  1. I2C/SPIが出せるもの
  2. デバッガが一体となっていること
  3. PCと接続してプログラムするもの

といったところです。

 

常々マイコンを使っているという方であればPICやAVRマイコンのICを単体で購入して・・・という手順を踏むのだと思いますが、何もしたことがないAUDIYからしたらデバッガやライタなどを別途揃えるというのも不安でした。

 

また、I2Cが出せるのかというのも、明確な記載がされているものが少なく(「そこが組み込みプログラマの腕の見せどころ」ということでしょうか?)、目星をつけても決定打に欠けるという印象です。

 

また、条件3の時点でラズベリーパイは無し。

 

・・・とまぁそんなこんなで調べて行き着いた候補が

の2つとなりました。


STM32を選んだ理由

最終的にArduinoかSTM32-NUCLEOかに決めるわけですが、

  1. ペリフェラルの数が最も一般的なArduino Unoより豊富
  2. Arduinoより安価
  3. 開発環境含めArduino互換
  4. Arduinoより実務より(?)

という理由からSTM32に決定しました。

最後の理由はAUDIYの偏見が入っていますが、Arduinoが実際の家電に入っているという例は聞いたことがありません(まぁマイコンIC自体はAVRですから・・・)。

 

「ひょっとしたら実務でも扱われているような開発環境で勉強しておけば今後役立つときが来るかもしれない」という淡い期待です。


注文

で、このSTM32-NUCLEOボードなんですが、

どのマイコンICが載っていても大きな価格差がありません。

 

akizukidenshi.com

 

秋月だと1500円~2000円で購入できます。

ということで、本来であれば秋月の取り扱いの中で最も高性能なNUCLEO-F446REが欲しかったですが、在庫切れとのことでその次に高性能なF411REを購入しました。

www.st.com


開封

シンプルです。本体と簡単な説明書きのみです。

f:id:AUDIY:20211212161757j:plain

 

USBケーブルすら入っていないというシンプルさ。

 

そして本体も想像より小さかったです。

f:id:AUDIY:20211212162102j:plain

Raspberry Piより長さが少し短くなり、若干幅広になった感じです。

 

ボード上にスリットがありますが、それより上の部分がデバッガ/ライタとなっています。

 

USBケーブルはUSB Mini-Bとなっているので要注意です。

AUDIYもまんまとやられました・・・


早速試してみる

STM32純正の開発環境(STM32CubeIDE)でさっそくプッシュスイッチに連動するLチカの実践動画があったので試してみました。

もともと学生までずっとプログラミングしていた人間だったのですが、組み込みソフトウェアというのは本当に初めてなもので、ソースコードの内容を未だ全ては理解できていませんが、なかなか新鮮で刺激がありました。

 

開発環境のSTM32CubeIDEですが、ECLIPSEベースのIDEらしく、「ECLIPSEベース」から想像していたのとは裏腹に軽快に動作していました。

 

また、ピンアサインをGUIで決定できるというのはとても直感的でわかりやすいと感じました。


Arduinoスケッチでも動作させてみる

Arduino IDEでもSTM32用の設定をすれば開発可能とのことで、正弦波をPWMで出力してLEDを点滅させてみました。

 

Arduino IDEの設定はこちらを参考にしました。

ameblo.jp

 

const int pwmpin = 10;
const double pi = 3.14159265;

void setup() {
  // put your setup code here, to run once:
 
}

void loop() {
  // put your main code here, to run repeatedly:
  int led_value = 0;
  for (int i = 0; i < 1000; i += 1 ) {
    led_value = (int)(255 * (sin(2*pi*(double)i/1000)/2 + 0.5));
    analogWrite(pwmpin, led_value);
    delay(1);
  }
}

 

Arduinoスケッチ、記法からして明らかにC言語派生ですが基本的なプログラムならライブラリのincludeが不要など、比較的優しい仕様になっていると感じます。

ただ、Arduino IDEからの書き込みは数分待つ必要があるので、早いところSTM32CubeIDEに慣れてしまったほうが良いかもしれません。


以上、STM32マイコンの購入報告と、「組み込みプログラミング界のHello World (?)」であるLチカを試してみたという報告でした。

 

STM32マイコンそのものはARMなので、知識さえ身につければかなり高度なプログラミングが楽しめるかと思います。

 

電子工作のかたわらマイコンプログラミングの技術も少しずつ身に付けて行きたいです。