[技术问答]

HC32L136低功耗问题

[复制链接]
2136|23
手机看帖
扫描二维码
随时随地手机跟帖
独行大侠2|  楼主 | 2022-10-27 17:53 | 显示全部楼层 |阅读模式
型号为HC32L136J8TA,淘宝购买了该MCU的最小系统板,原理图如下:
原理图.png
    使用官网demo程序:gpio_deepsleep_wakeup来测试其低功耗性能。发现设置为深度睡眠后,电池供电(2.8V)情况下,用万用表电流档串接到电池供电回路内,测量出电流高达700uA左右。
    为保证是最小系统,排除外围电路影响,对原最小系统板进行了修改,去除了一些外围电路,具体地是去除了U2芯片(电压转换),去除了D1(电源指示灯),去除了R5(状态指示灯),并且测量功耗时拔掉了st-link烧写器。
    测试程序中去除了按键和LED灯的配置,所有IO管脚都配置为输入下拉,具体代码如下:
static void App_LowPowerModeGpioSet(void)
{
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
    //swd as gpio
    Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);
    ///< 配置为数字端口
    M0P_GPIO->PAADS = 0;
    M0P_GPIO->PBADS = 0;
    M0P_GPIO->PCADS = 0;
    M0P_GPIO->PDADS = 0;
    ///< 配置为端口输入(除LED端口外)
    M0P_GPIO->PADIR = 0XFFFF;
    M0P_GPIO->PBDIR = 0XFFFF;
    M0P_GPIO->PCDIR = 0XFFFF;
    M0P_GPIO->PDDIR = 0XFFFF;
    ///< 输入下拉(除KEY端口以外)
    M0P_GPIO->PAPD = 0xFFFF;
    M0P_GPIO->PBPD = 0xFFFF;
    M0P_GPIO->PCPD = 0xFFFF;
    M0P_GPIO->PDPD = 0xFFFF;
}
    在网上搜了很多关于贵司低功耗MCU的配置方法,尝试了都没有效果。感觉我的问题和这个描述的差不多:华大的HC32L130低功耗模式求助,怎么调试都在260ua (amobbs.com **电子论坛 - 东莞**电子网站)
    麻烦专业人士帮忙分析一下,不甚感激!

使用特权

评论回复
评论
liufabing 2022-12-2 17:34 回复TA
也在用这颗芯片,目前看你所有引脚设置为数字口下拉输入,你测量一下MCU引脚上的电压,是不是有引脚为高电平了. 
wubangmi| | 2022-10-28 09:09 | 显示全部楼层
淘宝买的板子不一定是针对华大的,我有客户也从淘宝买板子,但是原理上按照ST的设计的。
看你这原理图跟他那个有点像,你确认下1脚小华的MCU叫Vcap,只能接电容到地,不能接Vcc。
按我推测应该是这个1脚的接法导致的。
另外我个人的经验和喜好,不用的IO全部设为输出低。

使用特权

评论回复
tonykuai| | 2022-10-29 22:08 | 显示全部楼层
建议看一下应用笔记<AN_低功耗模式应用注意事项_Rev1.3>,在HC32L136的技术文档技术文档页面可以下载。

使用特权

评论回复
tonykuai| | 2022-10-29 22:09 | 显示全部楼层
wubangmi 发表于 2022-10-28 09:09
淘宝买的板子不一定是针对华大的,我有客户也从淘宝买板子,但是原理上按照ST的设计的。
看你这原理图跟他 ...

有的是要求设置为输出。不过看小华的文档是这样写的:IO 端口
系统进低功耗,端口状态不会改变,所以需要客户根据实际应用来配置端口状态来达到理想
功耗值。未用端口建议配置上拉输入模式。

使用特权

评论回复
独行大侠2|  楼主 | 2022-10-31 00:35 | 显示全部楼层
wubangmi 发表于 2022-10-28 09:09
淘宝买的板子不一定是针对华大的,我有客户也从淘宝买板子,但是原理上按照ST的设计的。
看你这原理图跟他 ...

试了1管脚加电容,功耗还是很高

使用特权

评论回复
独行大侠2|  楼主 | 2022-10-31 00:37 | 显示全部楼层
tonykuai 发表于 2022-10-29 22:09
有的是要求设置为输出。不过看小华的文档是这样写的:IO 端口
系统进低功耗,端口状态不会改变,所以需要 ...

按上拉输入模式设置,目前仍然有100多uA电流

使用特权

评论回复
martinhu| | 2022-11-2 09:53 | 显示全部楼层
你这个板子有问题啊,1脚不是接Vbat,如果外接电压之后,这个L136可能就受损伤了。另外,官网的低功耗样例与这个板子不匹配,你要检查所有的引脚,如果没有使用的就设置上拉输入,
如果有输出的,在进低功耗前设置输出电平不要有电势差
如果你现在还有100uA左右的电压,可能还有未使用的引脚悬空,没有设置上拉输入导致。
742626361cd0adbb0c.png

使用特权

评论回复
独行大侠2|  楼主 | 2022-11-4 21:53 | 显示全部楼层
martinhu 发表于 2022-11-2 09:53
你这个板子有问题啊,1脚不是接Vbat,如果外接电压之后,这个L136可能就受损伤了。另外,官网的低功耗样例 ...

1脚虽然图上叫vabt,但原来只是接到端子上,是没有接电压的,后来我飞线了个4.7uF的电容到地。目前最小系统没有输入输出要求,也没有实际电路,前面说的我已经把可能影响的外围电路都去掉了。我软件上已经把所有的管脚全部设置为了上拉输入,PA、PB、PC、PD,包括封装上没有的管脚。有一个现象是如果长时间不通电静置后测量电流会有小几十uA,然后缓慢地往上涨,大概1uA/s的速度,直到涨到100多uA。

使用特权

评论回复
tonykuai| | 2022-11-4 22:55 | 显示全部楼层
独行大侠2 发表于 2022-11-4 21:53
1脚虽然图上叫vabt,但原来只是接到端子上,是没有接电压的,后来我飞线了个4.7uF的电容到地。目前最小系 ...

电流由小变大,是核心温度升高造成的。从电流数据上看,可能你进入的是sleep模式。你试试其他模式,看看电流情况。

使用特权

评论回复
独行大侠2|  楼主 | 2022-11-4 23:40 | 显示全部楼层
tonykuai 发表于 2022-11-4 22:55
电流由小变大,是核心温度升高造成的。从电流数据上看,可能你进入的是sleep模式。你试试其他模式,看看 ...

调用的是Lpm_GotoDeepSleep(TRUE),功耗是100uA。改为Lpm_GotoDeepSleep(FALSE),功耗差不多。改为调用Lpm_GotoSleep(TRUE),功耗是280uA。

使用特权

评论回复
独行大侠2|  楼主 | 2022-11-4 23:52 | 显示全部楼层
现在还有比较怀疑的就剩下晶振和电源电容了。外部低速和高速晶振是否会影响低功耗,目前配的时钟是默认的内部晶振,进入低功耗前配置晶振的gpio管脚,pc14,pc15,pd0,pd1都是上拉输入。电源电容原理图上并没有完全按照官方手册建议的来,手册上建议:(DVCC/AVCC)都需要一个去耦电容4.7uF和一个旁路电容0.1uF,PCB布局时,电容尽量靠近相应电源引脚。
另外1脚的vcap接的4.7uF,没有再接100nF电容,个人感觉这个没接100nF应该不影响功耗。
因为这些晶振和电源电容要修改或者拆掉比较难搞,所以有没有专家看看是否有理论依据。

使用特权

评论回复
tonykuai| | 2022-11-4 23:57 | 显示全部楼层
独行大侠2 发表于 2022-11-4 23:40
调用的是Lpm_GotoDeepSleep(TRUE),功耗是100uA。改为Lpm_GotoDeepSleep(FALSE),功耗差不多。改为调用Lp ...

"深度休眠模式下,SWD 口断开,仿真器无法连接,必须使用离线烧录器或上位机软件 ISP 来擦除原代码解决"...这是在注意事项中看到的一句话。反过来看,就是如果你进入了深度休眠,就无法连接仿真器了,只能用烧录器。如果你能再次用SWD口仿真,就是没进入深度休眠。

使用特权

评论回复
独行大侠2|  楼主 | 2022-11-5 00:08 | 显示全部楼层
tonykuai 发表于 2022-11-4 23:57
"深度休眠模式下,SWD 口断开,仿真器无法连接,必须使用离线烧录器或上位机软件 ISP 来擦除原代码解决". ...

不是这样的,程序里加延时后再进入深度休眠,这样用swd烧写的时候先按复位键 ,然后快速按下烧写按键(在程序的延时时间内),这样就可以正常swd烧写了。仿真器无法连接是程序里没有加延时,跑起来就进入深度休眠,那样就要上ISP了。官方demo也是有延时的,还有注释如下:
///< ===============================================
    ///< ============ 警告,警告,警告!!!=============
    ///< ===============================================
    ///< 本样例程序会进入深度休眠模式,因此以下两行代码起防护作用(防止进入深度
    ///< 休眠后芯片调试功能不能再次使用),
    ///< 在使用本样例时,禁止在没有唤醒机制的情况下删除以下两行代码。
    delay1ms(2000);

使用特权

评论回复
独行大侠2|  楼主 | 2022-11-5 23:28 | 显示全部楼层
tonykuai 发表于 2022-11-4 23:57
"深度休眠模式下,SWD 口断开,仿真器无法连接,必须使用离线烧录器或上位机软件 ISP 来擦除原代码解决". ...

有延时再进入休眠,这样用swd下载的时候先按复位键,然后快速按下下载按钮。仿真器无法连接那是没有加延时直接进入休眠,那样就只能用isp了。官方例程里是有延时的,注释也很清楚。

使用特权

评论回复
martinhu| | 2022-11-7 09:04 | 显示全部楼层
独行大侠2 发表于 2022-11-4 21:53
1脚虽然图上叫vabt,但原来只是接到端子上,是没有接电压的,后来我飞线了个4.7uF的电容到地。目前最小系 ...

你要按照L136的LQFP64PIN的引脚处理那些未使用的PIN,包括没有封装出来的也要设置成输入上拉模式。这个在例程和参考手册或者应用笔记里面都有的

使用特权

评论回复
独行大侠2|  楼主 | 2022-12-2 15:02 | 显示全部楼层
martinhu 发表于 2022-11-7 09:04
你要按照L136的LQFP64PIN的引脚处理那些未使用的PIN,包括没有封装出来的也要设置成输入上拉模式。这个在 ...

你看上面的代码,ABCD全设置了

使用特权

评论回复
chenjun89| | 2022-12-2 18:49 | 显示全部楼层
没用的外设和IO怎么处理的

使用特权

评论回复
pltczw666| | 2022-12-4 11:58 | 显示全部楼层
你试一下这个例子(rtc_int_lpm),我在一个额温抢的板子上试过了(拆掉外围的不必要的器件),电流0.97uA

使用特权

评论回复
liufabing| | 2022-12-4 15:49 | 显示全部楼层
chenjun89 发表于 2022-12-2 18:49
没用的外设和IO怎么处理的

没用的IO我直接参照范例设置为下拉输入

使用特权

评论回复
martinhu| | 2022-12-7 09:46 | 显示全部楼层
独行大侠2 发表于 2022-12-2 15:02
你看上面的代码,ABCD全设置了

这个最小系统板不是华大自己做的,应该是第三方做的,KEY和LED可能使用的都不是官方STK的引脚,需要修改,所以与驱动库的最低功耗的样例不是很匹配,你要仔细看看每个引脚的设置都配置输入下拉是否合理,

使用特权

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

本版积分规则

1

主题

9

帖子

0

粉丝