stm32l151低功耗
該芯片具有5中低功耗模式:
① 低功耗運(yùn)行模式:低功耗運(yùn)行模式:適配器處于低電壓模式,時(shí)鐘頻率限制在低頻,部分外圍的使用也受限。
② 睡眠模式:Cortex-M3內(nèi)核停止,外圍器件保持運(yùn)行狀態(tài),比如RTC一直運(yùn)行。
③ 低功耗睡眠模式:Cortex-M3內(nèi)核停止,時(shí)鐘頻率受限(降頻),部分外圍運(yùn)行,電源適配器處于低功耗模式,RAM斷電,F(xiàn)lash停止。
④ 停止模式:所有的時(shí)鐘停止,電源低功耗運(yùn)行。
⑤ 待機(jī)模式:內(nèi)核斷電。
另外:在正常運(yùn)行模式下,功耗也可以通過(guò)下面的方式降低:
降低時(shí)鐘頻率。
外圍不使用的時(shí)候,APBx和AHBx外圍的時(shí)鐘降低。
其實(shí)這個(gè)貌似用途反而不大,可以考慮不降頻,縮短整個(gè)程序運(yùn)行時(shí)間,然后快速進(jìn)入低功耗模式。
低功耗模式下的時(shí)鐘特征
APB外設(shè)和DMA時(shí)鐘是可以通過(guò)軟件關(guān)閉的。
一、睡眠和低功耗睡眠模式下的時(shí)鐘表現(xiàn)
睡眠和低功耗睡眠模式下,CPU內(nèi)核時(shí)鐘停止。 睡眠模式下,內(nèi)存接口時(shí)鐘和其他所有外圍的時(shí)鐘可以通過(guò)軟件設(shè)定停止。低功耗 睡眠模式下,內(nèi)存接口時(shí)鐘停止,而且RAM處于掉電模式,AHB-APB總線時(shí)鐘被 硬件停止(前提是連接的外圍器件也停止)
二、停止和待機(jī)模式下的時(shí)鐘特點(diǎn)
系統(tǒng)時(shí)鐘和所有的告訴時(shí)鐘停止:
PLL停止。
HIS時(shí)鐘源停止。
HSE時(shí)鐘源停止。
MSI時(shí)鐘源也停止。
當(dāng)stop模式被中斷打斷跳出時(shí),或者待機(jī)模式被reset打斷跳出時(shí),MSI時(shí)鐘會(huì)被自動(dòng)選擇作為系統(tǒng)時(shí)鐘。當(dāng)設(shè)備從stop模式跳出后,之前的MSI配置信息保持,當(dāng)設(shè)備從待機(jī)模式跳出時(shí),定時(shí)值會(huì)被復(fù)位為默認(rèn)的2MHz。
三、外圍時(shí)鐘選通。
在RUN模式下,HCLK和PCLKx對(duì)應(yīng)的獨(dú)立外圍設(shè)備和內(nèi)存設(shè)備可以在任何時(shí)間設(shè)定停止,以便降低 功耗。
在sleep模式下,通過(guò)執(zhí)行WFI或者WFE指令設(shè)定外圍時(shí)鐘停止,可以進(jìn)一步降低功耗。
外圍時(shí)鐘的選通控制是通過(guò)AHB時(shí)鐘使能寄存器(RCC_AHBENR)、APB2時(shí)鐘使能 寄存器(RCC_APB2ENR)、APB1時(shí)鐘使能寄存器(RCC_APB1ENR)
睡眠模式下,通過(guò)reset寄存器RCC_AHBLPENR和RCC_APBxLPENR的同步位,實(shí)現(xiàn)自動(dòng)關(guān)閉外圍時(shí)鐘的功能。
四、睡眠模式
(1) 如何進(jìn)入睡眠模式
進(jìn)入睡眠模式,需要執(zhí)行WFI(wait for interrupt)或WFE(wait for event)指令。這兩種指令都是對(duì)SLEEPONEXIT位進(jìn)行配置實(shí)現(xiàn)的。
sleep- now:一旦執(zhí)行了WFI或WFE,(立刻睡眠)如果SLEEPONEXIT位被清除,MCU進(jìn)入sleep模式。
sleep-on-exit:如果SLEEPONEXIT位置1,如果退出ISR,MCU進(jìn)入sleep模式。
在睡眠模式下,所有的I/O口,都保持與RUN模式相同的狀態(tài)。
(2)如何退出睡眠模式
如果通過(guò)WFI指令進(jìn)入睡眠 模式,任何的外圍設(shè)備的中斷都能實(shí)現(xiàn)喚醒設(shè)備。
如果通過(guò)WFE執(zhí)行進(jìn)入睡眠模式,MCU通過(guò)“事件”出現(xiàn)喚醒,這個(gè)喚醒的時(shí)間包括:
① 使能一個(gè)外圍控制中斷,但是不在NVIC中, 使能SEVONPEND位,外圍中斷掛起位 和 外圍NVIC IRQ通道掛起位清除。
② 配置一個(gè)外部或者內(nèi)部的EXTI Line作為事件模式,當(dāng)CPU從WFE喚醒,不必要清除外圍中斷位,或者NVIC IRQ通道掛起位。
睡眠模式進(jìn)入/退出總結(jié):
五、低功耗睡眠模式
(1)如何進(jìn)入 低功耗睡眠模式
進(jìn)入低功耗睡眠模式,需要配置電壓適配器到低功耗模式,同時(shí)配合執(zhí)行WFI或WFE指令。在這種模式下,F(xiàn)lash存儲(chǔ)無(wú)效,但是RAM存儲(chǔ) 有效。
在這種模式下,系統(tǒng)頻率不能超過(guò) f_MSI range1,
低功耗睡眠模式只有在Vcore是在電壓范圍2(range2 = 1.5V)才能進(jìn)入。
注意:如果APB1時(shí)鐘頻率小于 7倍RTC時(shí)鐘頻率(7*RTCLCK = 7*32.768k = 229376),那么讀RTC日歷寄存器就需要讀2次,如果第2次讀取的RTC_TR數(shù)值與第一次相同,才能確定讀取數(shù)據(jù)正確, 否則就再讀一次。
有兩種方式可以進(jìn)入低功耗睡眠模式:
① 立刻睡眠:如果SLEEPONEXIT位清0,一旦執(zhí)行WFI或WFE執(zhí)行,MCU立刻進(jìn)入低功耗睡眠模式。
② 通過(guò)事件睡眠:如果SLEEPONEXIT位置1,只有事件的優(yōu)先級(jí)最低,MCU才進(jìn)入低功耗模式。
進(jìn)入 低功耗睡眠模式下的過(guò)程如下:
① 通過(guò)FLASH_ACR寄存器的SLEEP_PD位,關(guān)閉Flash,這可以降低功耗,不過(guò)也會(huì)增加喚醒時(shí)間。
② IP Clock必須通過(guò)RCC_APBxENR和RCC_AHBENR寄存器使能或禁止。
③ 系統(tǒng)時(shí)鐘頻率必須降低。
④ 通過(guò)軟件(LPSDSR bit位設(shè)定)強(qiáng)制電壓適配器處于低功耗模式。
⑤ 執(zhí)行WFI/WFE執(zhí)行,進(jìn)入睡眠模式。
退出低功耗睡眠模式:與 睡眠模式類似。
六、停止模式
停止模式是一種深度睡眠模式,配合外圍時(shí)鐘選通。電壓適配器可以配置為正?;虻凸哪J?。
停止模式下,Vcore時(shí)鐘是停止的,PLL、MSI、HSI、HSE RC是停止的(RTC的時(shí)鐘沒(méi)有停止),,內(nèi)部的SRAM和寄存器目錄是保持的。
為了在Stop模式下得到最低的功耗,內(nèi)部Flash也要進(jìn)入低功耗模式,當(dāng)Flash在power down模式,當(dāng)從stop模式下喚醒后,會(huì)有啟動(dòng)延時(shí)。
為了實(shí)現(xiàn)功耗最小化,進(jìn)入stop模式前,Vrefint、BOR、PVD、溫度傳感器可以關(guān)閉,這些外圍也是可以再打開(kāi)的,當(dāng)從stop模式退出后,通過(guò)PWR_CR寄存器中ULP bit位。
進(jìn)入STOP模式:
STOP模式下,下面的外圍是可以獨(dú)立編程的:
IWDG、RTC、LSI RC振蕩器、外部32.768k振蕩器。
STOP 模式退出:
從stop模式下退出可以通過(guò)中斷或者wakeup事件,退出后,MSI RC振蕩器會(huì)被選做系統(tǒng)時(shí)鐘。