1 / 15
文档名称:

MCU低功耗设计理论.docx

格式:docx   大小:227KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MCU低功耗设计理论.docx

上传人:科技星球 2022/3/7 文件大小:227 KB

下载得到文件列表

MCU低功耗设计理论.docx

相关文档

文档介绍

文档介绍:MCU低功耗设计理论
 
 
MCU低功耗设计(一)理论
关键词:MCU低功耗, STM8L低功耗, 节能技巧
一.MCU耗能因素
现代的MCU一般使用CMOS技术,耗能包括2方面:
静态消耗 主要是晶体管消耗能量;
ULP
ULP
CLK_ICKCR
ULP
程序执行区
FLASH
FLASH
RAM
RAM
FLASH
FLASH
FLASH+E2






中断
允许
允许
禁止
禁止
允许
允许
中断服务后 返回状态
AL=0:main
WFE
/
/
AL=0:main
AL=1主动停止
AL=0:main
AL=1:WFI
AL=1:停止
事件处理后 返回状态
/
Main
/
低功耗运行
/
/
RAM+寄存器
保留
保留
保留
保留
保留
保留
***@3V/25℃





特殊事项
/
/
禁止ADC
/
清除外设悬挂中断标志位
 
上述低功耗运行模式对于开发者来说有点多,尤其刚接触STM8L处理器。我们需要一般性的指导原则,表2是来源于实践的经验。
表2 选择合理的STM8L节能模式
节能要求
应用场合
睡眠时长
唤醒方式
恢复时长
运行模式
苛刻
CPU空闲,等待外部信号唤醒

外部中断

HALT
苛刻
CPU

RTC

Active-halt
空闲,等待时钟周期唤醒
周期
严格
CPU有持续、微负荷任务运行
/
/

低功耗运行
严格
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所示。
图2 HALT模式下中断无须上下文切换
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系统,表现为任务没有事件需要响应,或者进入idle进程;无OS系统,表现为程序运行结束。
(2) 选择一种合适的CPU节能模式:chip_EnterLowPower()完成进入节能前的准备工作,包括:关闭外设,切换I/O引脚到节能状态。
(3) 退出节能模式需要调用chip_ExitLowPower(),可能发生在以下2种