浅谈单片机低功耗
最近做的几个项目,都是锂电供电的,对于电池供电的应用来说,低功耗是无法避开的。不少半导体公司特意推出超低功耗系列单片机,比如TI MSP430系列,ST STMxxL系列等。
单片机一般都提供多种电源模式,常见的有运行模式、空闲模式和休眠模式。除了运行模式,其它的都可以统称为低功耗模式。以某个单片机的手册参数来对比下不同模式下的电流。
1 运行模式系统时钟和内部的模块都在活动状态,运行模式下也可以通过降频、关闭不需要的外设时钟等方式降低工作时的功耗。
系统工作在48MHz频率下,所有外设模块都关闭时,电流高达8.5mA,当降频至12MHz时,电流约3.6mA, 下降很明显。
2 空闲模式
仅禁止系统时钟,其它的模块仍在活动状态,任意中断可唤醒。在空闲模式下,RAM和特殊功能寄存器保持,但如果定时器在运行,定时计数寄存器值会增加。空闲模式下功耗比正常模式有大幅降低。
系统工作在48MHz频率下,所有外设模块都关闭时,进入空闲模式后电流约为3.3mA,还不到正常模式的一半。
3 掉电模式
系统时钟、内部模块都停止运行,只有RAM中的数据保持。也有不少MCU提供内部低速RC震荡器或支持外部低速时钟,如果使能了低速时钟,那么由低速时钟驱动的模块依然可以在掉电模式下运行,比如定时器,RTC模块等。
进入掉电模式后,电流下降到uA级,当然这款只是普通的单片机,并不是低功耗系列的,低功耗系列的单片机在掉电模式下一般可以到1uA以下。
4 掉电模式控制
对于电池供电应用,mA级耗电肯定是不满足需求的,我们着重分析下掉电模式处理。
(1)内部模块
进入掉电模式后,会自动关闭主时钟,以及使用该时钟驱动的外设模块。如SPI、高速定时器等。
内部模拟电路有独立的供电,需手动关闭ADC、模拟比较器 等模拟电路。
关闭内部电压监测功能,如低压复位、掉电检测电路。
低速时钟如不需要也要关闭,否则使用该时钟的模块(看门狗或通用定时器等)依然在运行。如果使用了RTC模块需要在掉电模式下也能计时,不要停止RTC的驱动时钟。
(2)引脚控制
输出IO,输出高电平或低电平的原则 是切断电流输出或流入。
输入IO,根据外部驱动情况选择高阻输入(外部输入电平是固定的)或上下拉。
悬空的引脚处理,配置为高阻输入时,抗干扰较差,可能会漏电,应配置为固定电平。
下载器时钟与信号,禁止下载功能,将引脚配置为IO模式,输出低电平。唤醒后可恢复为下载功能。
(3)唤醒配置
在进入掉电模式前,要配置好唤醒源及唤醒方式,常用的有IO输入中断唤醒、外部中断唤醒、内部通信模块事件唤醒等,在唤醒后要恢复正常功能。有些特殊的应用需要定时唤醒,比如蓝牙。
十年硬件老司机,结合实际案例,带你探索单片机低功耗设计
经过了多年的低功耗硬件设计 (公司硬件设计和软件设计是分开的,我一直是做硬件,在面对低功耗生产事故中做硬件的往往很苦逼),其中容易出的一个问题是单片机进睡眠模式前IO没配好 ,产品上主要出的问题是这些出问题的IO比较隐蔽,当时经过多次测试也没测试出来,后来在生产或现场才发现的概率性功耗偏大 的问题。
站在硬件的角度,最近才意识到原来软件上一直容易犯的一个毛病是进睡眠前没有把所有IO重新配置一遍 ,这样容易导致IO低功耗的BUG出现。
这个心得总结起来是:要求在进睡眠模式前把所用的单片机的所有的IO从代码上1个IO接1个IO的配置一遍。不要偷懒,不要多个IO一起配置。
分析 :
外设时钟
外设的时钟没关,单片机内部模块没关等,部分单片机进睡眠后自动会关闭,部分不会自动关闭的,没关的话当场测试功耗就偏高,会马上发现的。所以这些在实际生产中都没出过问题。
IO配置
1个IO接1个IO配置,不要多个IO用类似BIT1|BIT2……,|=0xxx这类一起配置。因为代码上越是直观,出现笔误的概率越低。 而且我们核对IO的时候都是一个IO一个IO的去核对配置对不对。所以代码上依次写一下其实花了不了多少时间和代码空间的。花个5到30分钟撑死,但是后续节省的时间和金钱就不好说了。人的总是有惰性的,我自己写代码的时候之前进低功耗前也只是配置了一部分,现在慢慢开始习惯全部配置 ,很多配置可以复制之前的IO初始化(这个已经养成了1个IO,1个IO的配置,改起来其实很舒服的)。
案例分析
实际出现的最麻烦,最隐蔽的情况往往跟IO的配置有关,越简单的往往越容易出问题。
1、比如大多数情况下程序从A子程序进入睡眠后IO配置没问题,经过大量测试也没发现问题。但是当某次执行了B后再进睡眠,B中对IO进行了操作,再进睡眠没有把IO改回来 ,这时问题就可能出现了。而要是执行C,D……等程序再睡眠都不会出IO的隐患。
案例: 产品在客户那里发现有50%左右放了一段时间后电池耗光。研发 百思不得其姐 , 多次查看代码没发现问题,之前也没出现死机的问题(死机后会导致不能进低功耗,功耗超高)。派人去现场测试,进过大量测试后发现一个IO部分产品输出高。导致电流多了1mA左右。原因是客户上电做了秒脉冲输出,下电后产品就用电池供电了。客户下电前没有配置关闭秒脉冲输出,程序下电后也没有把IO配置回来, 导致有50%的概率IO输出高电平。
2、一个产品已经生产了几万台,一直没发现问题。后来换了一家PCB厂家后,生产发现功耗个别产品偏高个10uA左右, 研发拿回来分析,发现换了芯片就好了。但是生产出现百分之几的功耗不好的情况,芯片不可能出现这么大概率的损坏。430芯片,走正规供应商的。再一个IO一个IO的查找,通过手摸IO最终发现一个连光耦输入端的IO配置的是输入模式。换了芯片好了是因为焊接过,板子变脏,电阻变小,IO有一个比较固定的偏向与GND的电压,因而没问题 。之前没问题可能是板子的阻值比现在的这家小了点,或当时生产的时候湿度大点,或光耦的反向漏电流大些,也是各种可能了。软件发现这个IO本来是配置没问题的,中间不知道哪里配置过或配置别的IO时不小心连这个IO也配置了。总之当时没搜到这个IO的配置哪里改动了,只是在进低功耗前重新配置了下这个IO。
3、产品上使用的一个外购低功耗RF模块的IO问题。使用CC1101和430F2132。都算低功耗的芯片吧。前后找了2家开发模块,第一家2132一个IO没配置好,生产阶段发现部分产品功耗偏高。后来是因为领导的原因换了家做无线的厂家来做这个,还是CC1101+2132方案。照理来说之前犯过错误应该吸取经验教训了吧。并且软件人员也是老手了。结果生产是没问题,发货到客户那里还是发现了个别产品出问题, 最后还是发现一个IO没配置好状态。
4、以上心得很简单,但是是付出多次时间+金钱得出的惨痛心得。 而且这些都是软件的问题,但是功耗问题往往第一个找个是硬件:你设计的产品功耗偏高,电池没电,你查查看,哪里出问题了。 做硬件的又开不到代码,软件人员往往开始还不承认IO配置上有问题,尤其是之前找外面厂家开发的模块,他们的意思是,我做软件xx年了。开发了这么多产品,这么简单的一个产品怎么会出问题 ,是你们自己的产品没做好才出的问题。苦逼的硬件工程师没办法,只能自己想各种办法找到出问题的那个IO。软件人员经过改代码对比测试才完成,但是软件最后还是不会说自己的代码有问题。
5、关于IO的问题。430单片机IO设置是最弱的 ,大部分没有上下拉电阻,默认是输入状态,没配置IO就容易出功耗问题,ST的相对好的多,51的IO默认的51状态有上拉电阻,没用到的脚不去配置也不会出问题。空的IO我之前喜欢配置成输出0状态,最近在用STM8S看了下代码发现喜欢配置成上拉输入状态,STM8S没下拉电阻,STM32有,配置成下拉输入状态更好些,不小心碰到不会对外输出电流。题外话: 关于单片机的低功耗模式之前没深入了解STM32,最近才发现进最低功耗的STANDBAY模式RAM中数据对丢失,这点不如8位机,之前用STC的51和STM8系列从不担心ram数据丢失的问题。看STM32L系列进最低功耗也有这个问题,只是可以掉电保的RAM区域分的更多,更大。
相关问答
51 单片机 有着成本低,体积小, 低功耗 ,控制能力强,扩展灵活,...[最佳回答]nihao!答案应该是Atpresent,SCMemergeinanendlessstream,buttheprincipleisthesame,oneofthemost...
单片机 休眠模式和 低功耗 的区别?低功耗还有指令运行,休眠模式没有指令运行。单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值...
51 单片机 怎么休眠 - 177****2285 的回答 - 懂得51单片机,如STC系列单片机,可以进入休眠状态(或者掉电模式),待机方式(或者空闲模式),掉电模式:为时钟停止的所有工作状态全部停止,可以有...
单片机 消耗功率一般多大?关于这个问题,单片机消耗功率大小与其具体型号、运行频率、电源电压等因素有关,一般情况下,单片机消耗的功率较小,通常在几毫瓦到几十毫瓦之间。在低功耗应用...
现有STM32系列 单片机 ,哪款型号 功耗 最低?STM32L系列的功耗最低,但具体型号一个系列都差不多,引脚多的,资源更丰富的功耗更大。功耗和很多东西相关,如主频率(你降频运行功耗更低,手册上一般都写的有...
单片机 功率控制原理?单片机测量功率就是要测量电流和电压。首先测量电压,如果是直流低电压,直接用电阻分压检测模拟电压就可以测出来电压,也可以采用高精度的电压检测芯片检测电...
52 单片机 的优缺点?优点:1.52单片机的成本低,价格便宜。2.52单片机的性能稳定,可靠性高。3.52单片机的性能强,可用于多种应用场景,广泛应用于各种电子产品。4.52单片机...
stc15w4k 单片机 的优点?1、抗干扰能力强;2、保密性能强悍,很难被破解;3、单片机时钟有防外部电磁辐射功能;stc单片机缺点:1、功耗较高,5V供电;2、8位,运行速度慢;3、无硬...1...
单片机 好学嘛?单片机是嵌入式系统中常用的一种计算机芯片,相比传统计算机,其结构更简单、功耗更低、性能更高。单片机编程涉及到电子、计算机、数学等多个领域的知识,但是...
数字电源为什么一般用DSP控制,而不能用普通的 单片机 ?理、参数...传统模拟电源通过弱电传输信号,电源柜内部电磁环境复杂,弱电信号传输易受到电磁干扰;DSP智能感应加热电源采用光纤传输,光不受电磁环境影响,因此...