鳥なき里のマイコン屋(56) Nucleo F401RE追加

JosephHalfmoon

前回はPSoCのボード追加の件でしたが、今回はNucleoのボード追加です。只で貰ったNucleo F072RBがなかなか使いでが良かった上、いろいろな開発環境を試せそうだったので、もう一枚評価ボードを追加いたしました。

Nucleo F401RE

です。見かけはまったく変わり映えしないボードです。ラベルを見ないとどっちがどっちだかわかりませぬ。

まずは、新/旧二枚のボードの写真から。

 

中央付近に張ってあるシールを除けば、ほとんど違いが分かりません。よくみると、搭載されている部品が微妙に違ったり、細かいシルク印刷が一部違ったりしますが、基本は「同一のボード」のようです。つまり、搭載されているマイコンチップも端子配置にほぼ互換性があるということです。しかし、マイコン自体のスペックはかなり異なります。以前から使っていた

Nucleo-F072RB

48MHz動作のArm Cortex-M0 コアです。Flashメモリは128KB、SRAMは16KBです。ひと昔前のマイコンとしては充実したメモリ量じゃないかと思いますが、ベアメタル的な使い方でスタンドアロンアプリならともかく、今どきの「IoT」応用を考えると、メモリ的には足りない感じです。また、CPUもちょっと非力かも。これに対して今回購入させてもらった

Nucleo-F401RE

は、84MHz動作のArm Cortex-M4コアです。FPU付なので浮動小数点演算を気兼ねなく使えます。コアの動作周波数が高いので、どうしても遅くなるFlashメモリへのアクセスが間に合うんかいな、という心配があります。それについては、Adaptive real-time accelerator(ART)とよぶ一種のキャッシュのようなものが搭載されており、速度のギャップを埋めています。Flashは512KB、SRAMは96KBです。非力なマイコンに慣れていたら使いきれないメモリ量ですが、「IoT」応用だと、末端の先っぽならなんとかなるくらいでしょうか。まあ、F072RBに比べると、大幅に強化されたチップが手に入ったので万々歳。

それに対して、周辺回路の基本構成はよく似ています。ボードの写真を見たらわかるとおり、どちらのボードにも

Arduino Uno互換

のピンソケットが搭載されています。後で、現在ブレッドボードで仮組みしている周辺回路を

Arduino型のシールド

に置き換えようとしているので、「うまく作れば」どちらでも動くようにできる筈。Arduino Unoピンソケットの外側には、

ST morpho

とよぶピンヘッダが並んでいます。こちらの方ではほぼ全ての端子を外に引き出せます。上下にピンヘッダが出ているので、ST morphoを使う場合は、下のボードに突き刺す形の方が良いように思われます。本家のArduinoもそうですが、上側にはいろいろ高さのある部品が飛び出しているので上を「シールド」で覆うときには干渉が心配。その点、下側は綺麗に平らなので、心配は少ない。

それじゃ、片方のボード用に作った周辺回路とそれを動かすソフト、直ぐに載せ替えできるんじゃないか、ということでやってみました。MbedのWebコンパイラの場合、右方のところに、ターゲットボードの切り替えスイッチがあるのでした。F072RBならこんな感じ。

この状態だと、Nucleo-F072RB用にオブジェクト生成します。これを切り替えるには、Nucleo-F072RBと表示されている部分をクリックし、登場したダイアログでMbed対応ターゲットボードの一覧からNucleo-401REを選択するだけでOK。すると

 

ターゲットが切り替えられます。そこで、ソースなどはまったく変更せず、コンパイル。もともとMbedは具体的なハードウエア覆って抽象化しているので、こういうことができるのだと思います。なんの問題もなく、F401RE用のオブジェクトができました。そこで、F072RBにつなげてあったブレッドボードをF401REに繋ぎ変えます。今回のは以前つくったI2Cバスのものなので、グラウンド、電源とI2Cクロック、データ合計4本を繋ぎ変えるだけ。

オブジェクトを書き込みました。動きました。

書いていると結構時間がかかりましたが、この作業、3分もかかっていません。お手軽。ただし、端子をよく見ていくと、搭載している周辺回路の構成が微妙に違い、中には存在しないペリフェラルもあるので注意が必要です。しかし、Arduino Uno互換のヘッダ部分の互換性はかなり高いように見えます。端子については、先ほどのターゲットボタンを押して現れるウインドウ内で確認ができます。こんな感じ。

 

F072RBの端子説明の図。下の、401REの端子の説明図と比べると、かなり互換性高いことが分かります。

 

表記だけの問題ですが、書き出し位置の左右が違うので違うように見える端子も、よく見ると同じものが多いです。唯一、F072RBが勝っているなと思ったのは、

F072RBにはDAコンバータが載っている

というところでしょうか。上位機種のF401REには、ADは載っていますが、DAの搭載はありません。また、今回しげしげとボード回路を眺めていて分かったのは、

USB経由のUARTとして、物理的にはUSART2(端子ていうとPA2とPA3)がつながっていた

です。仮想COMポートにデバッグ用の出力を垂れ流すのにお世話になっているUARTです。UARTに何かつなげるときは、2は使えないので他のものを選ぶ必要があります。両方のボード共通で、ということになると1ですかね。この辺の端子のアサインになると2つの機種で微妙に違います。蛇足ですが、しばらくPSoCやってあれに慣れていたので、デジタルピンなどどの端子にでも出せるような気持ちになっていました。

いつか選択肢があるので、うまく選んでね

というのが、このSTのチップを含む、ほとんどのマイコンの流儀です。

鳥なき里のマイコン屋(55) PSoC 5LP Prototyping Kit へ戻る

鳥なき里のマイコン屋(57) Arduinoシールドでパズル? へ進む