想学习低功耗设计吗?让我们看一下MCU低功耗设计实例
在可比性能的条件下,低功耗产品通常更受欢迎。
但是,低功率产品的价格往往会更高一些。
在上一篇文章中,编辑介绍了功耗和其他知识的组成。
为了增进大家对功耗的理解,本文将介绍MCU功耗的原因,并分析如何实现MCU的低功耗设计。
如果您对电源相关的内容感兴趣,不妨继续阅读。
1. MCU的能耗因素现代MCU通常采用CMOS技术,能耗主要包括两个方面:静态能耗主要是晶体管消耗的能量。
动态消耗公式= C& TImes; V2& amp; TImes; f,其中C是CMOS的负载电容,V是电源电压,f是时钟频率;总功耗是静态功耗和动态功耗的总和,即:IDD = f& TImes; IDynamicRun [uA / MHz] + IStaTIc [uA]。
因此,功耗取决于:MCU芯片尺寸或晶体管数量; MCU电源电压的降低可以将功耗降低平方级;时钟频率可以降低时钟频率以满足应用需求;启用了外围设备数量。
设置越多,能耗就越大;合理选择运行模式可以大大节省能源,例如,它在短时间内全速工作后进入睡眠模式。
2.节能方法1.关闭不需要使用的外围设备; 2.所有未使用的引脚必须连接到一定的逻辑电平; 3.当必须使外围设备保持活动状态时,请使用等待模式以获取低功耗。
4.使用适当的VDD值;否则,请使用VDD。
5.尽可能使用低功耗工作模式; 6.如果无法使用低功率模式,则将主频率降低到适合应用的最小值; 7.如果可能,请使用动态控制I / O引脚的上拉功能。
3.支持低功耗的低功耗模式MCU通常具有几种工作模式。
以ST的STM8L为例,它支持5种低功率模式:等待,低功率运行,低功率等待,主动停止和停止。
表1总结了每种模式的进入方法,节能水平和外围工作要求:表1 STM8L低功耗工作模式上述低功耗工作模式对开发人员(尤其是刚接触新开发人员的开发人员)来说要多一些到STM8L处理器。
我们需要一般准则。
表2是从实践经验得出的。
表2选择合理的STM8L节能模式IV。
鲜为人知的技术1.使用等待替换查询方法以达到节能目的。
常见的查询方法如下。
这时,CPU无所事事,并且白白消耗了功率。
ADC_CR1 = ADC_START; / *开始转换* / while(!(ADC_SR& ADC_SR_EOC)); / *等待EOC位置* /您可以使用等待事件以节省电量。
首先将ADC配置为事件源并启用相应的中断:WFE_CR2 = ADC_COMP_EV; / *使ADC成为事件的源* / ADC_CR1 = ADC_EOCIE; / *启用中断以结束转换* /当ADC转换完成时,唤醒等待的CPU:ADC_CR1 = ADC_START; / *开始转换* / _ asm(“ wfe”); / *进入等待模式,直到被ADC_EOCIE * / 2唤醒。
在没有上下文切换的中断模式应用程序设计中,如果所有中断事件均由ISR完成,则可以通过将CFG_GCR寄存器中的AL位设置为1来节省功耗:避免保存/恢复上下文,而无需运行主程序(返回进入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的上拉功能禁用O端口已启用。
整个逻辑如下图3所示:图3动态设置上拉电阻