本帖最后由 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即可。
|