STM32 Nucleo Board は速いと言われていて,Arduino IDEでも使えるとの事なのでデジタル出力を試してみました。

環境を整備してLチカまできたところです。




ボードは以前に買ったまましまっておいた(^^;;;
STM32 Nucleo Board STM32F-446REを使用しています。下図はその概要です。


(秋月電子製品欄概要およびボード添付書から一部転載)



1.Arduino IDEのボードマネージャ整備のメモ

・STM32をArduino IDE で使う詳しい解説は以下のgithubにあります。
 特に「Getting Started」は親切です(^^)。

 STM32duino : https://github.com/stm32duino
 Getting Started : https://github.com/stm32duino/wiki/wiki/Getting-Started


・STM32用のボードマネージャーのURL
 ボードマネージャーの追加は恐ろしく時間がかかり,PCがフリーズしたのではないかと思うほどですが,,micro:bitV2の時ほどではないですかね(^^;;;;;

 https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json


・日本語版 Arduino STM32
 日本語版リファレンスやライブラリの紹介があります。便利です。
https://scrapbox.io/ArduinoSTM32/


・ボードの設定が終わったところのデフォルト
  "Mass Storage"として認識されるようですね。




・ボード設定の注意点
 ボードはまず"Nucleo-64"を選び,その後”Board part number"で”Nucleo F446RE"を選びます。

私はいいかげんに解説を見ていて,"Generic STM32F4"を選んでしまって,何十分かうまくいかずに悩みました(^^;;;;;;






2.デジタル出力を試す
 速い速いと言われているSTM32なのでArduino 言語でどのくらいのものなのかデジタル出力のパルスを試してみました。

1) digitalWrite()のパルス

プログラムはLチカのポーズがないだけです(^^;;;;;;;




パルス波形です。
さすがに速く,普通のdigitalWrite()で200ns程度のパルスが出ていました。



超高速を求めないならポートを直接コントロールしなくても大概のものは大丈夫そうですね。



2) digitalWriteFast()のパルス
 STM32ではデジタル出力がさらに速くなる関数があるので使ってみました。

実際にやってみると,あまりにパルスが短かく私のロジアナではくずれた波形になりました。そのためプログラムでは連続した4パルスで1パルスとしています。




4パルスで1パルスを作った波形が約100nsなので,実際の1パルスは25nsぐらいのが出ているようです。周辺機器に気を使わないといけないパルスですね(^^;;。




digitalWriteFast()の注意点はピンの指定がピン番号だという事です。
上のプログラムだと"PA5"はピンの名前,"PA_5"がピン番号になります。




以上,なかなかのスピードでしたので,以前作ったポートコントロールを使っていないプログラムで試してみました。

ESP32用に作った128X32ドットフルカラーLEDを動かすプログラムで,1画面の描画速度のチェックです。




約3.8msで1画面の描画ができています。このSTM32はLEDマトリックス用として使いたいですね。

そういえば,何年か前に「タモリ倶楽部」で見た「LED鉄」さんのパネルも裏面に白いボードがあったのでSTM32系を使われているのではと思いました。



なお,このSTM32にArduino IDEからプログラムをダウンロードする時にはコンパイルにとても時間がかかります。

ESP32もコンパイルに時間がかかりPCが不調?と思わせるぐらいですが,それを上回る待ち時間です。

ま,動き出すと速いという事で,,まずはお茶を濁しておきましょう(^^;;;;;;;;;;;