Ansersion 发表于 2019-10-8 11:23

三、HC32L136开发板:低功耗电子钟

本帖最后由 Ansersion 于 2019-10-8 11:31 编辑

前两天家里的挂钟没电了,一想到2节5号电池就能让挂钟跑三四年,不禁感慨低功耗真是省心。话说HC32L136的定位是超低功耗MCU,运用开发板上现有的硬件,正好可以实现一个电子钟,如果用2节电池也能跑个一两年岂不美滋滋?
系统描述:整体描述如下图
系统共有2种状态:低功耗状态和非低功耗状态(IsLpmFlagSet()判断状态)。
低功耗状态下长按USER键可以进入非低功耗状态(LeaveLpm())离开低功耗模式);非低功耗状态下5秒内无任何按键操作可以进入低功耗状态(StartLpm())。
系统的逻辑流程有2条:RTC中断运行流程(RtcCycCb())和main程序运行流程(main())RTC中断每秒发生一次,主要功能是更新LCD显示时间和检测长按事件;main程序只有在非低功耗状态下才会运行,主要功能是检测按键事件更新RTC时分。
功耗测试:测试使用了两节7号碳性电池供电,环境温度25℃(参考空调遥控器),万用表调制uA档。如果开启设置时分功能(非低功耗状态),电流在5000uA左右;如果在低功耗状态下,测试五分钟,电流从800uA上升至1400uA,重启后电流也不回降,这里猜测可能是温度上升导致电流升高。
当今市场上一般的5号碱性电池的容量大概在2000mAH左右,如果按照1400uA的功耗来计算,我们的电子钟大概可以运行2个月。如果硬件上做一些调整应该能有更好的功耗表现,比如去掉那个红色的电源指示灯,调整LCD的GPIO端口,从而把空闲的GPIO关闭等等,硬件相关此处就不做深入研究了。
系统运行效果图如下(设置时间)注意事项:由于该电子钟程序使用了低功耗模式,根据《HC32L13_HC32F03系列的MCU开发工具用户手册Rev1.0》8.2节低功耗模式无法进行程序烧写,烧写时会出现如下错误。
如果要烧写程序请长按USER按键使LCD数字闪烁,从而退出低功耗模式再进行烧写。
最后,本程序中关于LCD显示部分多数来源于https://bbs.21ic.com/icview-2859124-1-2.html在此感谢WoodData分享的例程。


絮叨至此,但求明细。


liaotian001 发表于 2019-10-8 11:29

电子钟,使用LCD显示,MCU平均功耗低于1.0uA (包括WDT,BOR,RTC,X32K,LCD都打开的情况下),加上不同LCD pannel,整体在3uA ~ 5uA 左右。

Ansersion 发表于 2019-10-8 11:43

liaotian001 发表于 2019-10-8 11:29
电子钟,使用LCD显示,MCU平均功耗低于1.0uA (包括WDT,BOR,RTC,X32K,LCD都打开的情况下),加上不同LCD pann ...

低功耗代码直接使用的样例程序(HC32L136_SDK\驱动库及样例\HC32L136_DDL_Rev1.1.0\HC32L136_DDL\example\rtc\rtc_int_lpm),除了没有拉低GPIO口之外,其余配置都是一样的。更多优化方案,还望指点一二。

martinhu 发表于 2019-10-8 16:16

楼主如果是电池接的Vcc和GND,万用表串在其中测的功耗的话,至少要把板子上的PWR LED灯拿掉,另外,底下的CMSIS-DAP板子也要掰断,不然这些都会额外消耗功耗

zhufy 发表于 2021-4-9 14:05

前两天用HC32L136K8TA做了个计时计数器,才6ua, 你这功耗高了点吧?

suncat0504 发表于 2024-9-13 21:09

martinhu 发表于 2019-10-8 16:16
楼主如果是电池接的Vcc和GND,万用表串在其中测的功耗的话,至少要把板子上的PWR LED灯拿掉,另外,底下的C ...

说的有道理!应该把没用的、耗能的器件去掉!电源指示灯以及测试用的LED都去掉。

suncat0504 发表于 2024-9-13 21:10

夜间工作时,关闭显示,进入低功耗。清晨定时中断唤醒,这样做会不会更能节省功耗?
页: [1]
查看完整版本: 三、HC32L136开发板:低功耗电子钟