STM32F103C8T6低功耗測試(待機模式)

只測試了待機模式,待機模式實現系統的最低功耗。
原理圖如下,一開始全部焊接了,其中S2用來進入待機,S1用來喚醒
這裏寫圖片描述

測試程序爲:

#include "stm32f10x.h"
#include "system_stm32f10x.h"v

oid Sys_Standby(void)
{  
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外設時鐘
    PWR_WakeUpPinCmd(ENABLE);  //使能喚醒管腳功能
    PWR_EnterSTANDBYMode();   //進入待機(standby)模式          
}

//系統進入待機模式
void Sys_Enter_Standby(void)
{            
    RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //復位所有IO口,屏蔽這條語句也沒有看到什麼影響
    Sys_Standby();
}

void IO_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);    

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PB6上拉輸入,對應按鍵S2
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);  
}

int main()
{
    IO_Init();
    while(1)
    {
        if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6) == 0)
        {
            Sys_Enter_Standby();
        }
    }
}

電流的測量用的是萬用表,串聯在電源的輸入端,也就是說,實際測量的電流值爲電路板消耗電流。電機、喇叭、OLED-0.9寸屏這些外部器件均未接入。
系統時鐘選擇外部8M晶振,電源爲電腦USB口取電,上電後按下S2,進入待機模式,按下S1喚醒。
上電, 正常運行電流7.9mA,待機電流205uA,待機電流比較大;
取下DS1302芯片,正常運行電流7.9mA,待機電流10.5uA;
再取下DS1302芯片的三個上拉電阻,和上面一樣,沒變化;(看來即便有外部上拉,在待機模式時也是不用管的,只是不知道這上拉電阻接到了外圍芯片上對外圍電路的功耗有怎樣的影響。)
再取下AT24C02芯片模塊,正常電流7.7mA,待機電流10.5uA;
再取下L9110S電機驅動芯片,正常電流7.7mA,待機電流10.5uA,沒有變化;
再取下SK040G語音芯片,就剩電源和按鍵部分了,正常電流7.6mA,待機7.4uA。
修改程序,開RTC後(選外部32.768k晶振),待機時電流爲8.6uA。
裝上OLED 0.9寸小128x64液晶屏測試了下,待機時120uA,此時若取下液晶屏,電流由120uA變到正常待機的7.4uA。

待機模式可實現 STM32的最低功耗。該模式是在 CM3 深睡眠模式時關閉電壓調節器,整個 1.8V 供電區域被斷電,PLL、HSI和 HSE振盪器也被斷電,SRAM和寄存器內容丟失,僅備份的寄存器和待機電路維持供電。

從待機模式喚醒後的代碼執行等同於復位後的執行(採樣啓動模式引腳,讀取復位向量等),電源控制/狀態寄存器(PWR_CSR)將會指示內核由待機狀態退出。

待機模式下的輸入/輸出端口狀態
在待機模式下,所有的I/O引腳處於高阻態,除了以下的引腳:
● 復位引腳(始終有效)
● 當被設置爲防侵入或校準輸出時的TAMPER引腳
● 被使能的喚醒引腳
<既然進入待機模式後各IO處於高阻態,那麼所謂的IO口進待機前需配置爲AIN、或者弱上拉弱下拉模式的,其實都沒必要了,但看其他的網絡文章有說需配置的,我也是弱上拉、弱下拉、模擬輸入、浮空輸入都測試了下,對於最小系統,沒看到待機電流有什麼變化,也測試了下開串口、SPI口什麼的,對待機電流都沒有發現影響,文檔上“進入待機模式後,只有備份的寄存器和待機電路維持供電,其他部分沒有供電”,那自然不會產生功耗,進入待機模式前就沒必要配置。對外圍硬件電路進入待機前根據情況纔看是否有設置外圍芯片工作模式的必要。主芯片進入待機後,管腳都爲高阻態,要看這種狀態對外圍芯片電路會帶來怎樣的影響,如果不合適就要考慮停止模式,在停止模式下,所有的I/O引腳都保持它們在運行模式時的狀態。>

對於喚醒管腳PA0(WKUP),在寄存器PWR_CSR中的第8位EWUP位有說明:
EWUP:使能WKUP引腳
0: WKUP引腳爲通用I/O。 WKUP引腳上的事件不能將CPU從待機模式喚醒
1:WKUP引腳用於將CPU從待機模式喚醒,WKUP引腳被強置爲輸入下拉的配置(WKUP引腳上的上升沿將系統從待機模式喚醒)
注:在系統復位時清除這一位。(即系統復位重啓後該位爲0)
也就是說進待機模式後,WKUP自動被設置爲下拉輸入(下拉電阻典型值40K),無需額外配置端口A時鐘及PA0管腳功能。

正常運行時IO口的損耗及響應配置:
以下爲轉載http://blog.csdn.net/beep_/article/details/47975227
I/O模塊損耗:
靜態損耗:
內部上下拉電阻損耗:這部分損耗主要取決於內部電阻的大小,一般爲了降低內部電阻損耗常常需要降低電阻兩端電壓,若引腳爲低電壓則採用下拉電阻,若引腳爲高電壓則採用上拉電阻。
I/O額外損耗:當引腳設爲輸入I/O時,用來區分電壓高低的斯密特觸發器電路會產生一部分消耗,爲此可將引腳設爲模擬輸入模式。
動態損耗:對於懸浮的引腳,由於其電壓不穩定會產生外部電磁干擾和損耗,因此必須把懸浮引腳設爲模擬模式或輸出模式。
引腳電壓的切換會對外部和內部電容負載產生動態損耗,其損耗與電壓切換頻率和負載電容有關。具體損耗值如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章