最常用的半導(dǎo)體MCU的低功耗模式概述
在物聯(lián)網(wǎng)設(shè)備中,電池續(xù)航時(shí)間是至關(guān)重要的考慮因素,尤其是在遠(yuǎn)程監(jiān)測、穿戴設(shè)備、智能家居傳感器等應(yīng)用中。小華半導(dǎo)體的MCU提供了多種低功耗模式如深度睡眠、待機(jī)模式等,這些模式能夠幫助減少功耗并延長電池使用壽命。關(guān)鍵在于如何根據(jù)應(yīng)用需求有效地選擇和切換低功耗模式,以平衡設(shè)備的響應(yīng)時(shí)間和功耗。
1. 小華半導(dǎo)體MCU的低功耗模式概述
小華半導(dǎo)體的MCU通常提供多個(gè)低功耗模式,主要包括:
1.1 待機(jī)模式
特點(diǎn):MCU進(jìn)入待機(jī)模式時(shí),CPU停止工作,但外設(shè)和系統(tǒng)時(shí)鐘仍然保持活躍。通常用于短時(shí)間不需要高性能的任務(wù)。
應(yīng)用場景:當(dāng)設(shè)備處于空閑狀態(tài)時(shí),可以使用待機(jī)模式,等待下次傳感器采集或通信事件。
1.2 睡眠模式
特點(diǎn):在睡眠模式下,CPU停止工作,時(shí)鐘可能會(huì)停止或降低頻率,部分外設(shè)(如定時(shí)器、看門狗等)仍然工作。此模式比待機(jī)模式更省電,但喚醒時(shí)間較長。
應(yīng)用場景:適用于需要較長時(shí)間處于低功耗狀態(tài),且對(duì)響應(yīng)時(shí)間要求較低的應(yīng)用,如環(huán)境監(jiān)測傳感器。
1.3 深度睡眠模式
特點(diǎn):這是最節(jié)能的模式,除非有外部中斷或特定事件觸發(fā),幾乎所有的外設(shè)都停止工作,MCU進(jìn)入非常低的功耗狀態(tài)。此時(shí),CPU、外設(shè)甚至部分時(shí)鐘都可以被關(guān)閉。
應(yīng)用場景:適用于不需要頻繁響應(yīng)外部事件的應(yīng)用,如溫度傳感器或空氣質(zhì)量傳感器的長期監(jiān)控。
1.4 停止模式
特點(diǎn):在停止模式下,CPU和大多數(shù)外設(shè)都停止運(yùn)行,只有極少數(shù)外設(shè)(如RTC、外部中斷)會(huì)保持激活狀態(tài)。系統(tǒng)的功耗極低,但喚醒時(shí)間相對(duì)較長。
應(yīng)用場景:適用于設(shè)備長時(shí)間不活動(dòng)但偶爾需要喚醒執(zhí)行任務(wù)的場景,比如定時(shí)數(shù)據(jù)采集的物聯(lián)網(wǎng)設(shè)備。
1.5 休眠模式
特點(diǎn):除了外部喚醒源例如,按鍵、定時(shí)器中斷等外,幾乎所有功能模塊都關(guān)閉,系統(tǒng)的功耗降到最低。設(shè)備從此模式喚醒的時(shí)間通常較長。
應(yīng)用場景:適用于對(duì)響應(yīng)時(shí)間不敏感的物聯(lián)網(wǎng)設(shè)備,設(shè)備長時(shí)間處于低功耗待機(jī)模式,等待外部事件觸發(fā)。
低功耗模式實(shí)驗(yàn)
探索低功耗模式的最佳方法是選擇一個(gè)微控制器并以各種低功耗模式實(shí)際運(yùn)行該處理器。本文中,我決定翻出積塵已久的NXP Kinetis-L Freedom電路板,我曾經(jīng)不僅用它進(jìn)行過實(shí)驗(yàn),而且還應(yīng)用于許多產(chǎn)品、應(yīng)用和課程。無論對(duì)錯(cuò),我決定不僅要測量微控制器的能耗,還要測量整個(gè)開發(fā)板的能耗。MCU通常是電路板上的耗能大戶之一,但測量整個(gè)系統(tǒng)的電流經(jīng)常提醒我它并不是電路板上唯一的耗電器件。微控制器的優(yōu)化長路迢迢,但其實(shí)它并不是唯一需要優(yōu)化能耗的器件。
從基線測量開始
每當(dāng)我努力優(yōu)化一個(gè)產(chǎn)品的能耗時(shí),我首先會(huì)從基線能量測量開始。通常我會(huì)通過分析幾秒或幾分鐘內(nèi)設(shè)備的電流消耗來了解應(yīng)該從哪里開始。在我的開發(fā)板實(shí)驗(yàn)中,將Kinetis-L置于運(yùn)行模式,無睡眠模式,所有外設(shè)均運(yùn)行并設(shè)置電路板定期切換LED。通過采用IAR嵌入式工作臺(tái)的I-Jet調(diào)試器以及I-Scope,我可以為該電路板配置一個(gè)簡單基線,即LED關(guān)閉時(shí)電流消耗大約為16.9mA,LED打開時(shí)大約為18.0mA,如圖1所示。顯然,從哪里開始進(jìn)行測量很重要,否則分析結(jié)果可能明顯偏離。

圖1:開發(fā)板的電流測量,LED每秒切換一次。
采用等待模式和深度睡眠模式優(yōu)化能耗
節(jié)省能耗最快的方法是執(zhí)行等待或深度睡眠模式。研究Kinetis-L處理器的數(shù)據(jù)表可以得出,等待模式的能耗在3伏電壓下的電流介于3.7和5.0mA之間。在此模式下,CPU和外設(shè)時(shí)鐘被禁用,而閃存處于休眠模式,此時(shí)允許處理器在中斷時(shí)間范圍內(nèi)(12-15個(gè)時(shí)鐘周期)仍然可以被喚醒。等待模式易于實(shí)現(xiàn),設(shè)置進(jìn)入等待模式的代碼如下所示:
void Sleep_Wait(void)
{
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}
只需這兩行代碼,開發(fā)板的電流消耗就從18.0mA降至15.9mA。電流消耗減少了11.6%!如果電路板由680mA電池供電,則該設(shè)備的電池壽命將從37.8小時(shí)變?yōu)?2.8小時(shí)!兩行代碼就可以將電池壽命延長五小時(shí)!
這些高級(jí)電源模式的好處在于我們可以輕松地再向前邁一步。我們可以使用以下代碼將處理器置于深度睡眠等待模式,而不僅僅是等待模式:
void Sleep_Deep(void)
{
SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}
我們所做的僅僅是調(diào)整了SCB_SCR寄存器中的一位,就已經(jīng)將最初的18mA電流消耗減少為14.8mA。電流消耗減少了17.8%!同樣,假設(shè)電路板由680mA電池供電,電池壽命現(xiàn)在已經(jīng)從37.8小時(shí)增長為46小時(shí)!只需幾行代碼就可以節(jié)省大量能耗,而這只是冰山一角!
利用Stop模式和VLLS模式實(shí)現(xiàn)微安級(jí)電流消耗
采用停止模式可以禁用內(nèi)核和系統(tǒng)時(shí)鐘,這有可能將MCU電流消耗再進(jìn)一步降低兩毫安。你會(huì)發(fā)現(xiàn),功耗模式越低,實(shí)現(xiàn)它所需的代碼就越多,而喚醒系統(tǒng)恢復(fù)工作的代碼就越復(fù)雜。令Kinetis-L進(jìn)入停止模式的代碼如下所示:
void Sleep_Stop(void)
{
volatile unsigned int dummyread = 0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL |= SMC_PMCTRL_STOPM(0);
dummyread = SMC_PMCTRL;
Sleep_Deep();
}
請(qǐng)注意,停止模式通過電源管理控制寄存器控制,一旦狀態(tài)被設(shè)置,就會(huì)調(diào)用Sleep_Deep函數(shù)來完成電源模式的設(shè)置并執(zhí)行WFI。
到目前為止,我們一直在談?wù)?~2mA的MCU能耗。現(xiàn)代微控制器將提供僅消耗微安甚至毫微安的電源模式!Kinetis-L處理器于2013年左右首次亮相,其超低漏電停止(VLLS)模式僅耗能135至496微安!初始化此電源模式的代碼如下所示:
void Sleep_VLLS1(void)
{
volatile unsigned int dummyread = 0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);
SMC_VLLSTRL = SMC_VLLSCTRL_LLSM(1);
dummyread = VLLS_CTRL;
Sleep_Deep();
}
講到這里,你會(huì)發(fā)現(xiàn)微控制器已經(jīng)幾乎不消耗任何能量了!
低功耗模式對(duì)喚醒延遲的影響
正如我們目前所看到的那樣,將處理器設(shè)置為越來越低的電源模式是節(jié)省能源的好方法,但這是需要付出代價(jià)的。處理器的能量狀態(tài)越低,喚醒處理器恢復(fù)工作所需的時(shí)間就越長。例如,如果我使用標(biāo)準(zhǔn)停止模式,則處理器被喚醒并再次開始執(zhí)行代碼需要2μs加上中斷延遲,這還可以接受。但是,如果在Kinetis-L上設(shè)置了其中一種VLLS模式,將需要啟動(dòng)處理器的喚醒延遲再加上額外的53到115微秒!有些應(yīng)用可能無法接受這種狀況。圖2顯示了Kinetis-L從低功耗模式到運(yùn)行狀態(tài)的各種轉(zhuǎn)換。

圖2:Kinetis-L從低功耗模式到各種模式的轉(zhuǎn)換時(shí)間。
?MCU低功耗模式?是指通過關(guān)閉或減少M(fèi)CU(微控制器)在非工作狀態(tài)下的功耗,以延長設(shè)備的使用時(shí)間和電池壽命。MCU低功耗模式主要包括以下幾種:
?睡眠模式?:在這種模式下,CPU停止運(yùn)行,但外設(shè)仍然保持活動(dòng)。適用于短時(shí)間閑置狀態(tài),功耗較低,喚醒速度快?12。
?停止模式?:在這種模式下,CPU和大部分外設(shè)停止工作,只有關(guān)鍵外設(shè)如RTC(實(shí)時(shí)時(shí)鐘)和外部中斷保持活動(dòng)。適用于長時(shí)間休眠狀態(tài),功耗更低,但喚醒時(shí)間較長?12。
?待機(jī)模式?:在這種模式下,所有時(shí)鐘和外設(shè)都停止工作,只有最基本的功能如看門狗或外部中斷可以繼續(xù)運(yùn)行。功耗非常低,但喚醒時(shí)間較長?13。
不同低功耗模式的具體應(yīng)用場景和優(yōu)缺點(diǎn)
?睡眠模式?:適用于需要快速喚醒的應(yīng)用場景,如傳感器數(shù)據(jù)采集。優(yōu)點(diǎn)是喚醒速度快,缺點(diǎn)是功耗相對(duì)較高?12。
?停止模式?:適用于需要長時(shí)間休眠的應(yīng)用場景,如智能手表的待機(jī)狀態(tài)。優(yōu)點(diǎn)是功耗更低,缺點(diǎn)是喚醒時(shí)間較長?12。
?待機(jī)模式?:適用于需要極低功耗的應(yīng)用場景,如遠(yuǎn)程監(jiān)控設(shè)備。優(yōu)點(diǎn)是功耗非常低,缺點(diǎn)是喚醒時(shí)間最長?13。
不同廠商的低功耗MCU產(chǎn)品及其特性
一些廠商如英飛凌和瑞薩推出了低功耗MCU產(chǎn)品。例如,英飛凌的AIROC CYW20829支持多種電源模式,包括深度睡眠模式,電流消耗僅為4.5μA(64 KB SRAM),適用于藍(lán)牙5.4、低功耗音頻產(chǎn)品等應(yīng)用?4。
Arm微控制器都具有標(biāo)準(zhǔn)的低功耗模式,但每個(gè)芯片廠商都會(huì)定制開發(fā)人員可用的更多低功耗模式。正如我們所看到的,芯片供應(yīng)商通常會(huì)提供幾種容易實(shí)現(xiàn)的模式,對(duì)喚醒延遲的影響最小。他們還會(huì)提供幾種超低功耗模式,幾乎可以關(guān)閉處理器并且僅消耗幾百微安或更少能量!開發(fā)人員通常需要在能耗和系統(tǒng)被喚醒需要的時(shí)長以及響應(yīng)事件的速度之間進(jìn)行權(quán)衡。而權(quán)衡一定是基于應(yīng)用的,所以不要指望能夠在每個(gè)產(chǎn)品和應(yīng)用上都執(zhí)行最低功耗模式。