功耗常见问题
2023-08-31
模组进入低功耗的条件有哪些?
必须满足以下几个条件:
- USB 拔出,USB_VBUS没有外部电压。
- 系统唤醒锁全部释放(唤醒锁的数量可通过pm.get_wakelock_num()接口获取)。
- 无外部引脚中断干扰。
- 使能系统自动进入休眠(具体接口:pm.autosleep(sleep_flag))。
- CFUN=0 或者为正常注网状态。
展锐平台模组低功耗的部分唤醒源
唤醒源 | 类型 | 唤醒条件 & 处理方法 |
---|---|---|
UART | 外设 | 1.所有串口的收、发线程运行均会阻塞休眠,需要停止收发 2.MAIN_UART被open侧纳入低功耗管理,发AT时自动唤醒 |
RTC | 外设 | 到期时唤醒,合理使用即可 |
外部中断 | 外设 | 触发时会唤醒,保持设为中断的引脚处于非唤醒状态 |
USB | 外设 | 检测USB插入时唤醒,休眠时断开 |
wakeup引脚 | 外设 | 硬件唤醒引脚,拉低时唤醒,拉高时休眠 |
定时器 | 外设 | 休眠时关闭不需要的定时器,只保留必要任务的定时器 |
thread | 软件 | 除IDEL外的线程会阻塞休眠函数进入判断,需要全部sleep或阻塞 |
唤醒锁 | 软件 | 人为设定的唤醒源,需要休眠时关闭 |
移芯平台的休眠等级与行为
休眠等级 | 休眠等级 |
---|---|
IDLE | 关闭核心时钟,停止底层保持active的大循环,但任何系统中断均能重新拉起核心时钟并重新进入active状态 |
SLEEP1 | 大部分外围设备下电(除部分在规格书中标记为Always on的引脚仍保留功能),保留功能的外部中断、主串口和USB_VBUS能将模组从此模式唤醒(大约等同于其它平台的deepsleep,当前版本主串口唤醒失效) |
SLEEP2 | 关闭部分的sram(MSMB部分),保留64KB的sram(ASMB)在等待模式 |
HIBERNATE | 关闭ASMB部分,即所有SRAM全部关闭 |
BC25模组的工作模式及各模式下的功耗表现如何?
BC25的工作模式可以分为以下三种:
Active状态:
网络处于活动状态,可以进行数据发送和接收。所有模块功能正常可用,模块在此模式下可切换到 Idle 模式。
Idle状态:
网络处于 DRX 状态或者 eDRX 状态,可接收寻呼消息。所有模块功能正常可用,模块在此模式下可切换至 Active 或睡眠模式。
睡眠状态:
网络处于 eDRX 状态或者 PSM 状态,不可接收下行数据。进入睡眠后为最大程度降低模块功耗,会关闭相关外设,串口不再响应 AT 命令,CPU 停止运行,此时模块状态接近于关机状态。模块内部只有 RTC 工作。
各个模式下的功耗表现:
Active 模式网络处于活动状态,功耗较高,属于必须消耗不必关注。现在看三种低功耗网络应用模式:DRX、eDRX 和 PSM。其中 DRX 属于 Idle 态;eDRX 可以属于 Idle 态,也可属于睡眠态;PSM 属于睡眠态。
DRX 模式下,模块在每个 DRX 周期监听一次寻呼信道,功耗相对 eDRX 和 PSM 来说较高。
eDRX 就是模块不断地打开、关闭接收机,支持配置的时长为 20.48s ~ 2.92h,eDRX 功耗较 DRX 低。
PSM 打开、关闭接收机的频率更低,可低至几天打开一次接收机,PSM 模式下,进入睡眠后功耗只有微安级,终端在此工作模式下才可能实现极低的功耗,如“一节电池用数年”。