STM32低功耗模式實(shí)踐
STM32一共有三種低功耗模式,睡眠模式、停止模式以及待機(jī)模式。
其中,睡眠模式時(shí)內(nèi)核停止運(yùn)行,但外設(shè)仍在工作,所有外設(shè)的時(shí)鐘不會被關(guān)閉。
停止模式,除了Cortex-M3內(nèi)核停止外,所有外設(shè)時(shí)鐘也被關(guān)閉,可以選擇使能內(nèi)部時(shí)鐘,SRAM和寄存器內(nèi)容被保留,IO口保持為進(jìn)入睡眠前的狀態(tài)。
待機(jī)模式時(shí),所有1.8V電源部分全部斷電,SRAM和寄存器內(nèi)容被丟失,這最為省電的一種方式,但是喚醒后就丟失了記憶。
本文選擇使用停止模式,要低功耗,又要喚醒后繼續(xù)運(yùn)行,那stm32低功耗模式可以做到多省電呢?我們看看停止模式和待機(jī)模式下的電流標(biāo)稱值。
我在stm32f103的一個開發(fā)板上實(shí)驗(yàn)了下停止模式的RC時(shí)鐘喚醒以及外部中斷喚醒,使用一個100歐的電阻測板子的耗電電流,發(fā)現(xiàn)基于RC時(shí)鐘喚醒的停止模式時(shí)整板電流居然只有30uA!真的非常厲害。這也是我更換了一個低功耗LDO(待機(jī)4uA)的功勞!由于沒有使能任何外設(shè),只使能了內(nèi)部40K低速振蕩器,因而與系統(tǒng)的標(biāo)稱值已經(jīng)非常接近。如果使用IO喚醒,那么要使能該IO的相應(yīng)外設(shè),實(shí)測睡眠時(shí)高達(dá)1.1mA。這兩種喚醒模式可以被用于兩種不同的場景,比如RC定時(shí)喚醒用于主動上報(bào)的數(shù)據(jù)采集器,外部喚醒的機(jī)制用于運(yùn)動觸發(fā)喚醒機(jī)制。
手冊標(biāo)準(zhǔn)值
實(shí)測值
RC定時(shí)喚醒
睡眠
25uA
30uA(26uA+4uA)
運(yùn)行
30-70mA
24mA
外部中斷喚醒
睡眠
25uA+外設(shè)
1.1mA
運(yùn)行
30-70mA
25mA