luat_soc_sdk_2024 V1.0
电源管理类(低功耗)

宏定义

#define LUAT_PM_SLEEP_MODE_NONE   0
 
#define LUAT_PM_SLEEP_MODE_IDLE   1
 
#define LUAT_PM_SLEEP_MODE_LIGHT   2
 
#define LUAT_PM_SLEEP_MODE_DEEP   3
 
#define LUAT_PM_SLEEP_MODE_STANDBY   4
 
#define LUAT_PM_POWER_MODE_NORMAL   (0)
 去除所有降低功耗的措施
 
#define LUAT_PM_POWER_MODE_HIGH_PERFORMANCE   (1)
 尽可能保持性能,兼顾低功耗,使用LUAT_PM_SLEEP_MODE_LIGHT
 
#define LUAT_PM_POWER_MODE_BALANCED   (2)
 性能和功耗平衡,使用LUAT_PM_SLEEP_MODE_LIGHT
 
#define LUAT_PM_POWER_MODE_POWER_SAVER   (3)
 超低功耗,使用LUAT_PM_SLEEP_MODE_STANDBY,进入PSM模式
 

类型定义

typedef enum LUAT_PM_POWERON_REASON LUAT_PM_POWERON_REASON_E
 开机原因
 

枚举

enum  LUAT_PM_POWERON_REASON {
  LUAT_PM_POWERON_REASON_NORMAL = 0 , LUAT_PM_POWERON_REASON_FOTA , LUAT_PM_POWERON_REASON_ALARM , LUAT_PM_POWERON_REASON_SWRESET ,
  LUAT_PM_POWERON_REASON_UNKNOWN , LUAT_PM_POWERON_REASON_HWRESET , LUAT_PM_POWERON_REASON_EXCEPTION , LUAT_PM_POWERON_REASON_TOOL ,
  LUAT_PM_POWERON_REASON_WDT , LUAT_PM_POWERON_REASON_EXTERNAL , LUAT_PM_POWERON_REASON_CHARGING
}
 开机原因 更多...
 
enum  {
  LUAT_PM_POWER_USB , LUAT_PM_POWER_GPS , LUAT_PM_POWER_GPS_ANT , LUAT_PM_POWER_CAMERA ,
  LUAT_PM_POWER_DAC_EN_PIN , LUAT_PM_POWER_POWERKEY_MODE , LUAT_PM_POWER_WORK_MODE , LUAT_PM_POWER_LDO_CTL_PIN
}
 
enum  {
  LUAT_PM_ALL_GPIO , LUAT_PM_LDO_TYPE_VMMC , LUAT_PM_LDO_TYPE_VLCD , LUAT_PM_LDO_TYPE_CAMA ,
  LUAT_PM_LDO_TYPE_CAMD , LUAT_PM_LDO_TYPE_VLP33 , LUAT_PM_LDO_TYPE_VLP18 , LUAT_PM_LDO_TYPE_VIO18 ,
  LUAT_PM_LDO_TYPE_VIBR , LUAT_PM_LDO_TYPE_KEYLED , LUAT_PM_LDO_TYPE_VSIM1 , LUAT_PM_LDO_TYPE_QTY
}
 

函数

int luat_pm_request (int mode)
 请求进入指定的休眠模式
 
int luat_pm_release (int mode)
 退出休眠模式
 
int luat_pm_dtimer_start (int id, size_t timeout)
 启动底层定时器,在休眠模式下依然生效. 只触发一次
 
int luat_pm_dtimer_stop (int id)
 停止底层定时器
 
int luat_pm_dtimer_check (int id)
 检查底层定时器运行状态
 
int luat_pm_last_state (int *lastState, int *rtcOrPad)
 唤醒原因,用于判断是从开机是否是由休眠状态下开机/唤醒
 
int luat_pm_force (int mode)
 强制进入指定的休眠模式,忽略某些外设的影响,比如USB
 
int luat_pm_check (void)
 检查休眠状态
 
int luat_pm_dtimer_list (size_t *count, size_t *list)
 获取所有深度休眠定时器的剩余时间,单位ms
 
int luat_pm_dtimer_wakeup_id (int *id)
 获取唤醒定时器id
 
int luat_pm_poweroff (void)
 关机
 
int luat_pm_reset (void)
 重启
 
int luat_pm_power_ctrl (int id, uint8_t val)
 开启内部的电源控制,注意不是所有的平台都支持,可能部分平台支持部分选项,看硬件
 
int luat_pm_get_poweron_reason (void)
 开机原因
 
int luat_pm_iovolt_ctrl (int id, int val)
 设置IO电压域的电平
 
int luat_pm_wakeup_pin (int pin, int val)
 配置唤醒引脚,只针对esp系列
 
int luat_pm_set_power_mode (uint8_t mode, uint8_t sub_mode)
 设置联网低功耗模式,等同于AT+POWERMODE
 
uint32_t luat_pm_dtimer_remain (int id)
 深度休眠定时器剩余时间,单位ms
 

详细描述

宏定义说明

◆ LUAT_PM_POWER_MODE_BALANCED

#define LUAT_PM_POWER_MODE_BALANCED   (2)

性能和功耗平衡,使用LUAT_PM_SLEEP_MODE_LIGHT

在文件 luat_pm.h17 行定义.

◆ LUAT_PM_POWER_MODE_HIGH_PERFORMANCE

#define LUAT_PM_POWER_MODE_HIGH_PERFORMANCE   (1)

尽可能保持性能,兼顾低功耗,使用LUAT_PM_SLEEP_MODE_LIGHT

在文件 luat_pm.h16 行定义.

◆ LUAT_PM_POWER_MODE_NORMAL

#define LUAT_PM_POWER_MODE_NORMAL   (0)

去除所有降低功耗的措施

在文件 luat_pm.h15 行定义.

◆ LUAT_PM_POWER_MODE_POWER_SAVER

#define LUAT_PM_POWER_MODE_POWER_SAVER   (3)

超低功耗,使用LUAT_PM_SLEEP_MODE_STANDBY,进入PSM模式

在文件 luat_pm.h18 行定义.

◆ LUAT_PM_SLEEP_MODE_DEEP

#define LUAT_PM_SLEEP_MODE_DEEP   3

在文件 luat_pm.h12 行定义.

◆ LUAT_PM_SLEEP_MODE_IDLE

#define LUAT_PM_SLEEP_MODE_IDLE   1

在文件 luat_pm.h10 行定义.

◆ LUAT_PM_SLEEP_MODE_LIGHT

#define LUAT_PM_SLEEP_MODE_LIGHT   2

在文件 luat_pm.h11 行定义.

◆ LUAT_PM_SLEEP_MODE_NONE

#define LUAT_PM_SLEEP_MODE_NONE   0

在文件 luat_pm.h9 行定义.

◆ LUAT_PM_SLEEP_MODE_STANDBY

#define LUAT_PM_SLEEP_MODE_STANDBY   4

在文件 luat_pm.h13 行定义.

类型定义说明

◆ LUAT_PM_POWERON_REASON_E

枚举类型说明

◆ anonymous enum

anonymous enum
枚举值
LUAT_PM_POWER_USB 
LUAT_PM_POWER_GPS 
LUAT_PM_POWER_GPS_ANT 
LUAT_PM_POWER_CAMERA 
LUAT_PM_POWER_DAC_EN_PIN 
LUAT_PM_POWER_POWERKEY_MODE 
LUAT_PM_POWER_WORK_MODE 
LUAT_PM_POWER_LDO_CTL_PIN 

在文件 luat_pm.h40 行定义.

◆ anonymous enum

anonymous enum
枚举值
LUAT_PM_ALL_GPIO 
LUAT_PM_LDO_TYPE_VMMC 
LUAT_PM_LDO_TYPE_VLCD 
LUAT_PM_LDO_TYPE_CAMA 
LUAT_PM_LDO_TYPE_CAMD 
LUAT_PM_LDO_TYPE_VLP33 
LUAT_PM_LDO_TYPE_VLP18 
LUAT_PM_LDO_TYPE_VIO18 
LUAT_PM_LDO_TYPE_VIBR 
LUAT_PM_LDO_TYPE_KEYLED 
LUAT_PM_LDO_TYPE_VSIM1 
LUAT_PM_LDO_TYPE_QTY 

在文件 luat_pm.h53 行定义.

◆ LUAT_PM_POWERON_REASON

开机原因

枚举值
LUAT_PM_POWERON_REASON_NORMAL 

powerkey或者上电开机

LUAT_PM_POWERON_REASON_FOTA 

充电或者AT指令下载完成后开机

LUAT_PM_POWERON_REASON_ALARM 

闹钟开机

LUAT_PM_POWERON_REASON_SWRESET 

软件重启

LUAT_PM_POWERON_REASON_UNKNOWN 

未知原因

LUAT_PM_POWERON_REASON_HWRESET 

RESET键重启

LUAT_PM_POWERON_REASON_EXCEPTION 

异常重启

LUAT_PM_POWERON_REASON_TOOL 

工具控制重启

LUAT_PM_POWERON_REASON_WDT 

内部看门狗重启

LUAT_PM_POWERON_REASON_EXTERNAL 

外部重启

LUAT_PM_POWERON_REASON_CHARGING 

充电开机

在文件 luat_pm.h24 行定义.

函数说明

◆ luat_pm_check()

int luat_pm_check ( void )

检查休眠状态

返回
int ,见LUAT_PM_SLEEP_MODE_XXX

◆ luat_pm_dtimer_check()

int luat_pm_dtimer_check ( int id)

检查底层定时器运行状态

参数
id定时器id, 通常为0-3
返回
int =1正在运行,0为未运行

◆ luat_pm_dtimer_list()

int luat_pm_dtimer_list ( size_t * count,
size_t * list )

获取所有深度休眠定时器的剩余时间,单位ms

参数
count[OUT]定时器数量
list[OUT]剩余时间列表
返回
int =0成功,其他失败

◆ luat_pm_dtimer_remain()

uint32_t luat_pm_dtimer_remain ( int id)

深度休眠定时器剩余时间,单位ms

参数
id定时器ID
返回
uint32_t 0xffffffff失败,其他是剩余时间

◆ luat_pm_dtimer_start()

int luat_pm_dtimer_start ( int id,
size_t timeout )

启动底层定时器,在休眠模式下依然生效. 只触发一次

参数
id定时器id, 通常为0-3
timeout定时时长, 单位毫秒
返回
int =0成功,其他失败

◆ luat_pm_dtimer_stop()

int luat_pm_dtimer_stop ( int id)

停止底层定时器

参数
id定时器id, 通常为0-3
返回
int =0成功,其他失败

◆ luat_pm_dtimer_wakeup_id()

int luat_pm_dtimer_wakeup_id ( int * id)

获取唤醒定时器id

参数
id唤醒的定时id
返回
int =0成功,其他失败

◆ luat_pm_force()

int luat_pm_force ( int mode)

强制进入指定的休眠模式,忽略某些外设的影响,比如USB

参数
mode休眠模式 见LUAT_PM_SLEEP_MODE_XXX
返回
int =0成功,其他失败

◆ luat_pm_get_poweron_reason()

int luat_pm_get_poweron_reason ( void )

开机原因

返回
int ,见LUAT_PM_POWERON_REASON

◆ luat_pm_iovolt_ctrl()

int luat_pm_iovolt_ctrl ( int id,
int val )

设置IO电压域的电平

参数
id电压域ID,移芯平台忽略
val期望的电平值,单位mv
返回
int 成功返回0,其他失败

◆ luat_pm_last_state()

int luat_pm_last_state ( int * lastState,
int * rtcOrPad )

唤醒原因,用于判断是从开机是否是由休眠状态下开机/唤醒

参数
lastState0-普通开机(上电/复位),3-深睡眠开机,4-休眠开机
rtcOrPad0-上电/复位开机, 1-RTC开机, 2-WakeupIn/Pad/IO开机, 3-Wakeup/RTC开机
返回
int =0成功,其他失败

◆ luat_pm_power_ctrl()

int luat_pm_power_ctrl ( int id,
uint8_t val )

开启内部的电源控制,注意不是所有的平台都支持,可能部分平台支持部分选项,看硬件

参数
id电源控制id, 见LUAT_PM_POWER_XXX
val开关true/1开,false/0关,默认关,部分选项支持数值
返回
int =0成功,其他失败

◆ luat_pm_poweroff()

int luat_pm_poweroff ( void )

关机

◆ luat_pm_release()

int luat_pm_release ( int mode)

退出休眠模式

参数
mode休眠模式 见LUAT_PM_SLEEP_MODE_XXX
返回
int =0成功,其他失败

◆ luat_pm_request()

int luat_pm_request ( int mode)

请求进入指定的休眠模式

参数
mode休眠模式 见LUAT_PM_SLEEP_MODE_XXX
返回
int =0成功,其他失败

◆ luat_pm_reset()

int luat_pm_reset ( void )

重启

◆ luat_pm_set_power_mode()

int luat_pm_set_power_mode ( uint8_t mode,
uint8_t sub_mode )

设置联网低功耗模式,等同于AT+POWERMODE

参数
低功耗主模式见LUAT_PM_POWER_MODE_XXX
预留,低功耗次级模式,当主模式设置成LUAT_PM_POWER_MODE_BALANCED,可以微调功耗模式,当前不可用
返回
int =0成功,其他失败
注解
和luat_pm_set_sleep_mode,luat_pm_set_usb_power冲突,不可以同时使用

◆ luat_pm_wakeup_pin()

int luat_pm_wakeup_pin ( int pin,
int val )

配置唤醒引脚,只针对esp系列

参数
pin引脚
val电平
返回