[PIC®/AVR®/dsPIC®产品] PIC单片机休眠模式下,电流为什么会有差异?

[复制链接]
灵犀幻影 发表于 2025-5-13 09:13 | 显示全部楼层
这种情况可能是由于单片机内部的制造差异导致的。不同批次的单片机在制造过程中可能会有微小的差异,从而影响了休眠模式下的静态电流。建议联系单片机的制造商,询问是否有已知的制造差异问题。
xch 发表于 2025-5-13 09:28 | 显示全部楼层
你用一把螺丝刀触碰MCU管脚,甚至靠近管脚。如果静态电流发生变化说明软件没处理好管脚设置。
 楼主| caolina1013 发表于 2025-5-13 11:18 | 显示全部楼层
xch 发表于 2025-5-13 09:28
你用一把螺丝刀触碰MCU管脚,甚至靠近管脚。如果静态电流发生变化说明软件没处理好管脚设置。 ...

我的板子没这个问题,所有悬空的引脚我都设置为输出为0,固定电平不容易受到干扰。
dffzh 发表于 2025-5-13 11:51 | 显示全部楼层
xch 发表于 2025-5-13 09:28
你用一把螺丝刀触碰MCU管脚,甚至靠近管脚。如果静态电流发生变化说明软件没处理好管脚设置。 ...

我们以前也这么干过,用镊子
William1994 发表于 2025-5-13 14:16 | 显示全部楼层
感觉像是ESD了。不过ESD的比例不会这么高,也不会这么一致。
把功耗高的那个吹开发板上,仔细测试一下电流是哪个IO相关,还是哪个电源流进去的。每个脚都接电流表打一下。
jiabin1024 发表于 2025-5-14 09:17 | 显示全部楼层
caolina1013 发表于 2025-5-13 08:41
30ua我认为是正常的,因为休眠的时候,我除了单片机,还有部分外围电路在耗电,如果除去外围电路,仅单片 ...

既然有外围,没准这个不正常的功耗是外围带来了,可以将外围去掉之后测试看看情况
LinkMe 发表于 2025-5-14 17:42 | 显示全部楼层
休眠模式下的电流差异主要因单片机内部电路在低功耗状态下工作状态不同。
dffzh 发表于 2025-5-15 09:31 | 显示全部楼层
兄弟,功耗问题找到根因了吗?
 楼主| caolina1013 发表于 2025-5-15 10:26 | 显示全部楼层
本帖最后由 caolina1013 于 2025-5-15 10:29 编辑

没有找到原因
 楼主| caolina1013 发表于 2025-5-15 10:28 | 显示全部楼层
dffzh 发表于 2025-5-15 09:31
兄弟,功耗问题找到根因了吗?

还没找到原因,我现在怀疑是休眠模式下,我的单片机引脚没处理好,PIC单片机休眠模式下,GPIO口应该怎么处理,第一种是未用的引脚,第二种是已用但是外部电路未供电的引脚(比如UART的TX、RX连接了外部的485芯片,但是休眠模式下485芯片的电源是切断的)、我的处理方法是:第一种未用的引脚全部设成输出,输出位0,第二种引脚,我用PMD禁止了相关外设,比如关闭UART功能,然后又把引脚设成输出,输出为0,当单片机唤醒的时候,我打开PMD,然后重新初始化一下UART。这样处理对吗?
dffzh 发表于 2025-5-15 10:36 | 显示全部楼层
caolina1013 发表于 2025-5-15 10:28
还没找到原因,我现在怀疑是休眠模式下,我的单片机引脚没处理好,PIC单片机休眠模式下,GPIO口应该怎么 ...

区域原厂技术支持没有帮忙搞定?
 楼主| caolina1013 发表于 2025-5-15 10:39 | 显示全部楼层
昨天来了,提供了几种排查思路
dffzh 发表于 2025-5-15 13:38 | 显示全部楼层
本帖最后由 dffzh 于 2025-5-16 08:46 编辑
caolina1013 发表于 2025-5-15 10:39
昨天来了,提供了几种排查思路

处理方式看上去没啥问题;
那他们没帮你看下具体的引脚配置什么的吗?
还有一种排查手段可以尝试一下:
把有功耗问题的MCU焊接到一个空的PCB上,只接VCC和GND,在保证MCU能正常起来的情况下,测试一下功耗看看情况。
如果单独接VCC和GND起不来,就把MCU复位电路加上,类似自己用洞洞板搭个MCU最小系统那样。
方便的话给我个V信。
下面是我昨晚咨询的结果,你看下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| caolina1013 发表于 2025-5-16 10:49 | 显示全部楼层
本帖最后由 caolina1013 于 2025-5-16 13:45 编辑

问题终于解决了。
先说原因:静态电流异常是因为休眠之前对IO口处理不当造成引脚悬空产生漏电流。
我详细说说进休眠之前应该怎么处理GPIO口。
第一种:没有接任何电路的GPIO口,这种引脚在程序初始化的时候,就把它们设置成数字输出,输出0。我一直也是这样做的,所以电流异常的现象跟这种情况无关。
第二种:接了外部电路但是休眠模式下外部电路不工作的IO口。以我的板子为例,UART5接了红外通信电路,但是休眠模式下,红外电路是断电的。这款片子本身就有UART5引脚不需要做映射,但TXD5跟D1口是复用的,RXD5跟D6口是复用的。我是这样处理的:休眠前,通过给外设模块禁止寄存器PMD写1禁止UART5,PMD8bits.U5MD=1;我之前理解的是禁止了UART5就是把复用管脚切成普通IO口了,所以我接着就把D1和D6设成数字输出,输出为0。万万没想到问题就出在这里。我先把datasheet里的相关描述贴出来。


为了降低功耗,这款单片机允许有选择的禁止外设模块,而且提供了两种方式,可以写XXXEN位,也可以写PMD,红框下面详细描述了这两种方式对功耗、寄存器读写的区别。当我看到这里的时候,我就试着把我的程序里禁止PMD后面又加了一条语句, U5MODEbits.UARTEN=0 ;  然后很神奇的,问题就解决了。问题解决了,我就分析原因,我认为资料这个地方只是说了这两种禁止外设的方法在功耗和寄存器方面的区别,但是没有说对复用管脚的影响,对于有复用管脚的外设,如果只是禁止PMD,其实并没有把管脚切换成普通IO口,还是TXD、RXD口,这时你对端口写0是没用的,必须用XXXEN位来禁止外设才能把复用管脚切换成普通IO口,对普通IO口写0才有用。


罗里吧嗦的写了这么多,文笔有限,不知道有没有把问题描述清楚,希望某一天遇到同样问题的老铁能搜到这个帖子,看完我的描述,能对您有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| caolina1013 发表于 2025-5-16 10:52 | 显示全部楼层
dffzh 发表于 2025-5-15 13:38
处理方式看上去没啥问题;
那他们没帮你看下具体的引脚配置什么的吗?
还有一种排查手段可以尝试一下:

我想给您发私信,加个微信,但是我没有发私信的权限。不知道还能用什么方法加微信
 楼主| caolina1013 发表于 2025-5-16 11:01 | 显示全部楼层
dffzh 发表于 2025-5-15 09:31
兄弟,功耗问题找到根因了吗?

找到原因了,看楼上。我没有权限给您发私信,怎么加你微信呢?
dffzh 发表于 2025-5-16 11:10 | 显示全部楼层
本帖最后由 dffzh 于 2025-5-16 11:24 编辑
caolina1013 发表于 2025-5-16 11:01
找到原因了,看楼上。我没有权限给您发私信,怎么加你微信呢?

找到原因就可以不用加微信了;本来是想通过微信提高帮你解决问题的效率;
所以又回到我一开始回贴说的了,迷惑性较大的偶发性Bug;
楼主能花心思静下心来解决问题,很优秀!以后遇到新MCU时,也知道怎么去排查了!
经历这次问题排查之后,你的这块经验肯定是有了质的飞跃,恭喜;
你可以直接把那段详细分析原因的文字放到文章里面去。

梦境摆渡人 发表于 2025-5-17 10:00 | 显示全部楼层
非常详细的问题描述和解决方案,感谢分享!这种通过实际案例分析的方法对其他遇到类似问题的工程师来说非常有帮助。
蚊子的噩梦 发表于 2025-5-17 11:38 | 显示全部楼层
非常详细的问题描述和解决方案,感谢分享!我也有类似的问题,可以按照你的方法去尝试解决。
花开了相爱吧 发表于 2025-6-24 11:10 | 显示全部楼层
PIC 单片机在不同休眠模式下电流差异主要源于:
时钟配置:
Idle 模式:主时钟运行,仅 CPU 暂停,外设(如定时器、ADC)耗电,典型电流 1-5mA。
Sleep 模式:主时钟停止,仅看门狗(WDT)或实时时钟(RTC)运行,电流降至 1-10μA(取决于 WDT 分频比)。
Deep Sleep 模式:关闭更多内部电路,依赖超低功耗振荡器(如 LFINTOSC),电流可低至 50nA(无外设唤醒时)。
外设状态:
若休眠时保留 SPI/I²C/UART 等通信外设或模拟模块(如比较器)开启,会显著增加漏电流。
唤醒源配置:
使能引脚变化中断(IOC)、RTC 闹钟等唤醒功能需维持检测电路工作,导致额外功耗。
工艺与电压:
低电压(如 1.8V)和 CMOS 工艺的新系列(如 PIC18F K42)休眠电流可比旧型号低 1-2 个数量级。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部