PDRUNCFG0の挙動とSDK APIの対応
LPC55S69に搭載されているPower Management機能は細かくペリフェラルごとに電源を落とせるようになっている。 クロックの供給を止めることによる電力制御もあるが今回はPDRUNCFG0による電源制御についてメモ
PDRUNCFG0
NXPのWebページからダウンロードできるUser Guide UM11126 Rev1.9のChapter13によると、このレジスタを操作することによってアナログコンポーネントの電源を制御できるという。
ただしこれはActive Mode1での挙動で、Sleep Modeなどの場合の制御については別途設定があるようだ。
ここでいうアナログコンポーネントには以下のコンポーネントが含まれている。
- VBAT Brown out detect
- Free Running oscillator 32khz
- Xtal 32kHz
- Xtal 32MHz
- PLL 0
- PLL 1
- USB Full-Speed PHY
- USB High-Speed PHY
- Analog Comparator
- LDO for USB High-Speed PHY
- Auxiliary Bias (?)
- LDO for Xtal 32MHz
- Random Number Generator
- PLL 0 Spread Spectrum module
そしてこのPDRUNCFG0にはSetとClearを行うためのレジスタも別途用意されており、fsl_power ライブラリからはこれらレジスタから操作されている。
fsl_power に含まれているPOWER_DisablePD
関数ではPDRUNCFGCLR0レジスタを使用してアナログコンポーネントのPower Upを行う。
それと逆にPOWER_EnablePD
関数ではPDRUNCFGSET0レジスタを使用してアナログコンポーネントのPower Downを行う。
これらはBOARD_BootClockPLL150M
関数の中だったりUSBを利用するときに呼ばれているのを見る。
そして一箇所、PDRUNCFG0レジスタではReservedとなっているBit5にて、どうもサンプルコードではそこを触ってFRO 192MHzをOnにしているような挙動が見えるのだが…
-
Reset直後の動作モード↩