Rime® 锐米通信
Rime® 研发经验
MCU 低功耗设计(一)理论
一. 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 引脚的上拉功能。
© 2015 Rime® Technology Inc. page -1
Rime® 锐米通信
三.低功耗模式
支持低功耗的 MCU 一般都有好几种运行模式,以 ST 公司的 STM8L 为例,它支持
5 种低功耗模式:等待、低功耗运行、低功耗等待、主动停止和停止。每一种模
式的进入方式,节能级别和外设工作要求,总结表 1:
表 1 STM8L 低功耗运行模式
模式
入口
晶振
CPU
外设
唤醒
等待
低功耗运行 低功耗等待 主动停止
停止
WFI
WFE
软件代码
软 件 代 码
HALT
HALT
+WFE
LSI 或 LSE
LSI 或 LSE
LSI 或 LSE
开
关
开
开
关
开
开
开
关
开
关
关
关
关,仅 RTC 开 关
所 有 内 部 和
所 有 内 部
软件代码,
内 部 和 外 部
外 部 中 断 ,
外 部 中断 ,
外 部 中 断 ,
和 外 部 中
复位
事件,复位
RTC 中断,复
复位
复位
断,复位,
唤醒事件
位
电压调节器
MVR
MVR
ULP
ULP
CLK_ICKCR
ULP
程序执行区
FLASH
FLASH
RAM
RAM
FLASH
FLASH
FLASH+E2 开
开
关
关
关
中断
允许
允许
禁止
禁止
允许
关
允许
中 断 服 务 后
AL=0:main
WFE
返回状态
AL=1:WFI
事 件 处 理 后
/
Main
/
/
/
AL=0:main
AL=0:main
AL=1 主动停止
AL=1:停止
低功耗运行
/
/
© 2015 Rime® Technology Inc. page -2
Rime® 锐米通信
返回状态
RAM+寄存器 保留
保留
保留
保留
保留
保留
@3V/25℃
5.9uA
5.4uA
3.3uA
1.0uA
0.4uA
特殊事项
/
/
禁止 ADC
/
清除外设悬挂中断标志位
上述低功耗运行模式对于开发者来说有点多,尤其刚接触 STM8L 处理器。我们需
要一般性的指导原则,表 2 是来源于实践的经验。
表 2 选择合理的 STM8L 节能模式
节能要求
应用场合
睡眠时长 唤醒方式
恢复时长
运行模式
苛刻
CPU 空闲,等待外部信号唤醒
苛刻
CPU 空闲,等待时钟周期唤醒
长
长
外部中断
≥2.8us
HALT
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 为事件源,并使能相应的中断:
© 2015 Rime® Technology Inc. page -3
Rime® 锐米通信
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 所示。
time main
WFI
ISR
time main
WFI
ISR
WFI
WFI
Int
save context
do job
IRET
restore context
WFI
do job
Int
IRET
节省
电能
CFG_GCR.AL=0
CFG_GCR.AL=1
图 1 WFI 模式下中断无须上下文切换
将 AL 位置 1 节省电能的方法同样可以用于 HALT 模式,原理如下图 2 所示。
time main
HALT
ISR
time main
HALT
ISR
HALT
HALT
Int
save context
do job
IRET
restore context
HALT
do job
Int
IRET
节省
电能
CFG_GCR.AL=0
CFG_GCR.AL=1
© 2015 Rime® Technology Inc. page -4
Rime® 锐米通信
图 2 HALT 模式下中断无须上下文切换
3. 动态设置 I/O 口的上拉功能
很多应用需要按键作为人机接口,按键一般连接到 I/O 上。当按键没有动作时 I/O
口设置内部上拉而获得确定的逻辑电平;一旦按键按下,I/O 口对地导通将产生
额外的 40~70uA 电流,这对于电池供电的低功耗来说是十分重要的。
可以动态地控制 I/O 口的上拉达到节能的目的:一旦按键按下,中断服务程序将
禁止该 I/O 口的上拉功能;然后软件定时执行—先使能上拉功能,再检测 I/O 口
状态,如果按键仍按下再次禁止上拉功能,否则使能 I/O 口的上拉功能。整个逻
辑如下图 3 所示:
time
Button
Software
I/O
press
Int
disable pull-up
enable pull-up
check
disable pull-up
Int
release
enable
pull-up
节
省
电
能
图 3 动态设置 I/O 口的上拉而节能
4. CPU 空闲节能策略
CPU 的空闲节能如下图 4 所示,它的逻辑包括以下几个步骤:
(1)发现 CPU 空闲:带 OS 系统,表现为任务没有事件需要响应,或者进入 idle
进程;无 OS 系统,表现为程序运行结束。
(2) 选择一种合适的 CPU 节能模式:chip_EnterLowPower()完成进入节能前的
准备工作,包括:关闭外设,切换 I/O 引脚到节能状态。
© 2015 Rime® Technology Inc. page -5
Rime® 锐米通信
(3) 退出节能模式需要调用 chip_ExitLowPower(),可能发生在以下 2 种情形:
a. 需要使用被关闭外设的 ISR:
b. 由 process 直接退出;
chip_ExitLowPower()的善后工作包括:使能外设,切换 I/O 引脚到工作状态。
同时为避免 ISR 和 process 两次操作 chip_ExitLowPower(),该函数设置了状态
变量避免重复退出。
Ti
Tj
Tk
Tl
Tm
time
process
ISR_i
ISR_j
EnterLP
EnterLP
ExitLP
ExitLP
CPU
run
idle
run
idle
run
图 4 CPU 空闲节能策略
© 2015 Rime® Technology Inc. page -6
Rime® 锐米通信
Rime® 研发经验
联系我们
公司名称:长沙市锐米通信科技有限公司
公司网站:www.rimelink.com
邮箱地址:sales@rimelink.com
联系电话:0731-82231246
公司地址:长沙市普瑞大道 278 号 48 栋 2504
作者简介:
蒋俊,男,硕士研究生,现任长沙市锐米通信科技有限公司 CEO。
从事通信研究与嵌入式开发 10 年,主攻微功率无线网络。
精通 LoRa 无线扩频通信,无线星型/树型/MESH 网络设计;
通晓 Contiki,Linux,uC/OS-II,OSAL 等操作系统;
熟悉 ARM,DSP,STM8,PIC,PC104 等处理器;
擅长 AD,RF 等集成 IC 开发。
Web: www.rimelink.com
EMail: jiangjunjie_2005@126.com
QQ 群:35212129
相关文章:
《MCU 低功耗设计(二)实践》
《MCU 低功耗设计(三)产品》
© 2015 Rime® Technology Inc. page -7