LPC111x/LPC11C1x はさまざまな電力制御機能を提供します。アクティブモードでは、
チップの動作中に、選択したペリフェラルへの電力とクロックを最適化して消費電力を抑 えることができます。さらに、スリープモード、ディープスリープモード、ディープパ ワーダウンモードという3種類のプロセッサ省電力モードがあります。
注意: デバッグモードは、スリープモード、ディープスリープモード、ディープパワーダ ウンモードには対応していません。
3.8.1 アクティブモード
アクティブモードでは、ARM Cortex-M0 コアおよびメモリはシステムクロックによって クロッキングされ、ペリフェラルはシステムクロックまたは専用ペリフェラルクロックに よってクロッキングされます。
チップはリセット後にアクティブモードになり、デフォルトの電力設定はPDRUNCFGレ ジスタおよびSYSAHBCLKCTRLレジスタのリセット値によって決定されます。電力設定は ランタイム時に変更できます。
3.8.1.1 アクティブモードの電力設定
アクティブモードの消費電力は、以下の設定からどれを選ぶかによって異なります。
•
SYSAHBCLKCTRL レジスタは、どのメモリやペリフェラルを動作させるかを制御します(Table 19)。
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A
•
各種アナログブロック(PLL、オシレータ、ADC、BOD 回路、フラッシュブロック)への電力は、いつでもPDRUNCFGレジスタを使用して個別に制御できます(Table 40)。
•
システムクロックのクロックソースは、IRC(デフォルト)、システムオシレータ、ま たはウォッチドッグオシレータから選択できます(Figure 3および関連レジスタを参 照)。•
システムクロック周波数は、SYSPLLCTRL(Table 8)およびSYSAHBCLKDIVレジスタ(Table 18)によって選択できます。
•
選択したペリフェラル(UART、SPI0/1、WDT)は、独自のクロック分周器とともに 個別のペリフェラルクロックを使用します。ペリフェラルクロックは、対応するク ロック分周器レジスタによってシャットダウンできます(Table 20〜Table 22)。3.8.2 スリープモード
スリープモードでは、ARM Cortex-M0 コアへのシステムクロックは停止し、リセットま たは割り込みのいずれかが発生するまで命令の実行は一時停止されます。
ペリフェラル機能は、SYSAHBCLKCTRLレジスタでクロッキングするように選択した場合、
スリープモード中も動作を継続し、割り込みを生成してプロセッサが実行を再開できるよ うにします。スリープモードでは、プロセッサ自体、メモリシステムと関連のコントロー ラ、および内部バスが使用する動的電力がありません。プロセッサの状態およびレジス タ、ペリフェラルレジスタ、および内部 SRAM 値は維持され、ピンのロジックレベルは 静的なままに保たれます。
3.8.2.1 スリープモードの電力設定
スリープモードの消費電力は、アクティブモードの場合と同様に設定されます。
•
クロックは動作したままです。•
システムクロック周波数はアクティブモードの場合と同じに保たれますが、プロセッ サはクロッキングされません。•
アナログペリフェラルおよびデジタルペリフェラルは、アクティブモードと同様に選 択されます。3.8.2.2 スリープモードのプログラミング
スリープモードに切り替えるには、以下の手順を実行する必要があります。
1. PCONレジスタのDPDENビットを0に設定します(Table 46)。
2. ARM Cortex-M0 SCRレジスタのSLEEPDEEPビットを0に設定します(Table 321を 参照)。
割り込み待ち( )命令を使用します。
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A
3.8.2.3 スリープモードからのウェイクアップ
NVIC によってイネーブルにされた割り込みがプロセッサに到達するか、リセットが発生 した場合、スリープモードは自動的に終了します。割り込みによるウェイクアップ後、マ イクロコントローラはPDRUNCFGレジスタおよびSYSAHBCLKDIVレジスタの内容によっ て定義される最初の電力設定に戻ります。リセットが発生した場合、マイクロコントロー ラはアクティブモードのデフォルト設定に切り替わります。
3.8.3 ディープスリープモード
ディープスリープモードでは、スリープモードと同様にプロセッサへのシステムクロック がディスエーブルになります。 BOD 回路とウォッチドッグオシレータ以外のすべてのア ナ ロ グ ブ ロ ッ ク が パ ワ ー ダ ウ ン し ま す。こ れ は、デ ィ ー プ ス リ ー プ モ ー ド 時 に
PDSLEEPCFGレジスタ内で選択または選択解除する必要があります。
ディープスリープモードでは、フラッシュおよびアナログペリフェラルが使用するすべて の電力、そしてプロセッサ自体、メモリシステムと関連のコントローラ、および内部バス が使用するすべての動的電力がありません。プロセッサの状態およびレジスタ、ペリフェ ラルレジスタ、および内部 SRAM 値は維持され、ピンのロジックレベルは静的なままに 保たれます。
3.8.3.1 ディープスリープモードの電力設定
ディープスリープモードの消費電力は、PDSLEEPCFG(Table 38)レジスタのディープス リープ電力設定によって異なります。
•
ディープスリープモードで使用可能なクロックソースは、ウォッチドッグオシレータ のみです。タイマ制御ウェイクアップ(Section 3.9.3を参照)のために必要であれば、ウォッチドッグオシレータをディープスリープモードのままで動作させておくこと が可能です。他のすべてのクロックソース(IRC およびシステムオシレータ)やシス テムPLLはシャットダウンされます。ウォッチドッグオシレータのアナログ出力周波 数を、そのアナログクロック出力(WDTOSCCTRL内のビットFREQSEL = 0001、Table 11を参照)の最小値に設定する必要があります。
•
アプリケーションが必要としている場合、BOD 回路をディープスリープモードのま まで動作させておくことが可能です。•
ウォッチドッグオシレータがディープスリープモードで動作している場合は、ウォッ チドッグタイマまたは多目的タイマの1つだけをSYSAHBCLKCTRLレジスタでイネー ブルにすることによって、消費電力を最小限に抑える必要があります。3.8.3.2 ディープスリープモードのプログラミング
ディープスリープモードに切り替えるには、以下の手順を実行する必要があります。
1. PCONレジスタのDPDENビットを0に設定します(Table 46)。
2. PDSLEEPCFG(Table 38)レジスタでディープスリープモードの電力設定を選択し ます。
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A a. タイマ制御のウェイクアップが必要な場合は、PDRUNCFGレジスタでウォッチ
ドッグオシレータに電力が供給されることを確認し、MAINCLKSEL レジスタ
(Table 16)でクロックソースをWDオシレータに切り替えてください。
b. タイマ制御のウェイクアップが不要でウォッチドッグオシレータをシャットダ ウンする場合は、PDRUNCFGレジスタでIRCに電力が供給されることを確認し、
MAINCLKSELレジスタ(Table 16)でクロックソースをIRCに切り替えてくださ い。そのようにすれば、システムクロックがグリッチなしでシャットダウンされ ます。
3. PDAWAKECFG(Table 39)レジスタでウェイクアップ後の電力設定を選択します。
4. ウェイクアップに外部ピンを使用する場合は、スタートロジックレジスタ(Table
33〜Table 36)でウェイクアップピンをイネーブルにしてからクリアし、NVICで
スタートロジック割り込みをイネーブルにします。
5. SYSAHBCLKCTRLレジスタ(Table 19)で、必要に応じてカウンタ/ タイマまたは WDTを除くすべてのペリフェラルをディスエーブルにします。
6. ARM Cortex-M0 SCRレジスタ(Table 321)のSLEEPDEEPビットに1を書き込みます。
7. ARM WFI命令を使用します。
3.8.3.3 ディープスリープモードからのウェイクアップ
マイクロコントローラは、以下の方法でディープスリープモードからウェイクアップする ことができます。
•
外部ピンの信号。この目的のために、ピンPIO0_0〜PIO0_11とPIO1_0 をスタート ロジックへの入力としてイネーブルにできます。スタートロジックにはクロックが 不要であり、ディープスリープモードからウェイクアップするためにNVICでイネー ブルにした場合、割り込みを生成します。•
多目的タイマのマッチ出力の 1 つでマッチイベントによって生成されたスタートロ ジックへの入力信号。タイママッチ機能を保持するピンは NVIC のスタートロジック 入力としてイネーブルになり、対応するタイマはSYSAHBCLKCTRLレジスタでイネー ブルになり、ウォッチドッグオシレータはディープスリープモードで動作する必要が あります(詳細についてはSection 3.9.3を参照)。•
BOD回路からのリセット。この場合、BOD回路はPDSLEEPCFGレジスタでイネーブルになり、BODリセットはBODCTRLレジスタ(Table 31)でイネーブルになる必要 があります。
•
ウォッチドッグタイマからのリセット。この場合、ウォッチドッグオシレータは ディープスリープモードで動作し(PDSLEEPCFG レジスタを参照)、WDT はSYSAHBCLKCTRLレジスタでイネーブルになる必要があります。
注意 ウォッチドッグオシレータがディープスリープモードで動作している場合は、その
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A
3.8.4 ディープパワーダウンモード
ディープパワーダウンモードでは、WAKEUP ピンを除くチップ全体への電力とクロック が遮断されます。
ディープパワーダウンモードの間、SRAM とレジスタの内容は、PMU ブロックの汎用レ ジスタに格納できる少量のデータ以外は保持されません。
ディープパワーダウンモードでは、WAKEUPピンを除くすべての機能ピンがトライステー ト状態になります。
3.8.4.1 ディープパワーダウンモードの電力設定
ディープパワーダウンモードには設定オプションがありません。すべてのクロック、コ ア、そしてすべてのペリフェラルがパワーダウンします。 WAKEUPピンのみに電力が供給 されます。
3.8.4.2 ディープパワーダウンモードのプログラミング
ディープパワーダウンモードに切り替えるには、以下の手順を実行する必要があります。
1. WAKEUPピンを外部からHIGHに引き上げます。
2. PCONレジスタ(Table 46を参照)のDPDENビットに1を書き込みます。
3. 汎用レジスタ(Table 47)に保持するデータを格納します。
4. ARM Cortex-M0 SCRレジスタ(Table 321)のSLEEPDEEPビットに1を書き込みます。
5. ディープパワーダウンモードに切り替える前に、PDRUNCFG レジスタのビット IRCOUT_PDおよびIRC_PDを0に設定することによって、IRCへ確実に電力を供給 します。
6. ARM WFI命令を使用します。
3.8.4.3 ディープパワーダウンモードからのウェイクアップ
WAKEUPピンをLOWに引き下げると、LPC111x/LPC11C1xはディープパワーダウンモー ドからウェイクアップし、チップはリセットプロセス全体を実行します(Section 3.6)。
注意: RESETピンは、ディープパワーダウンモードではまったく機能しません。