历史上的今天
今天是:2025年01月11日(星期六)
2020年01月11日 | 影响单片机功耗的因素有哪些
2020-01-11 来源:eefocus
最近一周一直在做pic单片机功耗问题。由于项目使用电池供电,所以功耗问题显得非常重要。根据数据手册以及网络上的资料,影响单片机功耗主要由以下几个因素:
1:所有I/O引脚保持为高阻输入高点平或低电平
2:关闭比较器和CVref(可编程偏上参考电压)、WTD、T1OSC、BOR(欠压复位)等
3:PORTB片内弱上拉
4:所有不用的模块全部关闭,在用到时再打开
5:MCLR引脚必须处于逻辑高电平

PIC单片机在执行SLEEP指令后进入睡眠省电模式。进入SLEEP模式后,主振荡停止,如果看门狗在烧写时打开了,看门狗定时器将被清并保持运行。I/O口,周边模块和内部RAM将保持原来状态,所以如果要求睡眠后有很低功耗,应该在进入SLEEP前把IO口置为高阻抗的输入状态,不用的模块也要关闭。另有些周边模块与主时钟有关,如在异步模式下的USART,将不工作。
唤醒SLEEP的条件有很多,如IO口电平变化,AD转换结束,外部复位、看门狗溢出等,具体请参考数据手册。
当执行SLEEP指令时,PC+1的指令被预取指,当器件被一个中断条件唤醒时(这个中断的应是已使能的),如果GIE(全局中断使能位)为0,器件将继续执行SLEEP指令下面的指令。如果GIE为1,器件将执行已预取的PC+1指令后跳到0004H的中断入口。所以建议SLEEP后面紧跟着的一条指令最好是个NOP。
外部手动复位MCLR将唤醒器件并RESET,表示状态的标志位含义详见数据手册。
看门狗定时器在SLEEP下溢出将唤醒器件,然后执行SLEEP下面的指令,也有标志位指示状态。
进入SLEEP后,主振荡停振,和主振荡相关的模块都会停止工作,A/D 。液晶驱动。看门狗等模块还是要在SLEEP指令执行之前关闭的。这样功耗才会最低。
关于I.O口。在16C926的DATA SHEET里,还是说到了一些。所有的I/O口,都有确定的接VDD或者VSS,而不能悬空。进入SLEEP前,所有的I/O应该置为输入口,接上拉或下拉。
对于PORTB口有内部上拉功能的应该选择不上拉。
这个项目就是因为没有关闭BOR在休眠时电流达到50UA而搞了近一周的时间才发现问题。
下面是一位网友的测试数据:
测试条件:PIC16F676使用内部4MHzRC振荡,电源电压5V,测试在睡眠下的消耗电流
单片机在外部IO口设置成输入并有固定电平的情况下,程序进入一个NOP指令和跳转指令的死循环后耗电约1.26mA
1.SLEEP之后:WDT开并256分频,每2.3秒左右唤醒一次,所有IO口为数字输入口,直接接高电平或低电平。5V,0.159mA,主要配置:_INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN
2.上面的程序没动,只是配置& _BODEN_OFF,电流降为8.5μA,其它配置变化对电流消耗影响不大,WDT开与不开只差0.1μA,可见BROWN OUT DOWN功能是个耗电大户。
3.上面的配置、程序没动,所有IO输入口悬空,结果电流变为0.8-1mA,以上均没开电平变化中断,而且手接近单片机电流变的更大。可见虽然IO口看似没有吸收电流,但干扰电平引起单片机内部比较器频繁翻转的电流可以说很惊人。
4.以上配置,仅将WDT分频比改为1:1,各IO口仍然接固定电平,此时单片机WDT约每1.8mS唤醒一次,电流为8.8μA,可见RC的唤醒很省电。
5.以上配置,WDT1:256分频,将所有IO口设置成输出,并输出低电平,IO口不接任何负载,结果电流为9.5μA,与输入相比多了1μA。可见IO口的驱动也是要能量的。
6.以上配置,WDT1:256,各AD输入口设置成AD输入,其它设置成IO输入,均接固定电平,ADON置1,GO为零,此时AD模块开启,转换未开始,转换时钟采用系统时钟的1/8,电流8.8μA基本无变化,转换时钟采用AD独立RC振荡,电流仍为8.8μA,独立RC振荡,GO置1,转换完成后继续AD转换,电流为9.2μA,期间没有空余采样电容的充电时间,可见AD转换并不怎么耗电。
7.关闭AD,开启RA口的弱上拉,有弱上拉的IO悬空,WDT 1:1,电流8.8μA,将弱上拉的IO口其中一脚接地,电流猛增至212.4μA,换算下来一个弱上拉相当于一个24KΩ左右的电阻。
综上所述,耗电大户有两个:第一大户是悬空的输入脚,第二大户为弱上拉时IO口接地。第三大户为BROWN OUT DOWN RESET(电压过低复位)。若要省电的话不妨以此参考。此次试验是单片机没有任何外围电路的情况下测得,当然外围电路比较复杂,设计省电模式其它电路的耗电也要考虑。若要非常省电,那么每个功能是否开启都是锱珠必较的。
史海拾趣
|
http://www.matwei.de/eng/index.php?page1=elektronik&page2=usbisp The USBisp is another AVR programmer. Compared to the other freely available programmers out there mine has some advantages, I think: USB-Interface ...… 查看全部问答> |
|
虽然是计算机专业,却不能看懂我们论坛讨论的很多问题,所以希望前辈能够解答,计算机专业是一个很宽的领域,我们本科四年课堂教授的只是最基本的知识,例如汇编及一些高级语言,或者是基本的模电、信号与系统的知识,我想知道理解掌握了这些知识后 ...… 查看全部问答> |
|
《社区大讲堂》DO-254中的高设计可靠性的逻辑综合(八)--设计分析报告 工具生成的报告通常在设计的评审和了解工具运行状况的时候非常有用。 综合工具能够生成一些综合工具如何处理设计的报告。这些有助于发现设计中的问题。 例如: 在HDL中,四值逻辑的比较或者是组合逻辑中不完整的敏感表都会使不同工具得到不同的 ...… 查看全部问答> |
|
采用simsun.ac3压缩字体,发现无法进入桌面,提示信息为: ERROR: could not resolve import decompQueryTrueTypeTable !!! Please Check your SYSGEN variable !!! 相关注册表信息为: [HKEY_LOCAL_MACHINE\\System\\GDI\\FontFiles\\TrueType] & ...… 查看全部问答> |
|
WINCE下的wm9715音频驱动修改了几天,还是不能发出声音,不知道问题在那里。望整过的人给点思路啊! WINCE下的wm9715音频驱动修改了几天,还是不能发出声音,不知道问题在那里。望整过的人给点思路啊! BSP原来的是支持WM9713的,现在我们要修改成支持WM9715的。… 查看全部问答> |
|
如何去掉开发板s3c2410的串口自动反馈信息?比如说,把开发板和pc连在一起,打开pc上的串口软件,再打开开发板上(wince5.0系统)的串口软件就会在pc上串口软件上收到一些信息,每当板子接收到数据时,pc上的串口软件就会收到类似 \"+SL GetStatus ...… 查看全部问答> |
|
输出十字交叉线有个点,交叉线是连接得。。。 说明:上面光电管接受的是低频以调制的脉冲信号,请问这个电路中的第一个运放起到了什么作用??能具体分析的最好。。谢谢。。。QQ569735005 [ 本 ...… 查看全部问答> |
|
求助用过Altera FFT IP 核的大牛们,help~~~~~~~~~ 本人做项目中需要调用 Altera FFT IP 核 是没授权的那种,有提示限时一小时。为什么我每次仿真的时候功能仿真没问题,时序仿真就是错的呢?… 查看全部问答> |
|
中小企业选购UPS不间断电源的四大标准 大多数的计算机用户及中小企业,对电力保护的意识并不强烈。然而随着华 南经济的快速增长,中小企业数量的急速提高增加,对电力能源的需求也已愈发 愈来越强烈。随 ...… 查看全部问答> |




