我们的设备功耗能到多低?
扫描二维码
随时随地手机看文章
我们探索了可以在每个Arm Cortex-M处理器上找到的低功率模式的基本原理,以及我们如何利用WFI和WFE说明来使处理器放置。真正存在的问题是,这些低功率模式如何在真实的微控制器上实现,这些模式如何影响我们的嵌入式系统?在这篇文章中,我们将更详细地探讨如何使微控制器入睡,并查看购买我们多少能量。
低功率模式实验
探索低功率模式的最佳方法是选择一个微控制器,并实际以各种低功率模式运行处理器。在这篇文章中,我决定除去我久经考验的NXP Kinetis-L自由委员会,我不仅尝试过,而且在许多产品,应用程序和课程中都使用过。我还决定,对与错,不仅要衡量微控制器所绘制的能量,而且要衡量整个开发委员会的能量。 MCU通常是董事会上最渴望的设备之一,但是我经常发现测量整个系统电流提醒我,这并不是板上唯一的能源消费者。优化微控制器可以带您很长的路要走,但这并不总是可能需要优化能量的唯一设备。
从基线测量开始
每当我努力优化产品的能源消耗时,我首先要进行基线能量测量。通常,这是通过在几秒钟或几分钟内分析设备的当前抽签来理解我们在哪里开始的方法来完成的。在我的开发板实验中,我将Kinetis-L保持在运行模式下,没有实现睡眠,所有外围设备都会放在板上,并设置板定期切换LED。使用I-JET调试器和I-Scope的IAR嵌入式工作台,当LED关闭时,我能够为董事会介绍一个简单的基线〜16.9 mA,而当LED在下面可以看到的LED时约为18.0 mA。如您所见,您可以从或者从其他地方进行测量值,您可以在分析中进行分析。
通过等待和深度睡眠模式优化能量
看到节省能源的最快方法是实施等待或深度睡眠模式。对Kinetis-L处理器的数据表的检查表明,等待模式在3伏特的3.7和5.0 mA之间绘制。在此模式下,CPU和外围时钟被禁用,但闪存处于打ze式模式,该模式使处理器仍然可以在中断的时间范围内醒来(12 - 15个时钟周期)。等待模式易于实现,可以在下面看到要输入等待模式的代码:
void sleep_wait(void)
{
scb_scr&= 〜scb_scr_sleepdeep_mask;
ASM(“ WFI”);
}
只有这两条代码,开发委员会的当前消耗量从18.0 MA下降到15.9 MA。当前消费量下降了11.6%!如果板由680 mA电池供电,则该设备的电池寿命将从37.8小时到42.8小时!仅与两行代码相比增加了五个小时!
这些高级功率模式的伟大是,我们可以轻松地进一步迈出一步。我们可以使用以下代码将处理器纳入等待模式,而是将其移至深度睡眠等待模式:
void sleep_deep(void)
{
scb_scr | = scb_scr_sleepdeep_mask;
ASM(“ WFI”);
}
我们所做的只是在SCB_SCR寄存器中调整一个位,现在我们已经从原始的18 mA电流平局变为14.8 mA。当前消费量下降了17.8%!同样,假设板由680 mA电池供电,现在电池寿命将从37.8小时到46小时!这些仅用于几行代码,只是冰山一角!
利用stop and vlls模式用于UA当前抽奖
使用停止模式有可能通过禁用核心和系统时钟进一步将MCU电流绘制到另外两毫安中。您会发现的是,功率模式越低,实现它所需的代码越多,并且代码唤醒系统备份的代码就越复杂。在Kinetis-L上输入停止模式的代码可以在下面看到:
void sleep_stop(void)
{
挥发性unsigned int dummyRead = 0;
smc_pmctrl&= 〜smc_pmctrl_stopm_mask;
smc_pmctrl | = smc_pmctrl_stopm(0);
dummyRead = smc_pmctrl;
sleep_deep();
}
请注意,通过电源管理控制寄存器控制停止模式,一旦设置了状态,就会调用Sleep_Deep功能以完成设置电源模式并执行WFI。
到目前为止,我们一直在谈论MCU图1-2 mA。现代的微控制器将具有可以吸引微型甚至纳米压缩的功率模式! Kinetis-L处理器在2013年左右首次亮相,其非常低的泄漏停止(VLLS)模式仅吸引135至496个微型。可以在下面看到初始化此功率模式的代码:
void sleep_vlls1(void)
{
挥发性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 US加上中断延迟才能使处理器醒来并再次开始执行代码。还不错。但是,如果我要在kinetis-l上使用一种VLLS模式,那么我将有一个唤醒延迟,可以启动处理器以及另外53至115微秒!根据申请,这可能是不可接受的。
结论
ARM MicroController都将具有标准的低功率模式,但是每个硅供应商都会自定义开发人员可用的低功率模式。如我们所见,硅供应商经常提供多种模式,这些模式是低悬挂的水果,对唤醒潜伏期的影响最小。他们还提供了几种非常低的功率模式,几乎将处理器关闭,并仅绘制几百个或更少的微型!开发人员通常需要平衡他们想要汲取的能量的数量与他们需要的速度醒来并响应事件的速度。权衡绝对是专门应用程序的,因此不要期望能够在每个产品和应用程序上运行最低的功率模式。