2016.09.26
マイクロコントローラーを選ぶときに考えるべき12のスペック
ほとんどの電子製品には、頭脳となるマイクロコントローラーかマイクロプロセッサーが搭載されている。高速処理を必要とする高度な製品(スマホやタブレットなど)になると、マイクロプロセッサーが必須となる。その他はマイクロコントローラーがベストソリューションだ。例として、Arduinoはマイクロコントローラーをベースにしていて、Raspberry Piはマイクロプロセッサーをベースにしている。
たいていの電子工作の設計にはマイクロコントローラーが適しているはずだ。一般にマイクロコントローラーは、ひとつのICにまとめられたコンピューターと考えられる。それにはプロセッサー、メモリー、そして周辺機器が入っている。マイクロコントローラーにもいろいろある。選択する際には、その数に圧倒されることだろう。
Googleで検索すれば、だいたい正しい道に進むことができるだろうが、私がお勧めするのは、DigikeyやArrowやMouserといった大手の販売店から購入することだ。それにより、よく使われるマイクロコンピューターに絞り込むことができる。また、価格の比較もしやすい。
プロジェクトの最初に、考えているシステムのブロックダイアグラムを描くといい。問題は、マイクロコントローラーにどんなものを接続するかだ。
システムのブロックダイアグラムは、初期の計画ではとても重要な役割を果たす。それにより、入力と出力(I/O)ピンがいくつ必要かがわかる。また、シリアル接続ポートが必要かどうかもわかる。
マイクロコントローラーには、さまざまな周辺機器が含まれている。ここに、現在のマイクロコントローラーの機能を列挙しよう。
メモリー:現在のマイクロコントローラーのメモリーには、たいていFLASHとRAMが搭載されている。FLASHは非揮発性メモリーで、プログラムの格納に使われる。RAMは揮発性メモリーで、一時的な格納に使用される。一部には、永久保存が可能なEEPROMを搭載したマイクロコントローラーもある。
汎用入出力(GPIO):これは論理レベルのピンで、入力にも出力にも使える。シンクまたはソースになり、最大十ミリアンペアの電流が扱える。また、オープンドレインまたはプッシュプルに設定ができる。
アナログ入力:ほとんどのマイクロコントローラーは、アナログ電圧を正確に計ることができる。アナログ信号はマイクロコントローラーによって、アナログ/デジタル・コンバーダー(ADC)サンプリングされる。
アナログ出力:マイクロコントローラーは、デジタル/アナログ・コンバーター(DAC)を使ってアナログ信号を、またはパルス幅変調を生成できる。DACを搭載しないマイクロコントローラーもあるが、その場合でもPWM機能はある。
インシステム・プログラミング(ISP):ISPは、マイクロコントローラーがアプリケーション回路に組み込まれている際に、いちいち取り出さなくてもプログラムができる機能だ。もっとも一般的なISPプロトコルには、JTAGとSWDがある。
無線:製品に無線機能が必要なときは、Bluetooth、WiFi、ZigBeeといった無線規格に対応したマイクロコントローラーがある。
シリアル接続
すべてのマイクロコントローラーは、何らかのシリアル接続機能を持っている。一般のマイクロコントローラーが対応するシリアル通信プロトコルは以下のとおりだ。
汎用非同期送受信回路(UART):スタートビットからオプションのパリティービットまたは2つのストップビットの間の、通常は7から8ビットのデジタルの言葉を通信する。UARTは一般に、RS-232やRS-485といった他の規格と共に使われる。
UARTはもっとも古いタイプのシリアル通信だ。UARTは非同期プロトコルだが、それは、クロック信号がないということを意味する。同期版のUARTであるUSARTに対応したマイクロコントローラーが多い。
シリアル・ペリフェラル・インターフェイス(SPI):SPIは、マイクロコントローラーと周辺機器との間のように、短距離のシリアル通信に使われる。SPIは同期プロトコルで、タイミング用のクロック信号が含まれる。SPIは、データイン、データアウト、クロック、チップ選択信号の4本の線で構成される。
インター・インテグレーテッド・サーキット(I2C):I2Cは、ボード上のマイクロコントローラーと他のチップとの間で通信を行う2線方式のシリアルバスだ。SPIと同様、I2Cも同期プロトコルだ。ただし、SPIと異なり、I2Cは1本の線でデータのインとアウトを賄う。また、チップ選択信号の代わりに周辺機器ごとに一意のアドレスを使用する。線が2本だけで済むという利点がある反面、SPIよりも速度が遅いという弱点がある。
ユニバーサル・シリアル・バス(USB):誰もが知っている標準的なシリアルバスだ。USBはもっとも高速なシリアル通信であり、大量のデータを送受信する周辺機器との通信に用いられる。
コントローラー・エリア・ネットワーク(CAN):とくに自動車で使用するために開発されたシリアル通信の規格だ。
有名なマイクロコントローラー・コア
マイクロコントローラーのコアには、悪評のあるものや、特記すべきものがある。ここにもっとも一般的な4つのコアを紹介しよう。
ARM Cortex-M
32ビットのARM Cortex Mシリーズは現在もっとも広く使われているマイクロコントローラーコアのひとつだ。ARMは実際にはマイクロコントローラーを作ったり売ったりはしていない。そのアーキテクチャーをチップメーカーにライセンスしているのだ。
Cortex-Mマイクロコントローラーを提供しているメーカーには、ST Microelectronics、Freescale Semiconductor、Silicon Labs、Texas Instruments、Atmelがある。
Cortex Mシリーズのマイクロコントローラーは、製品化を目指したプロジェクトで私がよく使うものだ。安いし、パワフルだし、汎用性が高い。
8051
8ビットの8051マイクロコントローラーは、1980年にインテルで開発された。現在でも使われているマイクロコントローラーの中では最古のものだ。現在は、その改良型が販売されていて、少なくとも8つの半導体メーカーから発売されている。たとえば、CSR(CSR101x)のBluetooth Low-Energyチップには8051コアが使われている。
PIC
PICはMicrochipのマイクロコントローラーファミリーだ。大変に人気が高く、非常に多くの種類がある。ピンの数、パッケージの形、周辺機器など、ほぼ無限の組み合わせがある。
Atmel AVR
AtmelのAVRは、ほとんどのバージョンのArduinoの頭脳として有名だ。なので、ArduinoからAtmel AVRマイクロコントローラーへの移行は簡単にできる。しかし、同じかそれ以上の性能のコアで、もっと安価なものもある。
結論
マイクロコントローラーを選んだら、次のステップはそれを使った回路を設計し、すべての周辺機器を接続する作業だ。次の記事ではそのことについて書こう。
電子製品の設計について詳しく知りたい方は、私の2部構成のガイド How to Develop and Prototype a New Electronic Productを見てほしい。
[原文]