組み込み

【組み込み】マイコン(MCU/MPU)選定方法

マイコンの選定方法について書いてみたいと思います。

私が以前、新しい製品の開発時にどういうことを考えてMPUを選定したのか、ということを思い出しながら経験をまとめました。
最後に選定したのは2~3年前ですので、少し情報が古い可能性もありますが、大筋は変わっていないかと思います。
また、基本的には、量産用の製品を開発することが前提になる記事です。

なお、マイコン(MCU)、MPU、CPUなどいろいろな言い方があると思いますが、この記事内ではマイコンで表現してます。一応違いを調べてみると、

  • マイコン(MCU)とMPUには明確な区別はないが、性能的にマイコン<MPU
  • CPUは演算処理装置だけをさし、マイコンやMPUはCPU・メモリ・IOなどの周辺機器を1つにまとめたもの
  • とはいえ、大分類ではマイコンもMPUもCPUの1種

といった感じのようです。
ただし、この記事では、CPU2番目の意味の演算処理装置のことを指すとしてください。

また、この記事はソフト開発者としての目線で書かれており、消費電力や端子の形、マイコンのサイズなどには触れません。

それでは見ていきましょう。

CPUコアの決定

まず最初に、CPUコアの種類については決めた方が良いです。

現在、組み込み用CPUで最も普及しているのはARMです。ARMはアーキテクチャのみを提供しており、他のマイコンメーカーがARMのCPUコアを使用してマイコンを製造しているという形になっています。

ほかにも独自のCPUコアを開発しているメーカーもあります。ルネサスエレクトロニクスなどが有名ですが、最近はルネサスもARMのCPUコアを使用したマイコンの発売を開始しています。

なぜ最初にCPUコアを決定しておいた方が良いのかというと、CPUコアが異なると別のコンパイラが必要になるからです。
すでにARMのCPUのマイコンを使用したことがある場合、ARMのコンパイラを購入済みのはずなので、次回もARMのCPUを選定した方が良いでしょう。
まだマイコンを使用したことがなかったとしても、今後複数のマイコンを使用していくことを考えると、同じコンパイラが選べるように最初のCPUを決める必要があります。

特別ARMを推奨しているわけではありませんが、選べるマイコンの多さを考えるとARMを選んでおくのが妥当かなという気がします。

ARMを選んだ場合、マイコンであればCortex-Mシリーズ、MPUであればCortex-AまたはCortex-Rシリーズとなります。
性能がCortex-A>Cortex-R>Cortex-Mとなっていて、この辺りは性能と消費電力などとのトレードオフになっているので、適切なレベルのシリーズを選ぶのが良いと思います。
私の場合、そこまで性能が必要なものではなかったので、Cortex-Mシリーズでした。

最後にCPUのbit数を確認しておきましょう。

マイコンレベルであれば、8bit、16bit、32bitのいずれかになると思いますが、選べるのであれば32bit CPUを選びましょう。

このbit数は1回の処理演算できるサイズを指しますが、32bitだとfloatやlongが一度に扱えるようになりますし、浮動小数の演算器がついていることもあり、処理速度が速くなります。

メモリ量の決定

次に必要なメモリの量についてはある程度見積もっておきましょう。

ここでいうメモリの量というのは、Flash ROMとRAMのサイズのことです。ここで具体的な見積もり方法を説明できるわけではないのですが、以前の開発と今回の開発比較してどれぐらい必要なのかを見積もるしかないかなと思います。

メモリのサイズを小さくすれば当然安くなるのですが、メモリ不足が発生するとかなりつらいです。(経験あり)
あまりメモリのサイズをケチったりせず、50%くらい余裕を持てるようなサイズを選びたいです。

ペリフェラルの見積もり

ペリフェラルとは、IO、シリアル通信、タイマなどの周辺機器のことです。

これから開発するものに必要な周辺機器の数を見積もり、不足しないようにする必要があります。

シリアル通信

マイコンで使用するシリアル通信で代表的なものは、UART、SPI、I2Cなどがあります。これらの使用できる数はマイコンごとに決まっていますので、不足しないように見積もる必要があります。

使用する例として、

  • UARTをRS485などに変換して外部と通信する
  • EEPROMなどの基板上のデバイスとSPIやI2C通信をする

といった形です。

SPIやI2Cは1つのペリフェラルで複数のデバイスをつなげることができます。SPIはCS(チップセレクト)を有効にしたものだけ通信を受け取るので、CSを制御することによって送信先を選ぶことができますし、I2Cはアドレスがあるので、送信先のデバイスをアドレスで指定することができます。

しかし、これは絶対ではないのですが、できるだけ

1デバイス1ペリフェラルにする

ことをお勧めします。

その理由は、

  • 複数のデバイスに同時にアクセスしないようにソフトで制御する必要がある
  • SPIの場合、デバイスによって位相が違う可能性があるので、アクセスのたびに位相の切り替えが必要になる可能性がある。
  • これらの理由により、ソフトウェアの不具合が発生するリスクが高まる

といったものです。

たいていの場合はきちんと設計すれば問題ないですが、とらなくてもいいリスクであればできるだけ回避した方が良いでしょう。

コストも考えないといけないので、安くするためにシリアル通信の数を削りたいと言われる可能性もありますが、開発工数増加の可能性や開発遅延のリスクを伝えてできるだけ複数デバイスがつながらないようにしたいです。

タイマ

タイマの数も十分数確保したいです。

ペリフェラルとして外部出力するタイマの用途としては、PWMのような波形を出力するものです。まずはこういったものの必要数を把握する必要があります。

しかし、タイマの用途はそれだけではなく、ソフトウェア内部で正確な時間を測るための重要なツールです。

例えばModbus通信という通信プロトコルを実装しようとしたとき、通信完了を判定するために1.5charや3.5charの時間を測る必要があります。こういった内部の時間測定や正確な時間のWaitを入れたいときなどにタイマがあれば非常に便利です。

最初は必要に思っていなかったけど、設計を始めたら、「タイマが余っていたらここは簡単に実装できたのに・・・」みたいなことがあったりするので、タイマも少し余裕があるぐらいがちょうどいいです。

とはいえ、最近のマイコンはタイマが結構多いイメージなので、そこまで心配しなくてもよいかもしれません。

クロック

正確なクロックを使用するならば、水晶振動子などで外部クロックを入力する必要がありますが、マイコンによってクロックの入力できる幅が決まっています。

クロックの周波数は処理速度に直結するので、必要な処理速度を見積もってそれが入力できることを確認しておく必要があります。

とはいっても、最近のマイコンはPLLで逓倍することができるので、たいていかなりの速度まで上げることができます。

ここもノイズや消費電力など、回路設計と大きくかかわってくるところでもありますので、相談しながら決定する必要があります。

ピン数

マイコンから出ているピンの数も確認しておきましょう。

ペリフェラルで外部出力する端子だけでなく、回路のOn/Offを制御するGPIOの数も考えておく必要があります。

とはいっても、この辺りはどちらかというと回路設計者寄りのものになってきますので、回路設計者とできる機能/できない機能を相談しながら決定していくことになります。

その他

その他にも必要なペリフェラルがあれば確認しておく必要があります。

例えば、マイコンによってはAD変換器やDA変換器がついているものもあります。

また、あれば便利なものとして、シリアル通信にFIFOがついているかどうかや、シリアル通信で大容量の送受信をしたいときにDMA転送があるかどうかなども見ておくとよいと思います。

メーカーの選定

ある程度具体的なスペックがわかってきたら、実際にメーカーのホームページを見たり、メーカーのカタログを見たりして、目的に合うマイコンを探します。

具体的なメーカーとしては、有名なところを一部だけですが、

  • NXP(旧Freescale)
  • ルネサス
  • テキサスインスツルメンツ
  • Infineon(旧Cypress、旧Spansion、旧富士通)

といったところがあげられます。

マイコンの最終決定

ここまでで、ある程度候補に挙がるマイコンが絞られてきたと思います。

最終的にどうやって決定するかというと

  • コスト
  • 売れ筋のもの
  • 新しいもの

といった観点で見ていくことになります。

コストはわかると思いますが、売れ筋のもの、新しいものというのは、できるだけ販売中止になるまでの期間が長いものを選ぶ必要がある、ということです。
販売を開始してすぐに販売停止になるようなマイコンは選んではいけない、ということですね。
ある程度の保証があることもありますが、できるだけ考慮するようにしましょう。
こういった情報はメーカーの担当者に問い合わせて教えてもらうのが良いです。

まとめ

以上、私の経験をもとにしたマイコンの選定方法についてみてきました。

もしかすると企業によって事情が違ったりすることもあるかもしれませんが、おおよそのことは説明できたのかなと思います。

これから初めてマイコンの選定をするよ、という人の参考になればうれしいです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA