h_nari @ 熊本市のブログ。電子工作、プログラミング、ゲーム、TV、 政治、インターネットなどに日々の思い付きを、 うだうだ~と書いていきたい。
このブログにはコメント欄を設けておりません。 記事への御意見、ご質問はtwitter @h_nari宛に お願い致します。


アーカイブ


アマゾン・ベストセラー

メタ情報
RSS
Login

NUCLEO-F439ZIを購入

マイコンの開発ボードNUCLEO-F439ZIを購入した。 digikeyで3,614円。 目的はUSBのHi-speed(480Mbps)で動く機器の開発。 stm32のチップは軒並み在庫が無いが 開発ボードならある。 ゆっくり開発して、できた頃には チップの在庫も復活していることを期待している。

届いた基板を見ると足が無い。 基板をそのまま置くとピンヘッダが、 より正確にはジャンパーピンが足になる。 そのまま使うわけにはいかないので3Dプリンタで台を製作した。 できたものに基板を固定しようとすると穴が部品に 近すぎてM3のネジは入らない。 穴径は3.2mmなのでM3用の穴に見えるが 仕方が無いのでM2のネジで固定。

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の高速書き込みと相まって 理想の高速書き込み環境ができた。

次の目標

次の目標は TinyUSBのexamplesにある msc(USBメモリ)を動かしたい。 TinyUSBはオープンソースのUSBライブラリで いろんな開発環境、Arduinoなどにも 使われている。 NUCLEO F439ZIも Supported Devicesから選んだ。 それがうまく行ったら Hi-speedでの動作を試したい。 そのための USB phyモジュールも1,210円で購入済。 それも上手く行ったら、LCDディスプレーモジュール等を接続し PC側から画像を送信して表示させるような実験をしたい。