ウェイクアップ
ウェイクアップとは、低消費電力状態(sleep/standby/stopなど)にあるマイクロコントローラやSoC、周辺システムが、所定のイベントを契機として動作可能状態(run/active)へ遷移する現象・設計機構である。省電力化の要諦は「どの電源ドメインを止め、何を残すか」を明確にし、必要時に最小遅延・最小電力でウェイクアップさせる点にある。ハードウェア(クロック源・電源ドメイン・割り込み回路)とソフトウェア(ISR・ブートローダ・RTOSアイドル管理)の協調設計が不可欠である。
基本概念と低電力モードの位置づけ
低電力モードは、主発振子停止・PLL停止・SRAM保持の有無・I/O保持などの組合せで層別される。一般に「sleep(浅い)→stop/standby(深い)」ほど消費は小さいがウェイクアップ遅延は増える。設計者はユースケース別の「平均電力=動作電力×稼働率+待機電力×待機率」を評価し、遅延許容時間(latency budget)内で最小電力となるモードを選ぶ。
トリガ(イベント)— 外部要因
外部トリガには、GPIOエッジ、外部割り込み(EXTI)、通信受信(UART/I2C/SPIのアドレスヒットやデータ到着)、外部タイマ/コンパレータ出力、WOL(Wake-on-LAN)、RFパケット検出などがある。いずれも「電源ドメインを跨いで感知可能」な最小ハードを常時活かす構成が鍵で、入力はグリッチフィルタやデバウンスを通して誤動作を抑制する。
デバウンスとノイズ耐性
機械スイッチはバウンスを生むため、入力同期化とRC/デジタルフィルタ、ないし低速サンプリングで安定化する。EMIの強い環境ではシュミットトリガやヒステリシス付きコンパレータが有効である。
トリガ(イベント)— 内部要因
内部トリガにはRTCアラーム、低消費タイマ、独立ウォッチドッグ、アナログコンパレータ閾値到達、カウンタ比較一致、フラッシュ書込み完了通知などがある。深いモードでもRTC低速発振(32.768kHz)が維持され、指定時刻でウェイクアップできる。
BOR/低電圧検出との関係
電圧降下でBOR(Brown-Out Reset)が発生すると、復帰はウェイクアップではなくリセット経路となる。データ保持要件がある場合はバックアップドメインやRTC SRAMを用いる。
クロックとレイテンシ
遷移遅延は「ドメイン給電再開」「レジスタ復元」「クロック安定化(PLL lock/発振起動)」で決まる。最短化には、①低速RCを先に起動して割り込み処理を進め、並行で高精度発振を立上げる、②必要ペリフェラルのみ逐次有効化、③キャッシュ/TCMの温存でフェッチ遅延を抑える—といった段階的ウェイクアップが有効である。
電源ドメイン設計
常時給電(always-on)領域に「起床判定・RTC・小規模SRAM・電源管理FSM」を置き、主領域は遮断する。パワーゲーティングFETとレギュレータ(LDO/DC-DC)のシーケンスは、インラッシュ抑制、ソフトスタート、ラッシュ時の電圧ディップ対策(バルク容量・プリチャージ)を要する。アナログ前段とRFは立上げ安定時間が長いので、依存関係の明確化が重要である。
ソフトウェア実装(割り込みとRTOS)
深いモードからのウェイクアップでは、最初に最小ISRが走る。ISRは「事象の最小把握・フラグ設定・長処理の遅延実行」を守る。RTOSではidle hookでsleep遷移、tickless idleでシステムタイマをRTCに委譲する。復帰後は遅延許容の大きいタスクから順に再開し、DMAや周辺のレジューム順序を保証する。
ブートローダとの境界
リセット経路復帰時はブート開始だが、スタンバイ復帰ではレジュームとなる。ベクタ再初期化やBSS再クリアの要否をビルド時に分岐し、保持SRAMからコンテキストを復元する。
プロトコル別の注意(UART/I2C/SPI)
- UART: アイデル期間検出や特定バイト受信でウェイクアップ。ボーレート誤差吸収のために立上げ初回フレームを捨てる戦略も有効。
- I2C: 自身アドレスマッチで起床。クロックストレッチで応答遅延を吸収。
- SPI: NSSアサートをトリガにするが、クロック供給側依存のためスレーブ側の起床即応設計が必要。
テストと計測手法
平均電力は「稼働・待機のダイナミックミックス」で決まるため、オシロ+シャント/カレントプローブで時間波形を取り、イベント駆動のウェイクアップ前後のスパイク、インラッシュ、PLLロック時間を定量化する。プロファイルから「遷移回数×遷移エネルギー」を積分し、モード最適化に反映させる。
代表的な不具合と対策
- 偽起床(spurious wake):EMI/バウンス起因。入力ヒステリシスとデジタルフィルタ、適切なプル抵抗で低減。
- 起床後ハング:電源ドメイン依存の初期化漏れ。レジューム順序の状態機械化とBIST導入。
- 通信初手落ち:クロック未安定でフレーム欠落。初回ハンドシェイクの再送・ウェイク前アナウンス。
- 電池劣化下の不安定:低温・内部抵抗増で電圧降下。ソフトスタート延長と電圧監視しきい値の見直し。
設計フロー(実務の勘所)
- ユースケース分解:アクティブ時間、起床許容遅延、イベント頻度を定義。
- モード表の作成:各モードで生かすクロック源・ペリフェラル・SRAMバンクを列挙。
- トリガ設計:内部/外部の冗長化、偽起床対策、グリッチ許容窓の明確化。
- レジューム手順:最小ISR→依存解決→アプリ再開の段階化。
- 計測と最適化:波形・エネルギー積分に基づき閾値やモード選択を更新。
関連概念と用語整理
ウェイクアップは「スリープ」「割り込み」「タイマ」「クロック」「リセット」「GPIO」「UART」「I2C」「SPI」と密接に関係する。用語の境界を誤ると、レジュームとリセットの混同や、深いモードでの保持資産の読み違いが生じる。ドキュメントでは、イベント源、電源/クロック状態、復帰経路、初期化範囲を必ず明記することが重要である。
コメント(β版)