[PIC®/AVR®/dsPIC®产品]

【4月板卡】PIC16F184x6学习笔记-低功耗(上)

[复制链接]
2332|9
手机看帖
扫描二维码
随时随地手机跟帖
yongruru|  楼主 | 2019-6-13 16:09 | 显示全部楼层 |阅读模式
本帖最后由 yongruru 于 2019-6-13 16:37 编辑

学习PIC单片机低功耗之前,先简单过一下低功耗的一些基础知识和思想。
功率(瓦特)= U(伏特)I(安培)
能量(焦耳)= U(伏特)I(安培)t(秒)
电量(库伦)= I(安培)t(秒)
        功耗可以分为动态(活动)功耗和静态(睡眠)功耗。
        平均功耗=(动态功耗x动态时间+静态功耗x静态时间)/(动态时间+静态时间)
动态静态.jpg
        由此得出一些结论,降低平均功耗,可以从下面几个方面入手
        降低动态(运行)功耗;
        降低动态(运行)时间;
        降低静态(休眠)功耗;
        增加静态(休眠)时间。

        简单了解这么多,在最后还有一些我自己的积累的经验分享。下面先进入正式的PIC单片机低功耗学习。
        PIC16F184xx3种省电模式:打盹,空闲,休眠。功耗:打盹>空闲>休眠。
打盹模式
        通过减少CPU操作和存储器访问来节能,外设和系统时钟都保持运行。通过DOZEN=1来进入打盹模式,通过DOZE[2:0]寄存器确定N个周期执行一个指令。
dozen.jpg
doze.jpg

空闲模式
空闲模式和打盹不同之处在于,CPU和存储器均关闭。通过IDLEN=1,再执行SLEEP指令进入空闲模式。此处回顾一下第一篇时钟的内容,当执行SLEEP指令,就不再有系统时钟了,CPU停止工作;而打盹模式没有执行SLEEP指令,所以有系统时钟,CPU可以理解为处于低速模式。
逻辑2.jpg 逻辑1.jpg

休眠模式
CPU和大部分外设被关闭,是最省电的模式。通过IDLEN=0,然后执行SLEEP指令进入休眠模式。
idlen.jpg

实战
        MCC中找了找,没有找到低功耗相关的配置选项卡,看来只能在程序中操作。在之前IO的程序中进行,时钟LFINTOSC512分频,RA2S输出。程序如下。现象为LED闪烁两次,保持熄灭,说明进入睡眠模式。SLEEP();指令也可用asm("sleep");。
睡眠程序.jpg


        接下来测睡眠时的功耗。需要评估板做一些改动,首先割开J100,这是给MCU供电的线路。如图篮筐位置
j100.jpg


然后为MCU供电,并将电流表串入电路中。
电表原理图.jpg
电表2.JPG


实际测出,在进入睡眠后功耗为29uA,手册上宣称的可是nA级别的,相差甚远。
xlp.jpg


首先考虑到IO口上可能产生的电流,有连接的IORA0RA1RA2RA3RA4RA5RB4RB6RC2,其中RA2LED已经配置输出高,不会产生电流;RC2连接按键,是断开的也不会产生电流;RA3是重启,有外部上拉10k电阻,在引脚为低时会产生电流,正常情况下没有,即便有也时nA级别的。这3个引脚连接保留,其他的IO连接全部割断,基本上都是和调试器连接的。如下图篮筐线全部割断。
io割断.jpg


然后测量电流,令人失望的是,并没有变化。接下来考虑可能哪些外设没有关闭。检查MCC配置发现,看门狗WDT没有开,但是欠压复位BOR是开着的,将BOR关闭,测得电流为24uA,下降了一些,BOR确实有一定影响,但还有一定差距,继续排查。
BOR.jpg


仔细阅读手册,发现这段描述,在PIC16F18446中包含一个LDO,可以让IO使用最高5.5v高电压,内部使用较低电压工作。LDO肯定会有一定的静态电流的。下一段提到将VREGPM置位可以进入低功耗休眠模式。
LDO.jpg


寄存器的详细描述
vregpm.jpg


程序加入VREGPM=1;之后再执行SLEEP指令。这次测得电流在1uA以下了,影响确实很大。这个结果已经到达nA级,和手册表宣称的在同一单位级了。
0000.JPG


因为我的电流表的量程就到1uA,下面换一种方式来测量。如下面原理图
电压表.jpg


测量结果为3.8mV,检测电阻R110kΩ,I=U/R,所以电流为380nA。
电阻法.JPG

在电气特性里,有看到了下面这段,对我们的测试形成了印证,VREGPM=1时进入睡眠典型功耗为0.4uA,上面实测为0.38uAVREGPM=0时,即内部LDO打开,典型值18ua,上面实测为24uA,略高一些,但在一个数量级,并且温度和VDD电压也会有一定影响,暂不深究了。至此做低功耗应用时,最基础的最小功耗已经得到,后面再根据需求添加自己的功能和逻辑。
端倪.jpg

已经有一些篇幅了,并且后面还有一定内容,包括空闲和打嗝的实例,最后一些我的经验分享。我考虑在论坛上发帖篇幅还是不要太长,坛友阅读和我撰写的压力都大一些。所以本周先到这里,PIC低功耗的下半部分下周见。O(∩_∩)O


使用特权

评论回复
yongruru|  楼主 | 2019-6-13 16:11 | 显示全部楼层
本帖最后由 yongruru 于 2019-6-22 16:33 编辑

PIC16F184x6学习笔记-低功耗.pdf (1.16 MB)

使用特权

评论回复
奔波儿熊| | 2019-6-13 16:13 | 显示全部楼层
好贴,细致入微

使用特权

评论回复
martin| | 2019-6-14 09:00 | 显示全部楼层
实践出真知,点赞!

使用特权

评论回复
lcczg| | 2019-6-14 10:44 | 显示全部楼层
好**!

使用特权

评论回复
pzsh| | 2019-6-14 11:42 | 显示全部楼层
有图有真相, 一步一步学习如何做低功耗设计。 赞!

使用特权

评论回复
cdyyabc| | 2019-6-14 15:03 | 显示全部楼层
好**啊,写出很很好的调试心得

使用特权

评论回复
小灵通2018| | 2019-6-16 16:50 | 显示全部楼层
多谢分享。

使用特权

评论回复
yiy| | 2019-6-17 22:57 | 显示全部楼层
可以啊

使用特权

评论回复
ooppllmm| | 2019-6-19 09:27 | 显示全部楼层
详细!多谢分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

71

帖子

4

粉丝