デバイス・ボード

マイコン(MCU)

CPU・メモリ・I/Oを1チップに集約した小型コンピュータ。組み込みの中核。

概要

マイコン(MCU: Microcontroller Unit)は、CPU・メモリ(RAM・フラッシュ)・入出力ペリフェラル(GPIO・UART・SPI・I2C・ADCなど)を1つのチップに統合した小型コンピュータです。「マイクロコントローラ」とも呼ばれ、電子機器の制御・処理の中核を担います。

パソコンやMPU(マイクロプロセッサ)が外付けメモリやOSを前提とするのに対し、マイコンはその1チップだけで完結した動作が可能です。消費電力が小さく、低コストで、リアルタイム制御に適した設計になっています。センサー・モーター制御・通信処理など、あらゆる組み込み機器の頭脳として使われています。

歴史・背景

マイコンの起源は1971年にIntelが発売した「4004」に遡ります。これは世界初の商用マイクロプロセッサで、4ビットのCPUのみの製品でした。1974年にはIntelが8ビットの「8080」を、Motorolaが「6800」を発売。1970年代後半にはテキサス・インスツルメンツとIntelが周辺機能を統合したマイクロコントローラを投入しました。

日本では1970年代後半から組み込み用途での採用が広がり、家電・工業機器に組み込まれるようになりました。1990年代にはルネサス(旧日立・旧三菱電機)のH8シリーズ、NECのV850シリーズなど国産マイコンが産業機器で広く普及。2000年代以降はARMアーキテクチャを採用したARM Cortex-Mシリーズが主流となり、STM32・nRF52・NXP KinetisなどがARM Cortex-Mを採用しています。

近年はIoTの普及に伴い、ESP32のようなWi-Fi・Bluetooth内蔵マイコンが急成長。またRISC-Vベースのオープンソースマイコンも登場し、選択肢が増えています。

技術仕様

CPUアーキテクチャ

現代のマイコンで主流のアーキテクチャは:

アーキテクチャ代表製品特徴
ARM Cortex-M0/M0+STM32F0, nRF51超低消費電力・小面積
ARM Cortex-M3STM32F1, LPC1768バランス型、Thumb-2命令
ARM Cortex-M4STM32F4, nRF52DSP・FPU搭載
ARM Cortex-M7STM32H7高性能・キャッシュ付き
ARM Cortex-M33STM32L5, nRF9160セキュリティ強化(TrustZone)
Xtensa LX7ESP32-S3AI命令拡張
RISC-VESP32-C3, GD32VF103オープンISA

メモリ構成

マイコンのメモリは大きく3種類:

  • フラッシュメモリ: プログラム格納用不揮発メモリ。マイコンによって16KB〜数MB。書き換え回数は通常10,000〜100,000回。
  • SRAM: 実行時の変数・スタック・ヒープ格納。高速だが電源断で消える揮発メモリ。2KB〜1MB程度。
  • EEPROM: 設定値など少量の不揮発保存。フラッシュの一部を代用するケースも多い。

クロック・消費電力

動作周波数は8MHz〜数百MHzまで幅広い。消費電流の目安:

  • スリープ(Cortex-M0+): 1µA以下
  • 通常動作(64MHz、3.3V): 5〜20mA程度
  • 通常動作(240MHz ESP32、Wi-Fi送信時): 200〜300mA

ペリフェラル(周辺機能)

代表的な内蔵ペリフェラル:

・GPIO          : 汎用入出力ピン(デジタル入出力)
・UART / USART  : シリアル通信(非同期)
・SPI           : 同期式シリアル通信(高速)
・I2C           : 2線式バス(多点接続)
・ADC           : アナログ→デジタル変換(8〜16bit)
・DAC           : デジタル→アナログ変換
・PWM           : パルス幅変調(モーター・LED制御)
・タイマー      : 計時・割り込み生成
・DMA           : CPUを介さないメモリ転送
・USB           : USBホスト/デバイス
・CAN           : 車載/産業用バス
・Ethernet MAC  : 有線LAN(外付けPHYと組み合わせ)

動作原理

マイコンは以下の流れで動作します:

  1. リセット: 電源投入またはリセット信号でリセットベクタから実行開始
  2. 初期化: スタックポインタ・クロック・ペリフェラルの初期設定
  3. メインループ: アプリケーションコードの実行
  4. 割り込み処理: 外部イベント・タイマー割り込みでISRへ分岐
  5. スリープ: 低消費電力のスリープモードへ移行し、割り込みで復帰

フラッシュからコードをフェッチ→デコード→実行のパイプラインが動作し、DMAを使うことでCPUを止めずにメモリ転送が可能です。

// STM32 HALを使ったGPIO制御の例
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);   // PB0をHighに
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);               // PC13をトグル
HAL_Delay(500);                                        // 500ms待機

用途・ユースケース

マイコンは幅広い用途で使われます:

  • 家電製品: 洗濯機・電子レンジ・エアコンなどの制御基板
  • 産業機器: センサー計測・モーター制御・PLC(PLCの内部もマイコン)
  • 自動車: ECU(エンジン制御ユニット)・各種車載コントローラ
  • 医療機器: 血圧計・血糖値計・医療ポンプ制御
  • IoT機器: センサーノード・スマートホーム機器
  • ウェアラブル: スマートウォッチ・フィットネストラッカー

実装・開発のポイント

選定の基準

マイコン選定では以下を考慮します:

  1. 処理能力: 計算量・必要な同時タスク数に合わせてコアとクロックを選ぶ
  2. メモリ: フラッシュはプログラムサイズ+OTAバッファ、RAMは変数・スタック・ヒープの合計
  3. ペリフェラル: 必要なUART数・SPI数・ADCチャンネル数
  4. 消費電力: 電池駆動なら動作時・スリープ時の電流を確認
  5. サプライチェーン: 長期供給・調達価格・代替品の有無
  6. 開発環境: IDE・デバッガ・サポート品質

開発フロー

1. 評価ボード(EVK)で機能検証
2. プロトタイプ基板でペリフェラル検証
3. [ファームウェア](/embedded/glossary/firmware/)開発(C/C++ + [RTOS](/embedded/glossary/rtos/)または[ベアメタル](/embedded/glossary/bare-metal/))
4. [インサーキットデバッガ](/embedded/glossary/in-circuit-debugger/)(JTAG/SWD)でデバッグ
5. 量産基板でのファーム書き込み・検査

よくある落とし穴

  • スタックオーバーフロー: 再帰処理や大きなローカル変数でRAMを使い過ぎない
  • フラッシュ書き込み寿命: 頻繁な書き込みは寿命を縮める。ウェアレベリングを考慮
  • クロック設定ミス: ペリフェラルへのクロック供給を忘れると動作しない
  • 割り込みの優先度: RTOS使用時は割り込み優先度をRTOSの範囲内に設定

他技術との比較

マイコン vs MPU

項目マイコンMPU
内蔵メモリあり(フラッシュ・RAM内蔵)なし(外付け必須)
OSベアメタル or RTOS通常Linux等を使用
消費電力低い(µA〜mAオーダー)高め(数百mA〜W)
起動時間速い(ミリ秒〜)遅め(数秒〜)
単価安い(数十円〜)高め(数百円〜)

マイコン vs FPGA

FPGAは回路そのものを書き換えられるため、超高速・並列処理に優れますが、開発難易度・コストが高い。制御ロジックが明確な用途はマイコン、超高速処理や信号処理が必要な用途はFPGAという使い分けが一般的です。

関連用語

参考リンク