[[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|