欢迎来到亿配芯城! | 免费注册
你的位置:JJW(捷捷微电)功率半导体IC汽车芯片全系列-亿配芯城 > 芯片资讯 > MCU进入睡眠状态能节省多少能耗?
MCU进入睡眠状态能节省多少能耗?
发布日期:2024-08-23 07:51     点击次数:128

低功耗形式试验

探究低功耗形式的最佳办法是选择一个微操控器并以各种低功耗形式实际运转该处理器。本文中,我决议翻出积尘已久的NXP Kinetis-L Freedom电路板,我从前不只用它进行过试验,而且还运用于许多产品、运用和课程。不管对错,我决议不只要丈量微操控器的能耗,还要丈量整个开发板的能耗。MCU一般是电路板上的耗能大户之一,但丈量整个体系的电流常常提醒我它并不是电路板上仅有的耗电器材。微操控器的优化长路迢迢,但其实它并不是仅有需求优化能耗的器材。 从基线丈量开端每逢我尽力优化一个产品的能耗时,我首先会从基线能量丈量开端。一般我会经过剖析几秒或几分钟内设备的电流耗费来了解应该从哪里开端。在我的开发板试验中,将Kinetis-L置于运转形式,无睡觉形式,所有外设均运转并设置电路板定期切换LED。经过选用IAR嵌入式工作台的I-Jet调试器以及I-Scope,我可认为该电路板装备一个简单基线,即LED封闭时电流耗费大约为16.9mA,LED打开时大约为18.0mA,如图1所示。显然,从哪里开端进行丈量很重要,不然剖析成果或许显着偏离。

开发板的电流丈量,LED每秒切换一次

图1:开发板的电流丈量,LED每秒切换一次。(来源:作者)

选用等候形式和深度睡觉形式优化能耗节约能耗最快的办法是履行等候或深度睡觉形式。研究Kinetis-L处理器的数据表能够得出,等候形式的能耗在3伏电压下的电流介于3.7和5.0mA之间。在此形式下,CPU和外设时钟被禁用,而闪存处于休眠形式,此时答应处理器在中止时刻范围内(12-15个时钟周期)仍然能够被唤醒。等候形式易于实现,设置进入等候形式的代码如下所示: 

void Sleep_Wait(void){SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);}

只需这两行代码,开发板的电流耗费就从18.0mA降至15.9mA。电流耗费减少了11.6%!假如电路板由680mA电池供电,则该设备的电池寿数将从37.8小时变为42.8小时!两行代码就能够将电池寿数延长五小时! 这些高级电源形式的优点在于咱们能够轻松地再向前迈一步。咱们能够运用以下代码将处理器置于深度睡觉等候形式, 电子元器件采购网 而不只仅是等候形式: 

void Sleep_Deep(void){SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);}

咱们所做的仅仅是调整了SCB_SCR寄存器中的一位,就现已将最初的18mA电流耗费减少为14.8mA。电流耗费减少了17.8%!同样,假定电路板由680mA电池供电,电池寿数现在现已从37.8小时增长为46小时!只需几行代码就能够节约大量能耗,而这仅仅冰山一角! 利用Stop形式和VLLS形式实现微安级电流耗费选用中止形式能够禁用内核和体系时钟,这有或许将MCU电流耗费再进一步下降两毫安。你会发现,功耗形式越低,实现它所需的代码就越多,而唤醒体系恢复工作的代码就越杂乱。令Kinetis-L进入中止形式的代码如下所示: 

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();}

请注意,中止形式经过电源办理操控寄存器操控,一旦状况被设置,就会调用Sleep_Deep函数来完成电源形式的设置并履行WFI。 到目前为止,咱们一直在谈论1~2mA的MCU能耗。现代微操控器将供给仅耗费微安甚至毫微安的电源形式!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();}

讲到这儿,你会发现微操控器现已几乎不耗费任何能量了! 低功耗形式对唤醒推迟的影响正如咱们目前所看到的那样,将处理器设置为越来越低的电源形式是节约能源的好办法,但这是需求付出代价的。处理器的能量状况越低,唤醒处理器恢复工作所需的时刻就越长。例如,假如我运用规范中止形式,则处理器被唤醒并再次开端履行代码需求2μs加上中止推迟,这还能够接受。可是,假如在Kinetis-L上设置了其中一种VLLS形式,将需求发动处理器的唤醒推迟再加上额外的53到115微秒!有些运用或许无法接受这种状况。图2显现了Kinetis-L从低功耗形式到运转状况的各种转化。

5-1.gif

图2:Kinetis-L从低功耗形式到各种形式的转化时刻。(来源:Kinetis-L数据表)

结论Arm微操控器都具有规范的低功耗形式,但每个芯片厂商都会定制开发人员可用的更多低功耗形式。正如咱们所看到的,芯片供货商一般会供给几种简单实现的形式,对唤醒推迟的影响最小。他们还会供给几种超低功耗形式,几乎能够封闭处理器而且仅耗费几百微安或更少能量!开发人员一般需求在能耗和体系被唤醒需求的时长以及响应事情的速度之间进行权衡。而权衡一定是根据运用的,所以不要盼望能够在每个产品和运用上都履行最低功耗形式。