新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 超低功耗嵌入式系统设计技巧

超低功耗嵌入式系统设计技巧

作者:时间:2010-09-26来源:网络收藏

3.1.5 低频工作方式
低功耗微处理器中几乎全部采用CMOS器件,而CMOS集成电路的结构决定了它的静态功耗几乎为零,仅在逻辑状态发生翻转的过程中电路中有电流流过。所以它的动态功耗和它的逻辑转换频率成正比,和电路的逻辑状态转换时间成正比。所以CMOS集成电路从降低功耗的角度上来说应当快速转换,低频工作。
当程序在Flash中运行,VDD=3.3 V时,LPCllxx处理器功耗如表2所列。
3.1.6 转换芯片选择
手持设备一般是由电池供电,为获得较长的电池使用时间,一般采用DC/DC开关或LDO(Low Drop Outregulatot,低压差线性稳压器)。在价格允许的前提下,最好选择那些效率高、静态电流小,并且有使能端的芯片。效率高是为了减少电池能量在转化的过程中造成的损失。静态电流小可以减小芯片在待机状态的漏电流功耗。选择具有使能端的芯片可以利用微处理器进行关断控制,有利于独立供电支路功耗的管理。凌力尔特公司的DC/DC芯片LTC3417具有高达95%的效率和低于1μA的静态电流,已经在作者的有源手持机项目中得到了应用,取得
了显著的低功耗效果。
3.1.7 I/O引脚供电
可以直接利用嵌入式微处理器的I/0引脚为外部设备提供,如图5所示,只要这些I/O接口的驱动能力足以驱动外部设备。

本文引用地址:http://www.eepw.com.cn/article/151493.htm

2i.JPG


3.1.8 MCU时钟
单片机的工作频率和功耗的关系很大,频率越高功耗越大。处理器动态改变CPU时钟的具体做法是:在CPU等事件发生时,引脚输出低电平,增大电阻将会降低内部的时钟的频率;当需要处理事务时,输出高电平减小电阻,提高时钟频率。实现这一技术的方法如图6所示。当CPU处于等待状态下可以将I/O引脚输出低电平,此时内部时钟频率降低;当CPU需要处理事务的时候,通过将I/O引脚设定为输出高电平,电阻Rl的加入将提高时钟频率。

2j.JPG


3.1.9 未用引脚
处理好处理器和CMOS芯片未用的输入引脚。若未用的处理器引脚不加以处理,很容易造成电荷积累。根据电量与电容C和电压U的关系Q=C·U可知,当电荷的累积Q与电容C可比的情况下,就会产生影响引脚电平状态的U,这个电平会随着电荷的累积而导致数字逻辑状态在“O”和“1”之间变化,当输入引脚电平处于O、1之间的过渡区时,会使电路中反相器的P管和N管都处于导通状态,导致功耗大大增加。
CMOS电路未用的引脚,一般采取加上拉电阻(1~10 kΩ)的方法处理,为节能起见,阻值要取大一些。
3.1.10 局部电路的节电技巧
①采用RC振荡器比晶体振荡器或锁相环更省电。
②接口电平要尽量匹配,以减少电平匹配电路带来的额外功耗。
③在保证驱动能力的前提下,电路中应尽可能采用阻值较大的上拉/下拉电阻,以减小在电阻上的能量消耗。
④如果允许,适当降低外部驱动引脚的电压。
⑤选择合适的驱动接口参数,以减小缓冲器的使用量。
⑥少用驱动电阻或双极晶体管,这些器件需维持恒定的电流,从而增加了电能消耗。
3.2 软件方面
3.2.1 避免查询方式和延时
A/D转换器在采集少量的数据时,MCU读取A/D转换数据的方式有2种:查询方式和中断方式。查询方式和中断方式的低功耗特性相差甚远:使用中断方式,MCU可以什么都不做,甚至可以进入待机或者停止模式;而查询方式下,MCU必须不停地读取I/O端口寄存器,消耗很多额外的功耗。
如果系统的定时器资源充裕,在需要定时的场合,最好采用硬件定时器,当定时器到了定时时间后,向MCU发出中断请求信号,这样可以减少MCU的工作时间,进而可以节省功耗。
3.2.2 运行管理
①动态电源管理(Dynamic Power Management,DPM)。有选择地把闲置的系统部分置于低功耗状态,从而有效地利用电能。充分利用处理器和外围电路的低功耗工作模式,当系统和外围电路不工作的时候,软件设计时应该使处理器和外围电路及时地进入待机或者休眠模式。可选择关断CPU时钟或系统时钟,对时钟的控制要做到忙时多用、闲时少用、不用关断。
②间歇性使用电路的控制。对于间歇性使用的外围电路,在软件控制中通过片选使能端控制其工作时间。在某些功能没有使用到时,适时地将嵌入式处理内部电路的全部或部分关断,或者进入睡眠或待机状态,同时关闭不用的外围接口电路,如串口、ADC/DAC、I2C、SPI、PWM等电路。
③未用I/0引脚的软件处理。对于未用的处理器I/O引脚,软件中也要进行初始化,若不进行初始化,将有可能会增加单片机的漏电流,最好将其设置为输入或者输出,且接一个固定的电平。
3.2.3 用宏代替子程序
宏是在编译器预处理阶段进行替代,而子程序调用中MCU需要进行现场保护。进入子程序之前要将当前的MCU寄存器压入RAM中分配的栈,在离开的时候,要把栈中的内容弹出来恢复MCU的寄存器,这样至少会带来2次对RAM的操作。尽管用宏增加了代码的长度,但是加快了代码执行的速度,对于目前很多MCU来说,代码的Flash空间根本不是大问题,这种做法将会在一定程度上降低系统功耗。
3.2.4 采用高效率算法
①用查表的方法代替实时的计算。特别是在没有硬件浮点处理单元的MCU进行浮点处理的时候,直接用MCU进行浮点处理将会消耗大量的时间。如果将一些运算的结果事先计算好,存储在程序存储器的代码段中,在需要某个数据时用查表的办法把数据取出来,可以减少MCU的运算量,有效地降低MCU的功耗。这种处理方法在离散余弦变换和A/D数据采集中能够带来可观的效率提升。
②用移位运算代替乘除法运算。用MCU计算乘除法也是非常耗时的事情,如果尽可能避免直接的乘除运算,而采用左移和右移的办法来实现,将会减少运算时间,进而节省功耗。如要进行y=x·15的运算,可以转化为x4-x。对于特殊的除法,要采取右移的办法。如3000÷256可以直接转化为3 000>>8。当然,除法的移位计算只能针对除数比较特殊的时候。
③采用快速算法。在搜索算法中,使用二分搜索算法和分段查找算法的效率是不同的。理论上可以估算,在1 024个测量值的查找中,二分搜索最坏情况下10次可以查找到结果,顺序搜索最坏可能需要1 024次。这个在测量数值更多的情况下更为突出,一个高效率的查找算法有
助于减小程序运行功耗。数字信号处理中的运算,采用FFT和快速卷积等,可以节省大量运算时间,从而减少功耗。
④在精度允许的情况下,使用简单函数代替复杂函数作近似也是减少功耗的一种方法。


上一页 1 2 3 下一页

关键词: 电源

评论


相关推荐

技术专区

关闭