STM32
低消費電力モードの使い方 †
電源ドメイン構成 †
電源ドメイン | 電源端子 | 用途 |
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 |
低消費電力モード †
モード名 | エントリ方法 | ウェイクアップ | 1.8Vドメインへの影響 | VDDドメインへの影響 | レギュレータ |
SLEEP | WFI | 割り込み | CPU CLKのみOFF | なし | ON |
SLEEP | WEI | ウェイクアップイベント | CPU CLKのみOFF | なし | ON |
STOP | PDDS LPDSビット+SLEEPDEEPビット+WFIかWFE | EXTIライン EXTIレジスタ内で指定 | 全ての1.8VドメインCLKはOFF | HSI,HSE OSCはOFF | ON / 低消費電力モード |
STANDBY | PDDS LPDSビット+SLEEPDEEPビット+WFIかWFE | WKUPピン↑エッジ RTCアラーム NRSTピン内の外部リセット IWDGリセット | 全ての1.8VドメインCLKはOFF | HSI,HSE OSCはOFF | ON / 低消費電力モード |
GPIOピンの設定 †
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の自己消費電流** †
STM32に電源を供給しているLDOの自己消費電流が馬鹿にならない(5mA)ので、低消費電力モードを使う場合は、LDOの付け替えを検討する必要があります。極限的にはコンデンサの漏れ電流も現れてくる事があります。
メーカ | 型番 | 自己消費 | 最大出力 |
UTC | LP2950L | 100uA | 100mA |
ST | LD1117(STBee標準) | 5mA | 800mA |