[[STM32>STM32#k157bfa9]]
*低消費電力モードの使い方 [#t4ca6094]

***電源ドメイン構成 [#lba7784a]
|電源ドメイン|電源端子|用途|h
|VDDA|VDDA,VSSA|ADC,温度センサ,リセット,PLL|
|VDD|VDD,VSS|I/O,STANDBY回路(WKUP,IWDG,RCC,CSR),電圧レギュレータ|
|V18|VDDから生成|コア,メモリ,デジタルペリフェラル|
|BKUP|VDD or VBAT|LSE 32K OSC,BKP,RCC BDCR,RTC|

***低消費電力モード [#reb54ba5]
|モード名|エントリ方法|ウェイクアップ|1.8Vドメインへの影響|VDDドメインへの影響|レギュレータ|h
|SLEEP|WFI|割り込み|CPU CLKのみOFF|なし|ON|
|SLEEP|WEI|ウェイクアップイベント|CPU CLKのみOFF|なし|ON|
|STOP|PDDS&br;LPDSビット+SLEEPDEEPビット+WFIかWFE|EXTIライン&br;EXTIレジスタ内で指定|全ての1.8VドメインCLKはOFF|HSI,HSE OSCはOFF|ON / 低消費電力モード|
|STANDBY|PDDS&br;LPDSビット+SLEEPDEEPビット+WFIかWFE|WKUPピン↑エッジ&br;RTCアラーム&br;NRSTピン内の外部リセット&br;IWDGリセット|全ての1.8VドメインCLKはOFF|HSI,HSE OSCはOFF|ON / 低消費電力モード|

***GPIOピンの設定 [#m77fc142]
AN2629 のサンプルコードでは、GPIO設定時にまず以下のようにしてから、必要なピンの設定をしている。
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
 RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | 
 RCC_APB2Periph_AFIO, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 GPIO_Init(GPIOB, &GPIO_InitStructure);
 GPIO_Init(GPIOC, &GPIO_InitStructure);
 GPIO_Init(GPIOD, &GPIO_InitStructure);
 GPIO_Init(GPIOE, &GPIO_InitStructure);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| 
 RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | 
 RCC_APB2Periph_AFIO, DISABLE);

一度全てのポートをアナログInputに設定している。GPIO_Mode_IN_FLOATING (リセット時のデフォルト)で、ピンを浮かしておくと、電流を食うため。

**LDOの自己消費電流** [#ud052bd1]
STM32に電源を供給しているLDOの自己消費電流が馬鹿にならない(5mA)ので、低消費電力モードを使う場合は、LDOの付け替えを検討する必要があります。極限的にはコンデンサの漏れ電流も現れてくる事があります。

|メーカ|型番|自己消費|h
|UTC|LP2950L|100uA|
|メーカ|型番|自己消費|最大出力|h
|UTC|LP2950L|100uA|100mA|
|ST|LD1117(STBee標準)|5mA|800mA|

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS