90 パワーマネジメント概要 (説明のみ)(工事中)
電源というと、簡単にはスイッチON/OFFのことですけど、実際はもっと複雑な事情を管理しなくちゃいけません.
パワーオンリセット、パワーダウン、スタンバイ、バッテリー動作、RTC などなど.
そういうのをパワーマネジメントと呼びます.
このページでは、プログラムする前にSTM32の電源関連機能を整理します.
パワー系統ブロック図
●メイン電源VDDは2~3.6V
●ただしCPU coreは1.8Vで動きます.そのためのLDOを内蔵しています.
●VDDA/VSSAはアナログ回路専用電源です.ADC+DAC+温度センサ+リセット+PLLがアナログ回路です.リセットがアナログ回路なのはコンパレータを含むからでしょうか? 下図によるとVREF+は2.4V以上となっているので、もしかしたらVDD<2.4VだとADCやDACが動かないのかもしれませんが、仕様は未確認です.
●STM32-DISCOVERYのCPUではVREF+はVDDAに、VREF-はVSSAに内部接続されており、pinは存在しない.
●VBATはバッテリーの接続端子です.バッテリーで駆動されるのは、内部32kHz発振器+Backup+clock+RTC です.Low Voltage detectorが作動すると、それまでVDDから電源をもらって動いていたこれらの回路がVBATから電源をもらうように切り替わります.
VBATの注意
VBATにはbatteryを接続しますが、データシートによると、battery-VBAT間にシリーズにshotkey diodeを挿入することがオススメされているようです.なぜか? VDDが低下するとVBATに切り替わりますが、一瞬VDDとVBATがshortするタイミングがあるそうです.その瞬間にVDD→VBATへ電流が流れ、batteryにその電流が流入します.その電流を回避するためにdiodeを挿入しておくのがよいそうです.
batterを使わないときはVBAT=VDDに接続すればOKです.
VBATで駆動される回路の外部pinのアサイン
●VDDが生きているとき
- PC14 と PC15 は GPIO または LSE として使える
- PC13 は GPIO, TAMPER, RTC Calibration Clock, RTC Alarm or second output として使える
●VDDが落ちているとき(VBATで動いているとき)
- PC14 と PC15 は LSE としてのみ使える
- PC13 は TAMPER, RTC Alarm or Second output として使える
可変電圧監視回路 PVD
VDDとVDDAの電圧を監視することができる.
PVD出力によってEXTI16割り込みを発生できる.
監視電圧は以下のレジスタで可変できる.
PLS[2:0]: PVD level selection.
000: 2.2V
001: 2.3V
010: 2.4V
011: 2.5V
100: 2.6V
101: 2.7V
110: 2.8V
111: 2.9V
STM32のPSモード
RUN MODE: 全部 on
SLEEP MODE: CPU clock off peripheral clock on
STOP MODE: 全clock off
STANDBY MODE: 1.8Vレギュレータoff
1.8VレギュレータのPSモード
RUN MODE: いろんな回路に電源供給する
STOP MODE: SRAMとレジスタのみに電源供給する
STANDBY MODE: 1.8Vレギュレータはoffになる.ゆえにVBATでbackupされている回路以外は全部死ぬ
SLEEP MODEに入るには出るには
よくわかりません.
IO pinはRUN MODE時のステートのまま保持する.
STOP MODEに入るには出るには
regiter操作レベルではよくわかりませんが、ライブラリ関数に PWR_EnterSTOPMode (uint32_t PWR_Regulator, uint8_t PWR_STOPEntry) という名前がそのものな関数があります.
IO pinはRUN MODE時のステートのまま保持する.
STANDBY MODEに入るには出るには
regiter操作レベルではよくわかりませんが、ライブラリ関数に PWR_EnterSTANDBYMode(void) という名前がそのものな関数があります.
IO pinはhigh-zになりますが、一部例外的に生きてるpinがある.
● Reset
● TAMPER (tamper または calibration outに設定されているとき)
● WKUP (enableにされているなら)
Auto-wakeup (AWU)
RTCを利用して、一定時間毎にSTOP MODEあるいはSTANDBY MODEから目覚めさせることができます.