Open开发必知:电源管理核心API的深度解析与高效应用策略!

面对日益复杂的低功耗应用需求,Open开发平台提供了丰富的电源管理API工具箱。从动态电压调节到任务调度优化,这些核心API构成了设备能效管理的底层基石。本文将带您深入API内部逻辑,揭示如何通过精细化配置实现功耗与性能的完美平衡。

最新资料详见:https://docs.openluat.com/air780epm/luatos/api/core/pm/

在实际应用中可灵活结合硬件设计,实现物联网设备超低功耗待机‌、‌动态性能优化‌、‌电池保护及系统防崩溃‌的完整电源管理方案。

一、Air780EPM低功耗模式

1.1 功耗模式定义及典型功耗

Air780EPM三种功耗模式的介绍,“常规模式”、“低功耗模式”、“PSM+模式”,以及典型实网环境条件下的功耗测试数据,如下表所示:


1.2 如何设置Air780EPM功耗模式

我知道你一定会问:为什么1和2都是低功耗模式?Why?

历史原因,pm.WORK_MODE在LuatOS中定义了4个模式,但是,就Air780EPM这一特定型号来说,为了方便理解和简化设计,只定义了3种功耗模式,所以就出现了1和2都是低功耗模式的结果。

注意:1和2没有任何区别,设置1和2都是同一个低功耗模式,请大家在设计时务必注意!!!

1.3 pm.power(id, int)

设置Air780EPM进入常规模式、低功耗模式、PSM+模式的函数。

1)参数:

id:int型(功耗模式控制id,pm.WORK_MODE);

int:int型(0,常规模式;1,低功耗模式;2,低功耗模式;3,PSM+模式; )。

2)返回值:

返回值类型:boolean;

说明:处理结果true成功,false失败。

3)例子:


二、与定时器唤醒相关的函数

2.1 pm.dtimerStart(id, timeout)

启动底层定时器,在常规模式/低功耗模式/PSM+模式下都可以生效,只触发一次;注意,关机状态下无效。

1)参数:

id:int型

定时器id;Air780EPM可以设置多个定时器,不同的定时器ID代表不同的定时器进程;一般来说,定时器进程不要超过6个。相应的,定时器ID的取值范围是0-5; 其中,0和1的最大休眠时长是2.5小时,2到5的最大休眠时长是740小时。

timeout:int型(定时时长,单位毫秒)。

2)返回值:

返回值类型:boolean;

说明:处理结果。

3)例子:


2.2 pm.dtimerStop(id)

关闭底层定时器

1)参数:

id:int型(定时器id);

2)返回值:

3)例子:


2.3 pm.dtimerCheck(id) 

检查底层定时器是不是在运行。

1)参数:

id:int型(定时器id);

2)返回值:

返回值类型:boolean(处理结果,true还在运行,false不在运行);

返回值类型:number(如果运行,运行剩余时间,单位毫秒)。

3)例子:


2.4 dtimerWkId()

检查定时唤醒是哪一个定时器,如果不是定时唤醒的,返回-1。

1)参数:

2)返回值:

int型(处理结果 >=0 是本次定时唤醒的定时器ID,其他错误,说明不是定时唤醒的)。

3)例子:


三、开机、关机、重启等相关函数

3.1 pm.lastReson()

Air780EPM共有如下几种开机形式:

PSM+模式下,RAM掉电,PSM+模式前数据丢失,退出PSM+模式后代码需要从头开始运行,这个过程,也被视为"开机";

从PSM+模式到低功耗模式或常规模式,原因有 定时器唤醒、WAKEUP唤醒、开机键唤醒、UART1唤醒 四种唤醒方式,这四种唤醒方式,是Air780EPM的开机原因之一;

除从PSM+模式到低功耗模式或常规模式的开机之外,还有关机状态下的PWRKEY开机、常规模式/低功耗模式/PSM+模式下的Reset重启,闹钟开机、软件重启、LuaTools等工具控制重启、内部看门狗重启、外部重启以及程序跑飞下的异常开机等。 

pm.lastReson()函数,就是用来识别和返回Air780EPM这些开机原因的函数。

1)参数:

id:int型

定时器id;Air780EPM可以设置多个定时器,不同的定时器ID代表不同的定时器进程;一般来说,定时器进程不要超过6个。相应的,定时器ID的取值范围是0-5; 其中,0和1的最大休眠时长是2.5小时,2到5的最大休眠时长是740小时。

timeout:int型(定时时长,单位毫秒)。

2)返回值:

3)例子:


3.2 pm.shutdown()

用于关机。

1)参数:

2)返回值:nil(无返回值)

3)例子:


3.3 pm.reboot()

用于重启。

1)参数:

2)返回值:nil(无返回值)

3)例子:


四、IO电平介绍及相关设置函数

pm.ioVol(id, val)

IO高电平电压控制函数

Air780EPM的IO高电平,出厂默认3.0V:

可以通过将Air780EPM的PIN100:IO_Volt_Set拉低到GND改变IO高电平,开机即设置为1.8V;

也可以通过此函数,将IO高电平设置为典型值1.8V/2.8V/3.0V/3.3V。注意!设置IO高电平,实际设置的是Air780EPM的PIN24:VDD_EXT的电压,IO高电平与VDD_EXT电压保持一致。

任何情况下,无论Air780EPM的PIN100:IO_Volt_Set是悬空还是下拉到GND,IO高电平都是以本函数的设置为优先。

1)参数:

id:int型(电平id,目前只有pm.IOVOL_ALL_GPIO);

val:int型(电平值,单位毫伏)。

2)返回值:

返回值类型:boolean(处理结果true成功,false失败)。

3)例子:


五、相关补充说明

5.1 关于PSM+模式的补充说明

PSM+模式下,模组处于离线状态,无法接收服务器下发信息;退出PSM+模式后,Air780EPM大概在3秒内可以驻网成功。

5.2 关于低功耗模式的补充说明

给出的低功耗模式下的数据,是在特定条件下的测试数据,比如,DRX=2.56秒。

实际环境下,信号质量、DRX间隔等都是由模组所处环境的基站决定,模组并不能自行设置。因此,功耗表现可能与测试数据有差异。

一般情况下,低功耗模式下,模组的功耗在1mA左右都可以被认为是正常表现。

5.3 关于WAKEUP中断唤醒的补充说明

模组在PSM+模式下有四种常见的唤醒方式:

定时器唤醒;

开机键PWRKEY;

串口UART1接收数据;

WAKEUP中断;

其中,WAKEUP中断的使用方式会在API库GPIO中进行介绍,开机键PWRKEY本质上也是WAKEUP。

比如:WAKEUP0,则用gpio.WAKEUP0;pwrkey,则用常量 gpio.PWR_KEY。

5.4 关于PWRKEY开机和Reset复位的补充说明

Air780EPM默认开启了PWRKEY开机防抖;因为开启了PWRKEY开机防抖,所以Reset复位功能就转变成了关机,不能复位。

所以,Air780EPM的Reset是关机,不是复位!

Air780EPM最新开发资料详见:

www.air780epm.cn

今天的内容就分享到这里了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值