Categories: ニュース

「Arduinoの先へ進むため」300MHzのArmチップをNanoサイズに自作

Arduinoのボードは、子どもでも扱えるように作られている。裏返せば、そこから先へ進もうとした途端に壁が立つ。BGAパッケージのチップを扱い、電源を自分で設計し、専用の開発環境に移らなければならない。ハードウェアは分かるがソフトウェアが苦手だというMagmabow氏にとって、Arduinoは自分の天井だった。その天井を破るため、300MHzで動くArmのCortex-M7をArduino Nanoと同じ寸法の基板に載せることにした。

選んだのはAtmelのSAM E70で、Arduino Unoと比べると32ビットで、プログラムメモリは60倍、RAMは200倍、動作は18倍速い。1枚目の基板には周辺回路も描き込んだが、チップが動くまで部品は載せない方針を取った。USBコネクターも電源管理も水晶発振器も付けず、内蔵の発振器で試す。回路図に描くだけなら基板の値段は変わらず、失敗したときの損を小さく抑えられる。

BGAで手間がかかるのは配線の逃がし方だ。チップの真下にビアを置くなら、パッドの中にビアを開けるか、ビアを極端に細くするかになり、どちらも基板代が4倍近くまで跳ね上がる。そこでMagmabow氏はフットプリントからピンを1本省き、空いた場所にビアを通した。グランドのパッドも、必要な分だけ縮めたり半分に切ったりして配線の通り道を作っている。ただし本人は、こうした逸脱は自分が何をしているか分かってからにしろ、と釘を刺す。

1枚目は書き込み機に認識されなかった。回路図を見直してVDD_OUTとVDD_COREをつなぐ必要に気づき、隣り合うコンデンサーのパッドを短絡させたが、それでも反応がない。フラックスを足して付け直しても変わらず、SAM E70はいったん失敗と結論づけている。なお動画の編集を終えたあとに再挑戦し、コードの書き込みには成功したと本人が末尾で補足している。

2枚目はSTM32に替えた。情報が多く実装しやすいと踏んだためだ。ここで詰めたのが電源で、USBの5Vをチップの求める3.3Vまで落とす必要がある。抵抗で分圧すると負荷をつないだ瞬間に電圧が落ち、上側の抵抗を調整して戻しても、マイコンの消費電流は一定ではないから、負荷が軽くなれば電圧が上がってチップを壊す。リニアレギュレーターは電流が増えるほど発熱し、効率も出力電流も落ちる。最終的に採ったのはバックコンバーターのICで、スイッチング回路も帰還の仕組みもインダクターも1つに収まっており、出力側のコンデンサーと分圧抵抗を足すだけで済んだ。

2枚目は動いた。Arduino IDEからSTM32用のIDEへ移り、ここからが本番だと本人は言う。基板の設計データはPrintablesにCC BY-SA 4.0で公開されており、出典を示せば商用利用もできる。Arduinoの次の一枚を自分で引きたい人には、動かなかった側の記録も含めて手がかりになるだろう。

関連情報

I put an ARM Processor on an Arduino Nano(YouTube)

STM32H747 Arduino Design Files(Printables)

FabScene編集部

FabScene編集部