跳转至

合宙模组的功耗说明

作者:陈取德

一,合宙模组的低功耗特性概述

- 1. 低功耗是合宙 4G Cat.1 模组最重要的特性之一;

- 2. 合宙 4G Cat.1 模组有三种功耗模式,分别有各自的特点;

- 3. 合宙 4G Cat.1 模组优异的低功耗表现,既有硬件设计的加持,也有软件协议算法的帮助;

- 4. 不同的应用场景,按需选择不同的合宙 4G Cat.1 模组功耗模式,以及三种功耗模式之间的相互转换;

- 5. 除实验室数据外,合宙更关注实网环境下的功耗表现,呈现给用户的效果更多以实网在线表现为准;

二、三种不同的功耗模式

1, 三种功耗模式的简捷定义

合宙的模组有三种功耗模式, 分别是: 常规模式,低功耗模式,PSM+ 模式,定义如下:

  • 常规模式;

  • 网络在线状态,随时响应服务器命令,CPU 满频运行,外设功能全部可用,比如,所有 GPIO 电平都可以控制;

  • 低功耗模式;

  • 网络在线状态,随时响应服务器命令,CPU 降频运行,外设功能部分可用,比如,仅可以控制 AGPIO 电平状态;

  • PSM+ 模式;

  • 网络离线状态,无法响应服务器命令,CPU 降频运行,外设功能部分可用,比如,仅 AGPIO 可以保持电平状态,无法控制;

2,三种功耗模式的细节差异

三种功耗模式的不同特性说明参见下表:

常规模式 低功耗模式 PSM+ 模式
4G在线状态 在线,长连接 在线,长连接 离线,飞行模式
CPU主频 满频 降频 降频
定时器唤醒 支持 支持 支持
中断唤醒 响应一切中断形式,比如WAKEUP/PWRKEY/GPIO中断等 只能通过WAKEUP/PWRKEY唤醒 只能通过WAKEUP/PWRKEY唤醒
服务器4G唤醒 支持,1秒内 支持,1秒内 不支持
串口唤醒 支持,任意波特率 支持,任意波特率可唤醒;9600波特率通信不会丢失数据; 支持,任意波特率
上行发送 1秒内响应 1秒内响应 3秒内响应
VEXT电源输出状态 保持输出 不能保持输出,也不能保持关闭,间歇性输出状态 完全关闭
所有GPIO管脚是否可以控制输出电平 可以 不可以 不可以
常规GPIO管脚是否可以保持电平 可以 不可以 不可以
特殊AGPIO管脚是否可以保持电平 可以 可以 可以
RAM供电及唤醒后软件运行状态 RAM供电,正常工作,满血状态 RAM供电,唤醒后保持原状态运行 RAM掉电,唤醒后程序从初始状态运行(PSM+状态前运行数据丢失)
典型功耗表现 较低(7~8mA) 均衡(1.5~2mA) 极低(3~12uA)

3,关于低功耗模式/PSM+ 模式对 GPIO 影响的说明

合宙Air700系列/Air780系列/Air8000系列模组在"低功耗模式/PSM+模式"下不同GPIO的功能表现不一致

请务必根据产品定义所需严谨选择,避免改版;

根据不同GPIO在"低功耗模式/PSM+模式下"的不同表现,可以将GPIO分为四类
- 1.AGPIO
     - 在低功耗模式(pm.WORK_MODE, 1)下
           进入低功耗模式后,能够保持之前设置的电平状态(上拉、下拉、输入),在脚本触发电平状态变动时也可以执行对应的动作,但是在执行电平状态变化的时刻,会回到常规模式,变换好后再进入低功耗状态;
           中断状态无效,不会唤醒模块;
     - PSM+ 模式(pm.WORK_MODE, 3)下
           进入PSM+模式后,能够保持之前设置得电平状态(上拉、下拉、输入),但是因为脚本停跑,所以无法再控制AGPIO变换电平状态
           中断状态无效,不会唤醒模块;

- 2.WAKEUP
    常规模式(pm.WORK_MODE,0)和休眠状态下(低功耗模式pm.WORK_MODE,1  PSM+模式pm.WORK_MODE,3)都可实现中断输入,不可用于输出;
    PSM+模式pm.WORK_MODE,3 下,模组可以被WAKEUP中断唤醒,具体是由哪一个WAKEUP管脚唤醒可以由pm.lastReson()函数确认;

- 3.AGPIOWU:既具备AGPIO的特性,又具备WAKEUP的特性,可以在进入低功耗时保持电平状态,也可以配置为中断状态,用于唤醒模块;

- 4.普通GPIO
     - 在低功耗模式(pm.WORK_MODE, 1)下
         处于间歇性掉电和间歇性输出相互切换的状态,掉电频率与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个
         无法保持固定电平状态(高电平/低电平)输出,原因是其电压域VDD_EXT是间歇性输出,所以该电压域下的GPIO在VDD_EXT没有输出的时间周期下为高阻态,这种情况下如果想要固定在某一个电平状态,可以通过上拉或下拉实现,上拉时可选择Vref电平
     - PSM+ 模式(pm.WORK_MODE, 3)下
         处于完全掉电状态,这种情况下如果想要固定在某一个电平状态,可以通过上拉或下拉实现,上拉时可选择Vref电平

4,如何选择功耗模式

1.不需要低功耗,希望模块一直保持正常状态的,可以使用第一种 "常规模式",该模式下,CPU 正常工作,所有外设均可启用
2.电池供电,和服务器之间是长连接,又希望降低功耗的,可以使用第二种"低功耗模式",该模式下,CPU 自动降频,RAM 保持供电,定时器(sys.timerStart/sys.wait/sys.timerLoopStart)/网络事件/IO 中断均可自动唤醒,普通 GPIO 掉电,外设驱动掉电,AON_GPIO 保持电平唤醒后程序继续运行
3.电池供电,和服务器之间不需要保持长连接,仅仅需要间隔几小时甚至几天才发一次数据给服务器,希望电池待机时间更久一些的,可以使用第三种"PSM+"模式,该模式下 CPU 自动降频,RAM 掉电, 普通 GPIO 掉电,外设驱动掉电,AON_GPIO 保持休眠前的电平,dtimer 定时器(深度休眠时使用的定时器,与普通 sys.timer 定时器不同)可唤醒,wakeup 脚可唤醒,唤醒后程序从头运行,休眠前的运行时数据全丢(部分重要数据可以使用 fskv 库存在 flash 中,实现掉电不丢失)

5,不同功耗模式下看门狗的工作状态

常规模式和低功耗模式(x 表示不支持)

Air700/Air780/Air8000系列 Air8101系列
内部硬件看门狗 开启 不支持用户开启,LuatOS内核固件自动开启 不支持用户开启,LuatOS内核固件自动开启
设置超时时长 不支持用户设置,LuatOS内核固件根据以下三种情况自动设置 1、从psm+模式下唤醒重启后,第一次超时时长固定为8秒 2、从psm+模式下唤醒重启,8秒内成功喂狗之后,超时时长固定为28秒 3、其余原因的重启或者开机,超时时长固定为28秒 不支持用户设置 LuatOS内核固件自动开启时,默认超时时长为8秒
喂狗 支持以下两种方式: 1、LuatOS用户脚本中,调用一次wdt.feed()接口喂一次狗 2、LuatOS内核固件中,每隔一段时间自动喂一次狗,这个间隔远远低于看门狗最小超时时长的8秒 不支持用户喂狗 LuatOS内核固件中,1秒自动喂一次狗
关闭 × ×
软件看门狗 开启 × LuatOS用户脚本中,调用wdt.init(timeout)
设置超时时长 × LuatOS用户脚本中,调用wdt.init(timeout) LuatOS用户脚本中,调用wdt.setTimeout(timeout)
喂狗 × LuatOS用户脚本中,调用wdt.feed()
关闭 × LuatOS用户脚本中,调用wdt.close()

PSM+ 模式(x 表示不支持)

Air700/Air780/Air8000系列 Air8101系列
内部硬件看门狗 开启 不工作 不工作
设置超时时长 不工作 不工作
喂狗 不工作 不工作
关闭 不工作 不工作
软件看门狗 开启 × 不工作
设置超时时长 × 不工作
喂狗 × 不工作
关闭 × 不工作

详细看门狗接口和文档请跳转 wdt-内部软硬件看门狗

6,管理功耗模式的相关 API 函数

PM 库的核心功能是统一管理模块的电源模式(Power Mode),根据功能分为几类控制接口:

1.主控 CPU 的休眠定时器管理;

- pm.dtimerStart(id, timeout)
- pm.dtimerStop(id)
- pm.dtimerCheck(id)
- pm.dtimerWkId()

2.主控 CPU 的唤醒原因;

- pm.lastReson()

3.主控 CPU 的关机和重启;

- pm.shutdown()
- pm.reboot()

4.主控 CPU 的常规、低功耗和 PSM+ 极低功耗模式切换;

- pm.power(id, mode, chip)

函数的详细接口信息请跳转 PM 核心库文档

三、三种模式功耗对比

1,常规模式

测试环境:780EPM 核心板,供电电压 3.8V,移动网络,心跳间隔 5 分钟,IP 数据包 80Byte,TCP 协议,合宙 netlab 服务器(https://netlab.luatos.com/);

下图为每 5 分钟向 TCP 服务器发送一次心跳,共采样 30 分钟的平均电流,如图可见,平均电流为 7mA 左右,每一个尖峰为一次心跳业务发送

下图为连接好服务器后什么都不做的功耗,其中平均电流为 6.4mA,每一个尖峰均为和基站进行一些底层的数据交互导致的电流增大,这些交互不能省,均是 3GPP 协议规定的交互,如果省去,有可能导致掉网。

下图为常规模式下发送一次数据的功耗清况,共耗时 5.38 秒,平均功耗 33mA 左右。

2,低功耗模式

测试环境:780EPM 核心板,供电电压 3.8V,移动网络,心跳间隔 5 分钟,IP 数据包 80Byte,TCP 协议,合宙 netlab 服务器(https://netlab.luatos.com/);

下图为上面的低功耗模式代码在链接服务器并发送完第一包数据以后 30 分钟的功耗,共计发送了 6 次数据包,所以整体的功耗里有 6 个较大的尖峰,平均功耗在 1.5mA 左右

下图为低功耗模式下,不发数据时,模块的功耗情况,每一处尖峰都是与基站之间进行必要的通讯带来的电流增大

下图为给服务器发数据时候的功耗,可以看出,从唤醒到发送数据最后继续休眠总计用时 4.7S 左右,此段的平均电流约为 31mA

3,PSM+ 模式

测试环境:780EPM 核心板,供电电压 3.8V,移动网络,心跳间隔 5 分钟,IP 数据包 80Byte,TCP 协议,合宙 netlab 服务器(https://netlab.luatos.com/);

下图为首次上电开机,模块开机时发送一次 TCP 心跳业务就立马进入 PSM+ 模式的功耗情况,从开机到连接服务器到发送心跳后休眠一共用时 3.6 秒,平均功耗 32mA。

(此为首次上电开机,非 PSM+ 模式的唤醒开机。唤醒开机请参考图二)

下图红框内为 PSM+ 模式下,唤醒模块发送数据后再进入休眠的功耗,从唤醒模块,发送数据到最后进入休眠总计花费约 2S,这 2S 内平均电流约为 35mA

下图为 PSM+ 模式下,模块待机时的功耗,3-12uA 都属于合理范围

4,各型号低功耗教程

详细低功耗测试教程请跳转对应型号的低功耗教程文档:

Air780EPM/EHM 低功耗教程

Air780EHV 低功耗教程

Air780EGH 低功耗教程

Air8000 系列低功耗教程

5,影响功耗的主要网络因素

(一)小数据量实时在线的功耗

小数据量通信,低频次传输,但是又需要实时在线,方便手机或者其他上位机方便的控制物联网设备。

本章描述的是,基于实网环境下,每次通信 100 个字节, 为了保持 TCP 连接不断链,几分钟和服务器通信一次。

1、测试条件
- 1 供电电压:      3.8V
- 2 测试服务器:    (https://netlab.luatos.com/),回环测试;
- 3 每次心跳的通信内容:  10字节字符串: "0123456789"    循环10次,一共 100字节;
- 4 驻网频段与驻网小区ID   B3频段,小区id  153708387
    其他频段的功耗,会略有差异,但是对于小数据量的传输场景来说,差异不会特别的大。
- 5 UART1串口波特率         9600
- 6 信号强度:         实网环境, RSRP[-86-88]之间;
- 7 测试硬件:    合宙Air780系列核心板
      删除了可能产生耗电的外设,比如 LED状态灯
2、影响实网功耗的主要网络因素

在实网,实时在线,小数据量传输场景下,影响功耗的因素有很多,按照影响力从大到小排序, 分别是:

(1)心跳间隔时间

在蜂窝通信的场景下,为了保持终端和服务器之间的TCP链接不断

要定时和服务器之间有心跳包的通信。

这个心跳包的定时间隔,根据多年经验,不能大于5分钟。

在不大于5分钟的条件下, 心跳包间隔越长, 功耗越低。

(2)实网信号强度

终端的4G信号强度越好 说明跟基站通信越容易。

因此终端就不需要用特别大的功率和基站通信,因此功耗就会比较低。

信号强度越差, 终端就需要用比较大的功率和基站通信,发射的功耗就会上升很多。

本文的测试数据, 是基于信号强度良好的情况下测试出来的,

这符合中国的4G信号的普遍情况

如果你的设备是在地下室,偏远地区这些信号比较弱的场景,

那么实际的设备的功耗,会上升一些。

(3)网络配置的 DRX 参数

在终端注册到4G网络后,网络会根据网络自身的负载情况,下发一个DRX参数

这个DRX参数的大概意思是,终端多长时间醒过来去查询一下无线信道,

看看网络有没有发什么通知给到终端。

DRX 参数越小,代表终端就会更频繁的去查询是否有网络来的通知,功耗就会越大。

DRX 参数是网络配置的,终端无法控制,常见的有0.32秒,0.64秒,1.28秒,2.56秒。

所以,当你在实网中测试的功耗数据有差异的话,是正常的现象。

(4)终端注册到 4G 的不同频段

国内的4G网络,有如下几个:

B1B3B5B8B34B38B39B40B41

终端会根据信号强度的不同,选择一个信号最好的频段去驻留。

本文给出的数据, 是终端驻留到 B3 的数据。

其他的频段的功耗数据会略有差异,对于小数据量通信的场景,差异不会很大。

(二)长时间休眠低频次唤醒的功耗

在某些场景下,模组绝大多数时间深度休眠状态, 几个小时醒过来一次,

向服务器端发送报文,然后继续深度休眠。

由于不存在 TCP 链接, 所以服务器端无法主动向终端发送消息。

服务器只能等待终端主动通信, 再通过回复消息,对终端做控制和参数配置。

所以无法实现对终端的实时控制。

这时候,模组的平均功耗,是非常低的,只有几个微安。

1,测试条件
- 1 供电电压:      3.8V
- 2 测试服务器:    (https://netlab.luatos.com/),回环测试;
- 3 每次心跳的通信内容:  10字节字符串: "0123456789"    循环10次,一共 100字节;
- 4 驻网频段与驻网小区ID   B3频段,小区id  153708387
    其他频段的功耗,会略有差异,但是对于小数据量的传输场景来说,差异不会特别的大。
- 5 UART1串口波特率         9600
- 6 信号强度:         实网环境, RSRP[-86-88]之间;
- 7 测试硬件:    合宙Air780系列核心板
      删除了可能产生耗电的外设,比如 LED状态灯
2,影响实网功耗的主要网络因素

在非实时在线,深度休眠,定时醒来通信的通信场景下,影响功耗的因素,按照影响力从大到小排序, 分别是:

(1)定时醒来的间隔时间

深度休眠的功耗非常低,只有几个微安。

醒来通信的功耗相比深度休眠,功耗高了至少百倍。

所以,醒过来的频次越低,总体功耗就越低。

醒来的频次越高, 总体功耗就越高。

(2)实网信号强度

终端的4G信号强度越好 说明跟基站通信越容易。

因此终端就不需要用特别大的功率和基站通信,因此功耗就会比较低。

信号强度越差, 终端就需要用比较大的功率和基站通信,发射的功耗就会上升很多。

本文的测试数据, 是基于信号强度良好的情况下测试出来的,

这符合中国的4G信号的普遍情况

如果你的设备是在地下室,偏远地区这些信号比较弱的场景,

那么实际的设备的功耗,会上升一些。

定时醒来的越频繁, 信号强度对功耗的影响越大;

如果一天只醒来一次, 功耗的消耗主要是休眠的功耗消耗,信号强度对功耗的影响就没那么大了。