ウェイクアップ|低消費で確実なスリープ復帰設計

ウェイクアップ

ウェイクアップとは、低消費電力状態(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ロック時間を定量化する。プロファイルから「遷移回数×遷移エネルギー」を積分し、モード最適化に反映させる。

代表的な不具合と対策

  1. 偽起床(spurious wake):EMI/バウンス起因。入力ヒステリシスとデジタルフィルタ、適切なプル抵抗で低減。
  2. 起床後ハング:電源ドメイン依存の初期化漏れ。レジューム順序の状態機械化とBIST導入。
  3. 通信初手落ち:クロック未安定でフレーム欠落。初回ハンドシェイクの再送・ウェイク前アナウンス。
  4. 電池劣化下の不安定:低温・内部抵抗増で電圧降下。ソフトスタート延長と電圧監視しきい値の見直し。

設計フロー(実務の勘所)

  • ユースケース分解:アクティブ時間、起床許容遅延、イベント頻度を定義。
  • モード表の作成:各モードで生かすクロック源・ペリフェラル・SRAMバンクを列挙。
  • トリガ設計:内部/外部の冗長化、偽起床対策、グリッチ許容窓の明確化。
  • レジューム手順:最小ISR→依存解決→アプリ再開の段階化。
  • 計測と最適化:波形・エネルギー積分に基づき閾値やモード選択を更新。

関連概念と用語整理

ウェイクアップは「スリープ」「割り込み」「タイマ」「クロック」「リセット」「GPIO」「UART」「I2C」「SPI」と密接に関係する。用語の境界を誤ると、レジュームとリセットの混同や、深いモードでの保持資産の読み違いが生じる。ドキュメントでは、イベント源、電源/クロック状態、復帰経路、初期化範囲を必ず明記することが重要である。

コメント(β版)