当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]我们探索了可以在每个Arm Cortex-M处理器上找到的低功率模式的基本原理,以及我们如何利用WFI和WFE说明来使处理器放置。真正存在的问题是,这些低功率模式如何在真实的微控制器上实现,这些模式如何影响我们的嵌入式系统?在这篇文章中,我们将更详细地探讨如何使微控制器入睡,并查看购买我们多少能量。

我们探索了可以在每个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都将具有标准的低功率模式,但是每个硅供应商都会自定义开发人员可用的低功率模式。如我们所见,硅供应商经常提供多种模式,这些模式是低悬挂的水果,对唤醒潜伏期的影响最小。他们还提供了几种非常低的功率模式,几乎将处理器关闭,并仅绘制几百个或更少的微型!开发人员通常需要平衡他们想要汲取的能量的数量与他们需要的速度醒来并响应事件的速度。权衡绝对是专门应用程序的,因此不要期望能够在每个产品和应用程序上运行最低的功率模式。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭