微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MCU低功耗设计(一)理论

MCU低功耗设计(一)理论

时间:11-11 来源:互联网 点击:

一.MCU耗能因素

现代的MCU一般使用CMOS技术,耗能包括2方面:

静态消耗 主要是晶体管消耗能量;

动态消耗 公式=C×V2×f,其中C是CMOS的负载电容,V是供电电压,f是时钟频率;

总电能消耗是静态消耗和动态消耗之和,即:IDD=f×IDynamicRun[uA/MHz]+IStatic[uA].

因此,电能消耗依赖于:

MCU芯片尺寸 或者说晶体管的数目;

MCU供电电压 降低电压可以成平方级别地降低电能消耗;

时钟频率 可以把时钟频率降低到刚好满足应用需要;

外设数目 使能的外设越多,耗能越大;

运行模式 合理选择工作模式可以大幅节能,如,全速工作极短时间后进入睡眠模式。

二.节能方法

1.关闭不需要使用的外设;

2.所有未使用的引脚必须连接到一个确定的逻辑电平;

3.当有外设必须保持激活时,使用Wait模式来获得低功耗

4.使用合适的VDD值;

5.尽可能地使用低功耗运行模式;

6.如果不能使用低功耗模式,那就将主频降低到满足应用的最小值;

7.如果可能,使用动态控制I/O引脚的上拉功能。

三.低功耗模式

支持低功耗的MCU一般都有好几种运行模式,以ST公司的STM8L为例,它支持5种低功耗模式:等待、低功耗运行、低功耗等待、主动停止和停止。每一种模式的进入方式,节能级别和外设工作要求,总结表1:

表1STM8L低功耗运行模式

模式

等待

低功耗运行

低功耗等待

主动停止

停止

入口

WFI

WFE

软件代码

软件代码+WFE

HALT

HALT

晶振

LSI或LSE

LSI或LSE

LSI或LSE

CPU

外设

关,仅RTC开

唤醒

所有内部和外部中断,复位

所有内部和外部中断,复位,唤醒事件

软件代码,复位

内部和外部事件,复位

外部中断,RTC中断,复位

外部中断,复位

电压调节器

MVR

MVR

ULP

ULP

CLK_ICKCR

ULP

程序执行区

FLASH

FLASH

RAM

RAM

FLASH

FLASH

FLASH+E2

中断

允许

允许

禁止

禁止

允许

允许

中断服务后 返回状态

AL=0:main

AL=1:WFI

WFE

/

/

AL=0:main

AL=1主动停止

AL=0:main

AL=1:停止

事件处理后 返回状态

/

Main

/

低功耗运行

/

/

RAM+寄存器

保留

保留

保留

保留

保留

保留

@3V/25℃

5.9uA

5.4uA

3.3uA

1.0uA

0.4uA

特殊事项

/

/

禁止ADC

/

清除外设悬挂中断标志位

上述低功耗运行模式对于开发者来说有点多,尤其刚接触STM8L处理器。我们需要一般性的指导原则,表2是来源于实践的经验。

表2选择合理的STM8L节能模式

节能要求

应用场合

睡眠时长

唤醒方式

恢复时长

运行模式

苛刻

CPU空闲,等待外部信号唤醒

外部中断

≥2.8us

HALT

苛刻

CPU空闲,等待时钟周期唤醒

RTC周期

≥2.8us

Active-halt

严格

CPU有持续、微负荷任务运行

/

/

≥2.8us

低功耗运行

严格

CPU短暂等待中断发生

任意中断

等待中断

严格

CPU短暂等待事件发生

注册事件

等待事件

需要

CPU有持续、轻负荷任务运行

/

/

/

调整主频

四.鲜为人知的技巧

1. 使用Wait替换查询方式达到节能目的

常见的查询方式如下,此时CPU无事可干,白白消耗电能。

ADC_CR1 = ADC_START; /* start conversion */

while (!(ADC_SR & ADC_SR_EOC)) ; /* wait for EOC bit set */

可以使用等待事件的方式来节省电能。

先配置ADC为事件源,并使能相应的中断:

WFE_CR2 = ADC_COMP_EV; /* enable ADC as a source of event */

ADC_CR1 = ADC_EOCIE; /* enable interrupt for end of conversion */

当ADC转换完成后,唤醒处于等待的CPU:

ADC_CR1 = ADC_START; /* start conversion */

_asm(“wfe”); /* enter wait mode until waked by ADC_EOCIE*/

2. 无须上下文切换的中断模式

应用程序设计时,如果所有中断事件由ISR完成,可以通过将CFG_GCR寄存器中AL位置1来节省电能:避免保存/恢复context、无须主程序运行(返回到WFI模式),如下图1所示。

图1 WFI模式下中断无须上下文切换

将AL位置1节省电能的方法同样可以用于HALT模式,原理如下图2所示。

图2HALT模式下中断无须上下文切换

3. 动态设置I/O口的上拉功能

很多应用需要按键作为人机接口,按键一般连接到I/O上。当按键没有动作时I/O口设置内部上拉而获得确定的逻辑电平;一旦按键按下,I/O口对地导通将产生额外的40~70uA电流,这对于电池供电的低功耗来说是十分重要的。

可以动态地控制I/O口的上拉达到节能的目的:一旦按键按下,中断服务程序将禁止该I/O口的上拉功能;然后软件定时执行—先使能上拉功能,再检测I/O口状态,如果按键仍按下再次禁止上拉功能,否则使能I/O口的上拉功能。整个逻辑如下图3所示:

图3 动态设置I/O口的上拉而节能

4. CPU空闲节能策略

CPU的空闲节能如下图4所示,它的逻辑包括以下几个步骤:

(1)发现CPU空闲:带OS系统,表现为任务没有事件需要响应,或者

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top