2022年12月5日月曜日
マイコンの開発ボードNUCLEO-F439ZIを購入した。
digikeyで3,614円。
目的はUSBのHi-speed(480Mbps)で動く機器の開発。
stm32のチップは軒並み在庫が無いが
開発ボードならある。
ゆっくり開発して、できた頃には
チップの在庫も復活していることを期待している。
届いた基板を見ると足が無い。
基板をそのまま置くとピンヘッダが、
より正確にはジャンパーピンが足になる。
そのまま使うわけにはいかないので3Dプリンタで台を製作した。
できたものに基板を固定しようとすると穴が部品に
近すぎてM3のネジは入らない。
穴径は3.2mmなのでM3用の穴に見えるが
仕方が無いのでM2のネジで固定。
 |
 |
 |
NUCLEO基板裏。ピンヘッダやらジャンパーピンやらが飛び出ている |
そのまま置くとジャンパーピンで接地 |
3Dプリンタで作成した台。ネオジム磁石付き。スペーサはM2用 |
 |
 |
 |
ST-Linkの眩しいLED。作業に差し障りがある。 |
設計したLEDキャップ、断面。プリント用に上下逆。 |
キャップ装着状態。点灯はわかる。眩しくない。 |
USBケーブルを接続すると基板上のいくつかのLEDが点灯する。
明るい。特にST-Link部のLED(LD4)が眩しすぎる。
電気絶縁用の白いビニールテープを貼るが
1枚では眩しい。4枚ぐらい重ねると許せるぐらいの明るさになった。
しかし、すぐに剥がれそうなので3Dプリンタでキャップを作成。
光透過用にΦ1の穴を開ける。
何回か試して満足できるものになった。
開発環境
NUCLEO-F439ZIの開発環境を探すと
基板が新しいのか、あまりみつからないが
NUCLEO-F429ZIであれば見つかる。
Arduinoも
stm32duinoで
サポートされており、Serial.println()でシリアルポートに
メッセージを出力するプログラムは、すぐに動いた。
ちなみにNUCLEO-F439ZIのUSART3はST-Link部経由で
PCに接続されている。便利。
私の場合、以前使っていたstm32用の自作ライブラリが
たくさんあるので、こちらを使うことにした。
ちなみにコンパイラは
Arm GNU Toolchainを使用。
STM32F439固有のレジスタ定義やcrt(c runtime)のアセンブラ等は
STM32CubeMXが生成してくれる。
クロック(pll)設定部のコードも生成してくれるのだが
私の嫌いなHAL(Hardware Abstract Library)を使用している。
自前のライブラリで、そのまま行けると思ったが、ちょっとハマった。
NUCLEO-F439ZIではST-Link部から8MHzのクロックがHSEの端子から
供給されるが、このためのHSEの設定を見落としていて
PLLRDYにならなかった。
基板にはGPIOで駆動できるLEDが3個(LD1,LD2,LD3)ある。
このレベルのデバッグ時に役に立つ。
クロックの設定ができるとシリアル出力が使えるようになる。
割り込み周りも以前のライブラリが修正無しで使用でき、
シリアルポートからコマンドも動かすことができるようになった。
マイコンボードを使うたびに思うが、開発環境が整い、
慣れた手順でプログラム開発ができるようになった時の征服感というか、
達成感というか、お前を下僕にしてやったぜ感がすごい。
ビルド速度は
arduinoよりもplatformioの方が遥かに速いが
Makefile単体は更に速い。
ST-Linkの高速書き込みと相まって
理想の高速書き込み環境ができた。
次の目標
 |
Hi-speed USB用phyモジュール |
次の目標は
TinyUSBのexamplesにある
msc(USBメモリ)を動かしたい。
TinyUSBはオープンソースのUSBライブラリで
いろんな開発環境、Arduinoなどにも
使われている。
NUCLEO F439ZIも
Supported Devicesから選んだ。
それがうまく行ったら Hi-speedでの動作を試したい。
そのための
USB phyモジュールも1,210円で購入済。
それも上手く行ったら、LCDディスプレーモジュール等を接続し
PC側から画像を送信して表示させるような実験をしたい。