Arm Cortex-M低消費電力モードの実践:具体的なヒントと省電力効果
前回の記事「Arm Cortex-M低消費電力モードの基礎」では、すべてのCortex-Mプロセッサで利用可能な基本的な低消費電力状態と、WFIおよびWFE命令を用いたスリープ移行方法を概説しました。次の論理的な疑問は、これらのモードが実際のマイクロコントローラでどのように実装され、組み込みシステムの全体的な電力予算にどの程度影響するかです。本稿では、NXP Kinetis-L Freedomボードを用いた実験で、得られる利得とトレードオフを定量化します。
低消費電力モードの実験
デバイスを各種電力状態で動作させ、その結果としての電流消費を測定するのが、低消費電力振る舞いを評価する最も信頼できる方法です。この研究では、多数の製品とコースで使用してきたNXP Kinetis-L Freedomボードを再び活用し、具体的なデータを収集しました。マイクロコントローラは通常ボード上で最大の電力消費者ですが、システム全体の電流を測定することが不可欠です。電圧レギュレータ、センサ、通信モジュールなどの他コンポーネントも総消費電流に大きく寄与する可能性があるためです。MCU単体の最適化でも大きなメリットがありますが、全体像を把握することで隠れたドレインを防げます。
ベースライン測定から開始
変更を加える前に、Kinetis-Lを通常ランモードで動作させ、すべてのペリフェラルを有効にし、LEDを毎秒トグルさせることでベースライン電流プロファイルを取得しました。IAR Embedded Workbench、I-Jetデバッガ、I-Scopeを使用し、LEDオフ時約16.9 mA、LEDオン時約18.0 mAの定常電流を観測しました(図1参照)。正確な測定ポイントが重要です。異なるテストポイントでは大きく異なる結果になる可能性があります。
クリックで拡大
図1. 開発ボードの電流測定:LEDが1秒ごとにトグル。(出典: 著者)
ウェイトモードとディープスリープモードで省電力化
プロセッサのウェイトモードを有効化するのは手っ取り早い省電力手段です。Kinetis-Lデータシートによると、ウェイトモードでは3 Vで3.7 mA~5.0 mAを消費します。CPUとペリフェラルクロックが無効化され、フラッシュが低リークドーズ状態になるためです。割り込み発生時、12~15クロックサイクルでウェイクアップ可能です。
void Sleep_Wait(void) { SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK; asm("WFI"); }
たったこれ2行で、ボード電流は18.0 mAから15.9 mAへ低下し、11.6 %の削減です。680 mAhバッテリーで駆動する場合、動作時間は37.8時間から42.8時間へ延び、最小限のコード変更で5時間の追加稼働が得られます。
さらにディープスリープモードへ進めます:
void Sleep_Deep(void) { SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK; asm("WFI"); }
SCB_SCRの1ビットをセットするだけで電流が14.8 mAまで下がり、17.8 %の節約。680 mAhバッテリーでは46時間稼働となり、わずか数行の追加で大幅なメリットが得られます。
ストップモードとVLLSモードでマイクロアンペア域へ
ストップモードではコアとシステムクロックを無効化することで、さらに約1 mA削減できます。電力管理レジスタを操作してからSleep_Deepを呼び出します:
void Sleep_Stop(void) { volatile unsigned int dummyread = 0; SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK; SMC_PMCTRL |= SMC_PMCTRL_STOPM(0); dummyread = SMC_PMCTRL; Sleep_Deep(); }
Kinetis-Lの超低漏れストップ(VLLS)モードでは、135 µA~496 µAまで抑制可能です。VLLS1を有効化するコードは以下の通り:
void Sleep_VLLS1(void) { volatile unsigned int dummyread = 0; SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK; SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4); SMC_VLLSTRL = SMC_VLLSCTRL_LLSM(1); dummyread = VLLS_CTRL; Sleep_Deep(); }
このレベルではマイクロコントローラはほぼエネルギーを消費しませんが、ウェイクアップレイテンシが劇的に増大します。
ウェイクアップレイテンシの考慮
低消費電力状態には長いウェイクアップ時間が伴います。標準ストップモードでは約2 µs+割り込みレイテンシで動作再開。VLLSモードでは53 µs~115 µsのブートアップ遅延が発生し、タイムクリティカルなアプリケーションでは許容できない場合があります。図2は各低消費電力状態からランモードへの遷移時間を示します。
クリックで拡大
図2. Kinetis-Lにおける低消費電力モードから各モードへの遷移時間。(出典: Kinetis-Lデータシート)
結論
すべてのArmマイクロコントローラは標準的な低消費電力モードを公開していますが、シリコンベンダーはユースケースに合わせて独自のバリエーションを追加しています。ベンダーは通常、ウェイクアップペナルティが無視できる「手の届きやすい果実」モードと、電流をマイクロアンペアまで削減できる超低消費電力オプションを提供します。開発者はアプリケーションに要求される応答性と省電力のバランスを取らなければなりません。単一の低消費電力モードが万能解になることは稀です。
Jacob Beningo は組み込みソフトウェアコンサルタント、アドバイザー、教育者として、10カ国以上のクライアントと協働し、ソフトウェア、システム、プロセスを劇的に変革しています。jacob@beningo.comまでご連絡ください。ウェブサイトwww.beningo.com、月刊Embedded Bytes Newsletterへの登録も歓迎します。
埋め込み
- 停電が電源装置を脅かす理由とその保護方法
- リアルタイム3Dプリンター監視でアディティブマニュファクチャリングを加速
- シリアルアディティブマニュファクチャリングのスケーリング:アディティブMESが効率と成長を推進
- 低力率の原因と改善方法を徹底解説
- コンデンサ充電のステップバイステップガイド:安全かつ効率的な手順
- 圧力露点(PDP)を最適化してエネルギーコストを削減する
- 油圧システム強化:耐久性向上の実証済み戦略
- 新1.5インチAIビジョンボード、単一電池で数年動作
- IIoTデータを活用してリーン製造の収益性を高める
- 産業オートメーションにおける現実のスペクトル:仮想・拡張現実の探求
- ネイバルブラス溶接マスター:技術と安全のヒント