华大低功耗系列HC32L136只要打开过PLL后进入深度睡眠26uA
本帖最后由 abcd7471 于 2021-5-22 14:54 编辑华大低功耗系列HC32L136只要打开过PLL后进入深度睡眠26uA。
本人正在做一个遥控器项目,使用芯片型号:HC32L136J8TA-LQ48,调试过程中遇到问题,如题所述,只要打开过PLL后再进入深度睡眠模式时,电流有26uA,调了很久都调不下去,原因不详!
然后拿根据官方例程gpio_deepsleep_wakeup来做实验,官方例程直接编译然后烧到板子,进入深度睡眠模式后,电流0.8uA左右浮动,但如果将时钟设置到PLL,如PLL48MHz后,进入深度睡眠模式,电流就26uA,参考https://bbs.21ic.com/icview-3132372-1-1.html 这个帖子仍然不能解决,现在发帖求助!请教各位大佬们是如何解决的?
我的实验过程如图所示:
图片所示代码,是根据官方例程gpio_deepsleep_wakeup例程修改的,如图所示,将时钟设置到PLL,如PLL48MHz后,进入深度睡眠模式,电流就飙升到26uA,进入深度睡眠模式之前,将时钟切换回RCH4M,并且关闭PLL,关闭BGR,仍然不能把待机电流降下来,不知道怎么回事,请教下大佬们是如何解决的?
————————分界线————————
问题已解决:
仔细查看库代码,发现打开PLL的时候开启了BGR,如图所示:
那么进入睡眠睡眠之前直接来一句: M0P_BGR->CR_f.BGR_EN = FALSE; 行不?通过实验,实验结果表明:不行!为啥?又仔细查看芯片手册,发现手册有说明操作BGR寄存器必须打开ADC时钟,如图所示:
因此进入睡眠之前切换回RCH,打开ADC时钟,关闭PLL,关闭BGR,关闭ADC时钟,然后再进入睡眠,这样就可以解决了,如图所示:
唤醒之后,先打开PLL,再将系统时钟切换回PLL即可。
25~30uA 左右的功耗,有2种可能,第一种BGR打开了;第二种IO 配置pull high被外围拉低了,或者配置pull low被外围拉高了; 问题已解决,仔细查看官方的库代码,发现问题的根本原因,打开PLL的时候会开启BGR,进入深度睡眠之前关掉PLL,并且关掉BGR即可。但是之前也是这样操作不成功,后面查看手册发现,操作BGR寄存器要开启ADC时钟,否则无法操作。
我的操作步骤如下:
1,进入睡眠之前切换回RCH
2,打开ADC时钟
3,关闭PLL
4,关闭BGR
5,关闭ADC时钟
6,进入睡眠模式
abcd7471 发表于 2021-5-22 14:29
问题已解决,仔细查看官方的库代码,发现问题的根本原因,打开PLL的时候会开启BGR,进入深度睡眠之前关掉PL ...
论坛里有人遇到过同样的现象 感谢分享经验 abcd7471 发表于 2021-5-22 14:29
问题已解决,仔细查看官方的库代码,发现问题的根本原因,打开PLL的时候会开启BGR,进入深度睡眠之前关掉PL ...
好经验,谢谢分享啊,关闭BGR还要开启ADC时钟,这是啥骚操作 还没有这么强烈的关注过功耗
这个解决的经验很棒,让很多人少走弯路 这不是一个提问帖,这是科普贴啊 这个科普帖发的好,华大FAE发来贺电!@abcd7471 入坑,比这还严重
页:
[1]