Catalystize!

コーヒー美味しい

PDRUNCFG0の挙動とSDK APIの対応

LPC55S69に搭載されているPower Management機能は細かくペリフェラルごとに電源を落とせるようになっている。 クロックの供給を止めることによる電力制御もあるが今回はPDRUNCFG0による電源制御についてメモ

PDRUNCFG0

NXPのWebページからダウンロードできるUser Guide UM11126 Rev1.9のChapter13によると、このレジスタを操作することによってアナログコンポーネントの電源を制御できるという。

ただしこれはActive Mode1での挙動で、Sleep Modeなどの場合の制御については別途設定があるようだ。

ここでいうアナログコンポーネントには以下のコンポーネントが含まれている。

  1. VBAT Brown out detect
  2. Free Running oscillator 32khz
  3. Xtal 32kHz
  4. Xtal 32MHz
  5. PLL 0
  6. PLL 1
  7. USB Full-Speed PHY
  8. USB High-Speed PHY
  9. Analog Comparator
  10. LDO for USB High-Speed PHY
  11. Auxiliary Bias (?)
  12. LDO for Xtal 32MHz
  13. Random Number Generator
  14. 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にしているような挙動が見えるのだが…


  1. Reset直後の動作モード