二、降落MCU功耗
平时我们在做产品的时候,基本的功能实现很大略,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够赶过标准几百到上千倍,碰着这种情形千万不要怕,只要负责你就赢了。下边咱们仔细剖析一下这个中的缘故原由。
第一条:掐断外设命脉——关闭外设时钟
先说最直不雅观的,也是工程师都比较把稳的方面,便是关闭MCU的外设时钟,对付现在市情上涌现的大多数的MCU,其外设模块都对应着一个时钟开关。只须要打开这个外设的时钟,就可以正常的利用这个外设了,当然,此外设也就会产生相应的功耗;反之,如果想要让这个外设不产生功耗,只需关闭它的时钟即可。
第二条:让事情节奏慢下来——时钟不要倍频
除了外设模块功率花费之外,还有一个功耗大户须要把稳一下,这便是PLL和FLL模块。PLL和FLL紧张是用来对原始的时钟旗子暗记进行倍频操作,从而提高系统的整体时钟,相应的,其功耗也会被提上去。以是在进入低功耗之前,须要切换是种模式,旁路掉PLL和FLL模块,从而尽可能的降落MCU的功耗,等到MCU唤醒之后再把时钟切换回去。
第三条:围堵涓涓细流——把稳I/O口的电平状态
如果认为只要关闭外设时钟就能够担保外设不再耗电,那么你就太天真了。如果IO口没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。详细缘故原由是这样的,一样平常的IO的内部或者外部都会有高下拉电阻,举个例子,如下图所示,如果某个IO口有个10KΩ的上拉电阻,把引脚拉到3.3V,然而当MCU进入低功耗模式的时候,此IO口被设置成输出低电平,根据欧姆定律,此引脚就会花费3.3V/10K=0.33mA的电流,假如有四、五个这样的IO口,那么几个mA就贴进去了,太可惜了。以是在进入低功耗之前,请逐个检讨IO口的状态:
如果此IO口带上拉,请设置为高电平输出或者高阻态输入;
如果此IO口带下拉,请设置为低电平输出或者高阻态输入;
总之一句话,不要把上好的电流浪费在产生热量的功能上,咱可不靠这点温度去暖手。
第四条:睦邻友好互助——把稳I/O与外设IC的统筹
IO口的高下拉电阻花费电流这一成分相比拟较明显,下边咱来说一个不明显的成分:IO口与外部IC相连时的电流花费。如果某个IO口自带上拉,而此与IO相连的IC引脚偏偏是自带下拉的,那么无论这个引脚处于什么样的电平输出,都不可避免的产生一定的电流花费。以是凡是遇见这一类的情形,首先须要阅读外设IC的手册,确定好此引脚的的状态,做到心中有数;然后在掌握MCU就寝之前,设置好MCU的IO口的高下拉模式及输入输出状态,要担保一丝儿电流都不要被它花费掉。
第五条:断开调试器连接,不要被假象所迷惑
还有一类比较奇特,检测出来的电流花费很大,可实际结果是自己杞人忧天,什么缘故原由呢?是由于在测试功耗的时候MCU还连接着调试器呢!
这时候大部分电流就会被调试器给掳走,平白无端的让工程师产生极度忧郁的心情。以是在测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。
MCU的低功耗设计是一个细致活,要养成良好的习气,做到每添加一个功能都要重新验证一下低功耗是否符合哀求,这样就可以随时随地干掉花费功率的成分。如果把所有功能都设计好了才去考虑低功耗的问题,一个欠妥心,就可能要变动程序的架构——即便如此也不一定能把功耗给彻底降下去。