マイコンの選び方

図

組み込みシステムにおけるマイコン選び

今回は、実際に組み込みシステム開発をしていく時に使用するマイコン(MCU)をどう選んでいけばいいのか、そのあたりを書いていこうと思います。まず大きな基準となる要件を選ぶ必要があります。

組み込みマイコンを使う場合、何をしようとしているのか、どう使おうとしているのか、どのくらいのコストで考えるのか?など、さまざまな選定基準が存在します。「機能」「価格」「サイズ」「用途」「運用年数」「環境性能」など、これらをすべて満足する製品があればいいのですが、それを探すだけでも大変な作業です。

また、マイコンは、8ビット、16ビット、32ビットなど計算する能力に比例して性能も向上しますが、価格も高めになります。このようなトレードオフを何度も何度も繰り返して、マイコンを選ぶことになります。組み込みシステムに熟練したエンジニアでさえ、最新情報の把握はもちろん、実際に選定する作業は頭をかかえるところです。

マイコンを選ぶための選定基準

膨大な数のマイコンがリリースされているので、すべてを網羅することはできませんが、今までワタクシが触ってきたマイコンやデータシートを見てきた中で、「面白いな〜」と思ったものを機能別にいくつかご紹介します。皆さんが選定するときのちょっとした参考にしてもらえればと思います。

CPUコア

Arm Cortex-M4

実績も多く、使いやすいし、無理が効きます!省電力品のラインアップも増えています。また、複数のコアを搭載した製品もあり、選択肢の幅が増えつつあります。

例:STM32L4(STマイクロエレクトロニクス)、ADuCM4050(アナログ・デバイセズ)、EFM32GG1(シリコンラボラトリーズ )などどうでしょう?

メモリ

RAM 128KB

このくらいあると、いろいろできます。用途が絞られていれば、もっと少なくてもいいです。ECC付きのものもあります。

フラッシュ 1MB

このくらいあると、いろいろできます。用途が絞られていれば、もっと少なくてもいいです。セクタごとに書き換えができるものが多く、上手に使えばブートローダーを入れたりユーザーデータの保存に使えます。

LCDでグラフィック表示を行うのであれば、もっとメモリを搭載する必要がありますので、外部メモリを使えるデバイスなんかが選定基準に入ると思います。

クロック

性能を求めなければ、8-16MHzあたりがあります。だいたい50MHz前後のラインアップが中心となり、上は200MHz近いものまであります。省電力なら、クロック低め。高性能なら、クロック高め。程度の理解でいいと思います。

ペリフェラル

GPIOの数が話題になることもあります。それだけ、外部の制御が多いシステムとも言えます。マイコン一つで済ませたい気持ちはよくわかります。2つになると基盤も大きくなり、実装コストが増えてしまいます。この辺りは、デバイスベンダーの経験値などが大きく影響するところです。また、機能面との関連性も高く、LCDコントローラを持っていないとダメだとか、Ethernetが付いていないとだめだとか、製品性能そのものに影響する機能もあります。ここは、じっくり検討するべきところです。

DMA対応や、省電力モードなど、運用面をどのくらいイメージできるかで、選択肢は絞り込めるのではないかと思います。ちなみに、センサー系ならI2CやSPIが多い方がよく、PCに繋いだりするのであれば、UARTは多数持っていると安心です。CPUがSleepしている間に、いろいろなことができるシステムもあります。その場合、より低消費電力のシステムも構築できます。

RTCも複数あると、時刻だけでなく、長い周期での動作も対応できます。省電力系のシステムでは、欠かせない機能です。モータなどは、タイマ系とGPIOなどを組み合わせることが多く、PWMなどの機能を搭載していると、なめらかな制御ができそうです。ADCを搭載しているものもあります。バッテリ監視やタッチパネルなどに使うケースもあります。

他にも、各社各様の機能を搭載しています。同じ機能でも、レジスタアクセス方法が異なるとか、CPUのバスの使い方が違うとか、見えにくい特徴もあります。この辺りはじっくりデータシートを見ましょう!

開発環境

どんなにコストが安くても、最終的に開発するのは「人」が手を動かすことには変わりありません。開発しにくければ、時間や学習コストもかかります。

マイコンベンダーが無料で提供している無償のツールもあれば、開発ツールベンダーが提供している有償のものもあります。有償のツールは、コードサイズを小さくすることができるので、マイコンのメモリラインアップを下げることができます。これはコストに直結するので、このトレードオフも吟味する価値は十分あります。

例:無料ツールを提供しているマイコンベンダー

NXP、STマイクロエレクトロニクス、シリコンラボラトリーズ、アナログ・デバイセズなど

例:有償ツール

IAR Systems Embedded Workbench、MDK-Arm

省電力性能

やはり長時間運用したいとか、なるべく電池交換はしたくないというメーカーさんは多く、この省電力性能も要件の一つと言えます。

価格

もちろん、価格はとても大事な要素だと思いますが、「エンジニアがこう作りたい!」というものを実現できるものでなければ、当然良い製品はできません。

また、作ったり動かしていくうちに、「必要な機能だと思っていたけど、不要だったかな」と思うこともよくあることです。その時に改めて見直し、コストダウンを図るという方法でもいいと思います。

品質および信頼性

多少のバグは想定しましょう。製品採用するまでに、十分評価を行いましょう。それに必要な時間を十分取ることも、大事です。

不具合などは、メーカに押し付けてもいいですが、知見があるなら共有し、一緒に問題を解決する姿勢を見せるのが、真のグローバル化だと思いませんか?

まとめ

ここまでざっくり書いてきましたが、いかがでしたでしょうか?冒頭にも書いた通り選定基準は用途によってさまざまだと思いますが、用途に関わらず絶対に押さえておくべきポイントは次の3つだと思います。「何をさせるために使うのか?」「必要な機能は何か?」「いくらくらいならできそうなのか?」