向右滑动:上一篇 向左滑动:下一篇 我知道了
广告

如何让MCU进入睡眠状态节省能耗?

时间:2019-08-06 作者:Jacob Beningo 阅读:
我们探讨过在每种Arm Cortex-M处理器上可以找到的低功耗模式的基本原理,以及如何使用WFI和WFE指令让处理器进入睡眠模式。实际上我们真正要了解的是,低功耗模式如何在真正的微控制器上实现?这些模式是如何影响嵌入式系统的?在这篇文章中,我们将更详细探讨如何让微控制器进入睡眠状态并看看到底能够节省多少能耗。

在我的上一篇文章《ARM Cortex-M低功耗模式基本原理》中,我们探讨了在每种Arm Cortex-M处理器上可以找到的低功耗模式的基本原理,以及如何使用WFI和WFE指令让处理器进入睡眠模式。实际上我们真正要了解的是,低功耗模式如何在真正的微控制器上实现?这些模式是如何影响嵌入式系统的?在这篇文章中,我们将更详细探讨如何让微控制器进入睡眠状态并看看到底能够节省多少能耗。GXaEETC-电子工程专辑

低功耗模式实验

探索低功耗模式的最佳方法是选择一个微控制器并以各种低功耗模式实际运行该处理器。本文中,我决定翻出积尘已久的NXP Kinetis-L Freedom电路板,我曾经不仅用它进行过实验,而且还应用于许多产品、应用和课程。无论对错,我决定不仅要测量微控制器的能耗,还要测量整个开发板的能耗。MCU通常是电路板上的耗能大户之一,但测量整个系统的电流经常提醒我它并不是电路板上唯一的耗电器件。微控制器的优化长路迢迢,但其实它并不是唯一需要优化能耗的器件。GXaEETC-电子工程专辑

从基线测量开始

每当我努力优化一个产品的能耗时,我首先会从基线能量测量开始。通常我会通过分析几秒或几分钟内设备的电流消耗来了解应该从哪里开始。在我的开发板实验中,将Kinetis-L置于运行模式,无睡眠模式,所有外设均运行并设置电路板定期切换LED。通过采用IAR嵌入式工作台的I-Jet调试器以及I-Scope,我可以为该电路板配置一个简单基线,即LED关闭时电流消耗大约为16.9mA,LED打开时大约为18.0mA,如图1所示。显然,从哪里开始进行测量很重要,否则分析结果可能明显偏离。GXaEETC-电子工程专辑

20190806-200.pngGXaEETC-电子工程专辑
GXaEETC-电子工程专辑
图1:开发板的电流测量,LED每秒切换一次。 (来源:作者)GXaEETC-电子工程专辑

采用等待模式和深度睡眠模式优化能耗

节省能耗最快的方法是执行等待或深度睡眠模式。研究Kinetis-L处理器的数据表可以得出,等待模式的能耗在3伏电压下的电流介于3.7和5.0mA之间。在此模式下,CPU和外设时钟被禁用,而闪存处于休眠模式,此时允许处理器在中断时间范围内(12-15个时钟周期)仍然可以被唤醒。等待模式易于实现,设置进入等待模式的代码如下所示:GXaEETC-电子工程专辑

void Sleep_Wait(void)GXaEETC-电子工程专辑
{GXaEETC-电子工程专辑
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;GXaEETC-电子工程专辑
asm(“WFI”);GXaEETC-电子工程专辑
}GXaEETC-电子工程专辑

只需这两行代码,开发板的电流消耗就从18.0mA降至15.9mA。电流消耗减少了11.6%! 如果电路板由680mA电池供电,则该设备的电池寿命将从37.8小时变为42.8小时!两行代码就可以将电池寿命延长五小时!GXaEETC-电子工程专辑

这些高级电源模式的好处在于我们可以轻松地再向前迈一步。我们可以使用以下代码将处理器置于深度睡眠等待模式,而不仅仅是等待模式:GXaEETC-电子工程专辑

void Sleep_Deep(void)GXaEETC-电子工程专辑
{GXaEETC-电子工程专辑
SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;GXaEETC-电子工程专辑
asm(“WFI”);GXaEETC-电子工程专辑
}GXaEETC-电子工程专辑

我们所做的仅仅是调整了SCB_SCR寄存器中的一位,就已经将最初的18mA电流消耗减少为14.8mA。电流消耗减少了17.8%!同样,假设电路板由680mA电池供电,电池寿命现在已经从37.8小时增长为46小时!只需几行代码就可以节省大量能耗,而这只是冰山一角!GXaEETC-电子工程专辑

利用Stop模式和VLLS模式实现微安级电流消耗

采用停止模式可以禁用内核和系统时钟,这有可能将MCU电流消耗再进一步降低两毫安。 你会发现,功耗模式越低,实现它所需的代码就越多,而唤醒系统恢复工作的代码就越复杂。令Kinetis-L进入停止模式的代码如下所示:GXaEETC-电子工程专辑

void Sleep_Stop(void)GXaEETC-电子工程专辑
{GXaEETC-电子工程专辑
volatile unsigned int dummyread = 0;GXaEETC-电子工程专辑
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;GXaEETC-电子工程专辑
SMC_PMCTRL |= SMC_PMCTRL_STOPM(0);GXaEETC-电子工程专辑
dummyread = SMC_PMCTRL;GXaEETC-电子工程专辑
Sleep_Deep();GXaEETC-电子工程专辑
}GXaEETC-电子工程专辑

请注意,停止模式通过电源管理控制寄存器控制,一旦状态被设置,就会调用Sleep_Deep函数来完成电源模式的设置并执行WFI。GXaEETC-电子工程专辑

到目前为止,我们一直在谈论1~2mA的MCU能耗。现代微控制器将提供仅消耗微安甚至毫微安的电源模式!Kinetis-L处理器于2013年左右首次亮相,其超低漏电停止(VLLS)模式仅耗能135至496微安!初始化此电源模式的代码如下所示:GXaEETC-电子工程专辑

void Sleep_VLLS1(void)GXaEETC-电子工程专辑
{GXaEETC-电子工程专辑
volatile unsigned int dummyread = 0;GXaEETC-电子工程专辑
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;GXaEETC-电子工程专辑
SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);GXaEETC-电子工程专辑
SMC_VLLSTRL = SMC_VLLSCTRL_LLSM(1);GXaEETC-电子工程专辑
dummyread = VLLS_CTRL;GXaEETC-电子工程专辑
Sleep_Deep();GXaEETC-电子工程专辑
}GXaEETC-电子工程专辑
讲到这里,你会发现微控制器已经几乎不消耗任何能量了!GXaEETC-电子工程专辑

低功耗模式对唤醒延迟的影响

正如我们目前所看到的那样,将处理器设置为越来越低的电源模式是节省能源的好方法,但这是需要付出代价的。处理器的能量状态越低,唤醒处理器恢复工作所需的时间就越长。例如,如果我使用标准停止模式,则处理器被唤醒并再次开始执行代码需要2μs加上中断延迟,这还可以接受。但是,如果在Kinetis-L上设置了其中一种VLLS模式,将需要启动处理器的唤醒延迟再加上额外的53到115微秒!有些应用可能无法接受这种状况。图2显示了Kinetis-L从低功耗模式到运行状态的各种转换。GXaEETC-电子工程专辑

GXaEETC-电子工程专辑
GXaEETC-电子工程专辑
图2:Kinetis-L从低功耗模式到各种模式的转换时间。 (来源:Kinetis-L数据表)GXaEETC-电子工程专辑

结论

Arm微控制器都具有标准的低功耗模式,但每个芯片厂商都会定制开发人员可用的更多低功耗模式。正如我们所看到的,芯片供应商通常会提供几种容易实现的模式,对唤醒延迟的影响最小。他们还会提供几种超低功耗模式,几乎可以关闭处理器并且仅消耗几百微安或更少能量!开发人员通常需要在能耗和系统被唤醒需要的时长以及响应事件的速度之间进行权衡。而权衡一定是基于应用的,所以不要指望能够在每个产品和应用上都执行最低功耗模式。GXaEETC-电子工程专辑

本文同步刊登于电子工程专辑杂志2019年8月刊GXaEETC-电子工程专辑

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
您可能感兴趣的文章
  • 干货:华为“鸿蒙”所涉及的微内核究竟是什么? 关于微内核的定义,这里有一份简单的描述:内核运行在内核态,只包含基本的多任务调度功能;其他系统服务都运行在用户态,包括文件系统,网络协议栈,甚至内存管理,驱动都是一个个独立的用户态进程,并相互做内存隔离。应用需要使用系统服务时,都通过IPC发送消息来使用其他用户态服务。
  • 电动汽车中的SiC开关将会主导动力传动系统吗? 宽带隙(WBG)半导体正被应用于包括电动汽车在内的各类功率转换器中。其承诺的更高效率和更快转换速率将节省成本、尺寸和能源,它通常被运用在充电器和辅助转换器中,但尚未在牵引逆变器中大量取代IGBT。本文将介绍最新一代SiC FET,因其提供低于IGBT的损耗以及在高温和多重应力下被证实的短路鲁棒性,而成为新型逆变器设计的绝佳选择。
  • 硬件安全在实现工业4.0愿望中的作用 涉及工厂数字化的工业4.0对工业市场领域的组织领导者来说有着不同的意义,随着工厂设备变得智能化和互联,数字化影响可能对网络安全产生广泛的影响。工厂的数字化正在改变价值链的各个方面,并直接影响企业的顶线和底线。
  • 112Gbps LR SerDes PHY采用CTLE和时间交错闪存ADC以降 目前最先进的112Gbps LR SerDes PHY要求最大限度地减少ADC位数,从而通过减少比较器的数量和最小化DSP中的位数来为整个系统提供最小的芯片面积和功耗开销。在这项设计工程中,CTLE的价值在于降低了所需的ADC分辨率。在CTLE电路和闪存ADC尺寸与数量之间寻找平衡点,对最小化ADC位数以实现最小系统面积和功耗开销起着关键作用。
  • 形式验证简介及其三种技术形式 形式验证是一种自动检查方法,它可以捕获许多常见的设计错误,并发现设计中的歧义之处。硬件系统有许多应用都至关重要,其产生的任何故障都可能导致极大的经济损失或物理损害。 本文将讨论形式验证及其各种技术形式。
  • 为物联网优化传感器网络设计 在当今对成本敏感的环境中,每个部署的传感设备或网络都必须在开发和部署的复杂性与物联网服务提供商、云计算公司和最终用户的价值之间取得平衡。在已部署的传感器网络中,我们现在看到的趋势是:简化网络并仅测量那些可以协助节省成本和/或增强最终用户体验的内容。
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告