From 80064632b95ecab3799bfd36ac09af8e3bdd3a6e Mon Sep 17 00:00:00 2001 From: "mark.zhu" Date: Fri, 1 Sep 2023 11:54:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?doc=20(power-consumption&power-manager):=20?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=B0=E7=89=88=E5=AE=98=E7=BD=91=E4=B8=AD?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9?= =?UTF-8?q?=201.=E4=BF=AE=E6=AD=A3=E6=96=B0=E7=89=88=E5=AE=98=E7=BD=91?= =?UTF-8?q?=E4=B8=AD=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= =?UTF-8?q?=202.=E4=BC=98=E5=8C=96PSM=E9=83=A8=E5=88=86=E7=9A=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=203.=E6=96=B0=E5=A2=9ERTC=E9=83=A8=E5=88=86=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N/A 是否需要文案翻译: 否 --- .../power-consumption/consumption_all.png | Bin 0 -> 79328 bytes .../zh/system/power-consumption.md | 81 +++++++++++++++++- .../zh/system/power-manager.md | 54 +++++++++++- 3 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 docs/Application_guide/zh/media/system/power-consumption/consumption_all.png diff --git a/docs/Application_guide/zh/media/system/power-consumption/consumption_all.png b/docs/Application_guide/zh/media/system/power-consumption/consumption_all.png new file mode 100644 index 0000000000000000000000000000000000000000..91882826f91a09a3542b95017e5307f112e3f954 GIT binary patch literal 79328 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 Uw==k&5B$^JXQ2IX@9}g01L)?m3jhEB literal 0 HcmV?d00001 diff --git a/docs/Application_guide/zh/system/power-consumption.md b/docs/Application_guide/zh/system/power-consumption.md index 2ba8e184..fb412cf8 100644 --- a/docs/Application_guide/zh/system/power-consumption.md +++ b/docs/Application_guide/zh/system/power-consumption.md @@ -48,6 +48,10 @@ RTOS的休眠一般也会指令CPU进入睡眠模式,此时,高速时钟将 > 不同的RTOS可能实现休眠的逻辑不同,但原理基本类似 +**典型耗流特征:** + +![consumption_all](../media/system/power-consumption/consumption_all.png) + ### 蜂窝通信模组休眠 Quecpython支持的蜂窝通信模组要进入休眠,需要先使能休眠模式。不使能休眠模式时,模组空闲时默认处于IDLE状态。 @@ -349,6 +353,15 @@ if __name__ == '__main__': ## PSM 模式 ### 什么是PSM 模式 + +PSM模式是一种比休眠模式功耗更低的低功耗模式,其硬件原理就是模组关机+RTC闹钟唤醒。与关机+RTC闹钟唤醒相比,PSM模式有以下两点不通: + +1.RTC闹钟的唤醒时间由网络下发。 + +2.进入PSM模式时,模组虽然关机,但核心网仍然保留其注网信息。因此PSM唤醒时无需重新进行网络附着,联网速度更快,且功耗更低。 + + + PSM模式是在UE空闲一定时间后关闭信号的发送和接收,允许与AS(接入层)相关的功能,这相当于部分关闭,降低了天线、射频、信令处理等功耗。 PSM模式的优点是可以长时间睡眠,但缺点是无法及时应对终端接收(移动终端、MT)服务。主要应用在远程抄表和一些对实时性要求不高的场景中。 @@ -383,6 +396,10 @@ TAU,又称T3412,当模组完成网络业务(即RRC连接释放时)开始 ![Timer](../media/system/power-consumption/3GPP_PSM_TIMER.png) +模组收到基站下发的PSM时间后,会立即启动一个RTC闹钟和一个Timer。RTC闹钟是PSM模式的唤醒源,超时时间就是T3412的值,也就是说,经过T3412时间后,模组会被RTC唤醒,进入下一个周期。Timer的超时时间是T3324,只有其超时后模组才可能进入PSM模式,即RTC闹钟将模组唤醒后,模组会保持运行的时间为T3324。 + +由此可见,要想模组能正常进入PSM,T3324必须小于T3412,否则便会出现RTC闹钟已经超时,模组仍无法进入PSM模式的情况。 + ### PSM &RTC 模式下的功耗以及各平台支持情况 | | ECX00U | ECX00G | ECX00M | ECX00E | BG95 | @@ -431,6 +448,68 @@ PSM功耗虽低,但有以下缺点: 3.对数据实时性要求不高 +**示例代码:** + +```python +import utime +import pm +from machine import RTC +from misc import Power +import checkNet + +def Business_code_example(run_time): + i = 0 + for i in range(run_time): + print("Business app running") + #Business code here + utime.sleep(1) + + return + +def psm_try_set(): + if pm.get_psm_time()[0] == 1:#开机时获取psm是否设置,如果已经使能,则无需再次进行设置 + print("PSM has been enable, set pass") + return 0 + else: + return pm.set_psm_time(0,1,0,1)#T3412=10min T3324=1min + +def psm_failed_handle(delay_time): + utime.sleep(delay_time)#等待指定时长后,若模组仍未进入PSM模式,才会往下运行。此处执行PSM失败的处理逻辑,即代之以关机+RTC关机闹钟 + + rtc = RTC() + tm_rtc_tuple = rtc.datetime() + tm_rtc_second = utime.mktime((tm_rtc_tuple[0], tm_rtc_tuple[1], tm_rtc_tuple[2], tm_rtc_tuple[4], tm_rtc_tuple[5], tm_rtc_tuple[6], 0, 0)) + + alarm_second = tm_rtc_second + 600#RTC闹钟设为当前时间 + 10min + alarm_tuple = utime.localtime(alarm_second) + + rtc.set_alarm([alarm_tuple[0], alarm_tuple[1], alarm_tuple[2], alarm_tuple[6], alarm_tuple[3], alarm_tuple[4], alarm_tuple[5], 0]) + rtc.enable_alarm(1) + + Power.powerDown() + + +if __name__ == '__main__': + psm_failed_delay_time = 60 + 30 #PSM的 T3324超时30S后,启用错误处理逻辑 + lpm_fd = pm.create_wakelock("psm_lock", len("psm_lock")) #申请功耗锁 + + stage, state = checkNet.waitNetworkReady(30) + if stage == 3 and state == 1: + print('Network connection successful.') + psm_try_set() #网络连接成功时尝试设置PSM,如果PSM设置已经生效,则不用再次设置 + else: + print('Network connection failed.') + psm_failed_delay_time = 1 #PSM依赖网络,无网络时应立即使用RTC代替之 + + pm.wakelock_lock(lpm_fd)#锁定功耗锁,防止业务运行过程中出现sleep时错误进入PSM模式 + Business_code_example(10)#业务代码运行 + pm.wakelock_unlock(lpm_fd)#业务运行完成后,释放功耗锁。模组空闲状态且T3324超时后,自动进入PSM + + psm_failed_handle(psm_failed_delay_time)#运行错误处理,若模组能正常进入PSM,在sleep中就进入PSM了,该处实际的处理逻辑并不会运行 +``` + +[点此在github中下载完整代码](https://github.com/QuecPython/examples/blob/main/system/power-consumption/psm_example.py) + #### 如何进入PSM 需要在联网,且确认运营商支持PSM的前提下使用。根据业务需求决定ACT和TAU的周期,通过API设置即可: @@ -577,7 +656,7 @@ mA级耗流:全平台支持autosleep,根据其它需求评估适合型号 底电流近似一条稳定直线,选取一段平均电流即可。 ### 测量PSM电流 -测量PSM耗流之前,我们要设置PSM模式并检测是否生效,应用方法和检测PSM是否生效的方法可参照前文[PSM模式章节](#psm-模式)。 +测量PSM耗流之前,我们要设置PSM模式并检测是否生效,应用方法和检测PSM是否生效的方法可参照前文[PSM模式章节](#PSM 模式)。 确认能正常进入PSM休眠后,断开USB,我们开始测试。等待ACT定时器超时后,我们可查看PSM休眠下的底电流。 diff --git a/docs/Application_guide/zh/system/power-manager.md b/docs/Application_guide/zh/system/power-manager.md index 6df4f9c4..212fa9bc 100644 --- a/docs/Application_guide/zh/system/power-manager.md +++ b/docs/Application_guide/zh/system/power-manager.md @@ -23,7 +23,7 @@ ![soc_power](../media/system/power-manager/soc_power.png) -如图可见,典型SOC的供电系统中,powerkey同时给功能不同的IP核进行供电,同时进行兼顾开机和充电的管理。PMIC除了电源的输入/输出之外,往往还集成了时钟电路、RTC电路、多种模拟IP(一般ADC和温度传感器比较多见,部分PMIC内集成了音频CODEC)。PMIC是如何利用自身的多种功能进行电源管理呢?以下章节我们由PMIC入手,介绍其组成以及电源管理的实现。 +如图可见,典型SOC的供电系统中,PMIC同时给功能不同的IP核进行供电,同时进行兼顾开机和充电的管理。PMIC除了电源的输入/输出之外,往往还集成了时钟电路、RTC电路、多种模拟IP(一般ADC和温度传感器比较多见,部分PMIC内集成了音频CODEC)。PMIC是如何利用自身的多种功能进行电源管理呢?以下章节我们由PMIC入手,介绍其组成以及电源管理的实现。 ## PMU 简介 @@ -123,7 +123,7 @@ Powerkey,即电源键,用来控制模组开关机。该按键连接至 PMIC **关机时序图:** -![PowerkeyOff](../media/system/power-manager/PowerkeyOff.png) +![PowerkeyOff](../media/system/power-manager/Powerkeyoff.png) #### Powerkey长按开机的实现 在bootloader中对Powerkey进行电平检测和消抖,由于bootloader中一般不能使用ISR,实际的消抖大部分是轮询powerkey状态,保持低电平的时间低于消抖阈值则操作PMIC关机。 @@ -250,12 +250,58 @@ RTC(Real Time Clock)是PMIC上的一个单元,一般由一路关机时也 #### 闹钟原理和典型应用 +闹钟原理 + +RTC单元上除了存储实时时间的寄存器,还有一组(部分型号的模组有多组)可读写的寄存器作为alarm寄存器,CPU可操作该寄存器,存入某个时间值作为alarm时间。 + +RTC单元时间刷新的时候,会和alarm中所设的时间进行比较。一旦实时时间与alarm值相等,就会触发RTC alarm超时中断。当CPU处于关机状态时,该中断能指令PMIC触发CPU开机。而CPU处于开机状态时,能够触发CPU的中断(类似硬件定时器)。 + 应用方法参考:[class RTC – 实时时钟 ](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.RTC.html) -到系统时钟的链接: +**关机闹钟示例代码:** + +```python +import utime +from machine import RTC +from misc import Power + +def Business_code_example(run_time): + i = 0 + for i in range(run_time): + print("Business app running") + #Business code here + utime.sleep(1) + + return + +def rtc_alarm_set(alarm_time): + rtc = RTC() + tm_rtc_tuple = rtc.datetime() + tm_rtc_second = utime.mktime((tm_rtc_tuple[0], tm_rtc_tuple[1], tm_rtc_tuple[2], tm_rtc_tuple[4], tm_rtc_tuple[5], tm_rtc_tuple[6], 0, 0)) + + alarm_second = tm_rtc_second + alarm_time #RTC闹钟设为当前时间 + alarm_time, 即模组会在经过alarm_time s 后重启 + alarm_tuple = utime.localtime(alarm_second) + + rtc.set_alarm([alarm_tuple[0], alarm_tuple[1], alarm_tuple[2], alarm_tuple[6], alarm_tuple[3], alarm_tuple[4], alarm_tuple[5], 0]) + rtc.enable_alarm(1) + + utime.sleep(1)#部分模组RTC闹钟的设置是异步的,需要一定延迟,保证底层RTC信息能够被写入 + return + +if __name__ == '__main__': + alarm_time = 600 #RTC alarm 10min后触发 + Business_code_example(10)#业务代码运行 + + rtc_alarm_set(alarm_time)#设置alarm + Power.powerDown()#设置alarm后关机,RTC alarm超时会唤醒模组 +``` + +[点此在github中下载完整代码](https://github.com/QuecPython/examples/blob/main/system/power-consumption/RTC_example.py) + + > 注意事项: -> ECX00E系列模组没有RTC电路,其所谓RTC闹钟是硬件定时器实现的,可以在任何休眠等级下产生有效唤醒,但关机时不可用。 +> ECX00E系列模组没有RTC电路,其RTC闹钟是硬件定时器实现的,可以在任何休眠等级下产生有效唤醒源,但关机时不可用。 > BG95的RTC alarm和PSM T3412复用一个alarm寄存器,因此不能共存。 > 定时精度,BG95平台定时精度需要专门校准调整 > 唤醒频率,ECX00E系列模组在特定sleep时会将RTC_alarm寄存器写入flash,会涉及到擦写flash的操作,不宜太频繁 -- Gitee From bd99eb9141ef4d705e6dadec6b9adae9dc349270 Mon Sep 17 00:00:00 2001 From: "mark.zhu" Date: Fri, 1 Sep 2023 11:54:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?doc=20(power-consumption&power-manager):=20?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=B0=E7=89=88=E5=AE=98=E7=BD=91=E4=B8=AD?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9?= =?UTF-8?q?=201.=E4=BF=AE=E6=AD=A3=E6=96=B0=E7=89=88=E5=AE=98=E7=BD=91?= =?UTF-8?q?=E4=B8=AD=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= =?UTF-8?q?=202.=E4=BC=98=E5=8C=96PSM=E9=83=A8=E5=88=86=E7=9A=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=203.=E6=96=B0=E5=A2=9ERTC=E9=83=A8=E5=88=86=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N/A 是否需要文案翻译: 否 --- .../power-consumption/consumption_all.png | Bin 0 -> 79328 bytes .../zh/system/power-consumption.md | 81 +++++++++++++++++- .../zh/system/power-manager.md | 54 +++++++++++- 3 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 docs/Application_guide/zh/media/system/power-consumption/consumption_all.png diff --git a/docs/Application_guide/zh/media/system/power-consumption/consumption_all.png b/docs/Application_guide/zh/media/system/power-consumption/consumption_all.png new file mode 100644 index 0000000000000000000000000000000000000000..91882826f91a09a3542b95017e5307f112e3f954 GIT binary patch literal 79328 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 Uw==k&5B$^JXQ2IX@9}g01L)?m3jhEB literal 0 HcmV?d00001 diff --git a/docs/Application_guide/zh/system/power-consumption.md b/docs/Application_guide/zh/system/power-consumption.md index 2ba8e184..9eb7e99f 100644 --- a/docs/Application_guide/zh/system/power-consumption.md +++ b/docs/Application_guide/zh/system/power-consumption.md @@ -48,6 +48,10 @@ RTOS的休眠一般也会指令CPU进入睡眠模式,此时,高速时钟将 > 不同的RTOS可能实现休眠的逻辑不同,但原理基本类似 +**典型耗流特征:** + +![consumption_all](../media/system/power-consumption/consumption_all.png) + ### 蜂窝通信模组休眠 Quecpython支持的蜂窝通信模组要进入休眠,需要先使能休眠模式。不使能休眠模式时,模组空闲时默认处于IDLE状态。 @@ -349,6 +353,15 @@ if __name__ == '__main__': ## PSM 模式 ### 什么是PSM 模式 + +PSM模式是一种比休眠模式功耗更低的低功耗模式,其硬件原理就是模组关机+RTC闹钟唤醒。与关机+RTC闹钟唤醒相比,PSM模式有以下两点不同: + +1.RTC闹钟的唤醒时间由网络下发。 + +2.进入PSM模式时,模组虽然关机,但核心网仍然保留其注网信息。因此PSM唤醒时无需重新进行网络附着,联网速度更快,且功耗更低。 + + + PSM模式是在UE空闲一定时间后关闭信号的发送和接收,允许与AS(接入层)相关的功能,这相当于部分关闭,降低了天线、射频、信令处理等功耗。 PSM模式的优点是可以长时间睡眠,但缺点是无法及时应对终端接收(移动终端、MT)服务。主要应用在远程抄表和一些对实时性要求不高的场景中。 @@ -383,6 +396,10 @@ TAU,又称T3412,当模组完成网络业务(即RRC连接释放时)开始 ![Timer](../media/system/power-consumption/3GPP_PSM_TIMER.png) +模组收到基站下发的PSM时间后,会立即启动一个RTC闹钟和一个Timer。RTC闹钟是PSM模式的唤醒源,超时时间就是T3412的值,也就是说,经过T3412时间后,模组会被RTC唤醒,进入下一个周期。Timer的超时时间是T3324,只有其超时后模组才可能进入PSM模式,即RTC闹钟将模组唤醒后,模组会保持运行的时间为T3324。 + +由此可见,要想模组能正常进入PSM,T3324必须小于T3412,否则便会出现RTC闹钟已经超时,模组仍无法进入PSM模式的情况。 + ### PSM &RTC 模式下的功耗以及各平台支持情况 | | ECX00U | ECX00G | ECX00M | ECX00E | BG95 | @@ -431,6 +448,68 @@ PSM功耗虽低,但有以下缺点: 3.对数据实时性要求不高 +**示例代码:** + +```python +import utime +import pm +from machine import RTC +from misc import Power +import checkNet + +def Business_code_example(run_time): + i = 0 + for i in range(run_time): + print("Business app running") + #Business code here + utime.sleep(1) + + return + +def psm_try_set(): + if pm.get_psm_time()[0] == 1:#开机时获取psm是否设置,如果已经使能,则无需再次进行设置 + print("PSM has been enable, set pass") + return 0 + else: + return pm.set_psm_time(0,1,0,1)#T3412=10min T3324=1min + +def psm_failed_handle(delay_time): + utime.sleep(delay_time)#等待指定时长后,若模组仍未进入PSM模式,才会往下运行。此处执行PSM失败的处理逻辑,即代之以关机+RTC关机闹钟 + + rtc = RTC() + tm_rtc_tuple = rtc.datetime() + tm_rtc_second = utime.mktime((tm_rtc_tuple[0], tm_rtc_tuple[1], tm_rtc_tuple[2], tm_rtc_tuple[4], tm_rtc_tuple[5], tm_rtc_tuple[6], 0, 0)) + + alarm_second = tm_rtc_second + 600#RTC闹钟设为当前时间 + 10min + alarm_tuple = utime.localtime(alarm_second) + + rtc.set_alarm([alarm_tuple[0], alarm_tuple[1], alarm_tuple[2], alarm_tuple[6], alarm_tuple[3], alarm_tuple[4], alarm_tuple[5], 0]) + rtc.enable_alarm(1) + + Power.powerDown() + + +if __name__ == '__main__': + psm_failed_delay_time = 60 + 30 #PSM的 T3324超时30S后,启用错误处理逻辑 + lpm_fd = pm.create_wakelock("psm_lock", len("psm_lock")) #申请功耗锁 + + stage, state = checkNet.waitNetworkReady(30) + if stage == 3 and state == 1: + print('Network connection successful.') + psm_try_set() #网络连接成功时尝试设置PSM,如果PSM设置已经生效,则不用再次设置 + else: + print('Network connection failed.') + psm_failed_delay_time = 1 #PSM依赖网络,无网络时应立即使用RTC代替之 + + pm.wakelock_lock(lpm_fd)#锁定功耗锁,防止业务运行过程中出现sleep时错误进入PSM模式 + Business_code_example(10)#业务代码运行 + pm.wakelock_unlock(lpm_fd)#业务运行完成后,释放功耗锁。模组空闲状态且T3324超时后,自动进入PSM + + psm_failed_handle(psm_failed_delay_time)#运行错误处理,若模组能正常进入PSM,在sleep中就进入PSM了,该处实际的处理逻辑并不会运行 +``` + +[点此在github中下载完整代码](https://github.com/QuecPython/examples/blob/main/system/power-consumption/psm_example.py) + #### 如何进入PSM 需要在联网,且确认运营商支持PSM的前提下使用。根据业务需求决定ACT和TAU的周期,通过API设置即可: @@ -577,7 +656,7 @@ mA级耗流:全平台支持autosleep,根据其它需求评估适合型号 底电流近似一条稳定直线,选取一段平均电流即可。 ### 测量PSM电流 -测量PSM耗流之前,我们要设置PSM模式并检测是否生效,应用方法和检测PSM是否生效的方法可参照前文[PSM模式章节](#psm-模式)。 +测量PSM耗流之前,我们要设置PSM模式并检测是否生效,应用方法和检测PSM是否生效的方法可参照前文[PSM模式章节](#PSM 模式)。 确认能正常进入PSM休眠后,断开USB,我们开始测试。等待ACT定时器超时后,我们可查看PSM休眠下的底电流。 diff --git a/docs/Application_guide/zh/system/power-manager.md b/docs/Application_guide/zh/system/power-manager.md index 6df4f9c4..212fa9bc 100644 --- a/docs/Application_guide/zh/system/power-manager.md +++ b/docs/Application_guide/zh/system/power-manager.md @@ -23,7 +23,7 @@ ![soc_power](../media/system/power-manager/soc_power.png) -如图可见,典型SOC的供电系统中,powerkey同时给功能不同的IP核进行供电,同时进行兼顾开机和充电的管理。PMIC除了电源的输入/输出之外,往往还集成了时钟电路、RTC电路、多种模拟IP(一般ADC和温度传感器比较多见,部分PMIC内集成了音频CODEC)。PMIC是如何利用自身的多种功能进行电源管理呢?以下章节我们由PMIC入手,介绍其组成以及电源管理的实现。 +如图可见,典型SOC的供电系统中,PMIC同时给功能不同的IP核进行供电,同时进行兼顾开机和充电的管理。PMIC除了电源的输入/输出之外,往往还集成了时钟电路、RTC电路、多种模拟IP(一般ADC和温度传感器比较多见,部分PMIC内集成了音频CODEC)。PMIC是如何利用自身的多种功能进行电源管理呢?以下章节我们由PMIC入手,介绍其组成以及电源管理的实现。 ## PMU 简介 @@ -123,7 +123,7 @@ Powerkey,即电源键,用来控制模组开关机。该按键连接至 PMIC **关机时序图:** -![PowerkeyOff](../media/system/power-manager/PowerkeyOff.png) +![PowerkeyOff](../media/system/power-manager/Powerkeyoff.png) #### Powerkey长按开机的实现 在bootloader中对Powerkey进行电平检测和消抖,由于bootloader中一般不能使用ISR,实际的消抖大部分是轮询powerkey状态,保持低电平的时间低于消抖阈值则操作PMIC关机。 @@ -250,12 +250,58 @@ RTC(Real Time Clock)是PMIC上的一个单元,一般由一路关机时也 #### 闹钟原理和典型应用 +闹钟原理 + +RTC单元上除了存储实时时间的寄存器,还有一组(部分型号的模组有多组)可读写的寄存器作为alarm寄存器,CPU可操作该寄存器,存入某个时间值作为alarm时间。 + +RTC单元时间刷新的时候,会和alarm中所设的时间进行比较。一旦实时时间与alarm值相等,就会触发RTC alarm超时中断。当CPU处于关机状态时,该中断能指令PMIC触发CPU开机。而CPU处于开机状态时,能够触发CPU的中断(类似硬件定时器)。 + 应用方法参考:[class RTC – 实时时钟 ](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.RTC.html) -到系统时钟的链接: +**关机闹钟示例代码:** + +```python +import utime +from machine import RTC +from misc import Power + +def Business_code_example(run_time): + i = 0 + for i in range(run_time): + print("Business app running") + #Business code here + utime.sleep(1) + + return + +def rtc_alarm_set(alarm_time): + rtc = RTC() + tm_rtc_tuple = rtc.datetime() + tm_rtc_second = utime.mktime((tm_rtc_tuple[0], tm_rtc_tuple[1], tm_rtc_tuple[2], tm_rtc_tuple[4], tm_rtc_tuple[5], tm_rtc_tuple[6], 0, 0)) + + alarm_second = tm_rtc_second + alarm_time #RTC闹钟设为当前时间 + alarm_time, 即模组会在经过alarm_time s 后重启 + alarm_tuple = utime.localtime(alarm_second) + + rtc.set_alarm([alarm_tuple[0], alarm_tuple[1], alarm_tuple[2], alarm_tuple[6], alarm_tuple[3], alarm_tuple[4], alarm_tuple[5], 0]) + rtc.enable_alarm(1) + + utime.sleep(1)#部分模组RTC闹钟的设置是异步的,需要一定延迟,保证底层RTC信息能够被写入 + return + +if __name__ == '__main__': + alarm_time = 600 #RTC alarm 10min后触发 + Business_code_example(10)#业务代码运行 + + rtc_alarm_set(alarm_time)#设置alarm + Power.powerDown()#设置alarm后关机,RTC alarm超时会唤醒模组 +``` + +[点此在github中下载完整代码](https://github.com/QuecPython/examples/blob/main/system/power-consumption/RTC_example.py) + + > 注意事项: -> ECX00E系列模组没有RTC电路,其所谓RTC闹钟是硬件定时器实现的,可以在任何休眠等级下产生有效唤醒,但关机时不可用。 +> ECX00E系列模组没有RTC电路,其RTC闹钟是硬件定时器实现的,可以在任何休眠等级下产生有效唤醒源,但关机时不可用。 > BG95的RTC alarm和PSM T3412复用一个alarm寄存器,因此不能共存。 > 定时精度,BG95平台定时精度需要专门校准调整 > 唤醒频率,ECX00E系列模组在特定sleep时会将RTC_alarm寄存器写入flash,会涉及到擦写flash的操作,不宜太频繁 -- Gitee