PM (功耗管理) 指令
对应源码:
components/airlink/include/luat_airlink_drv_pm.h,components/airlink/src/luat_airlink_cmds.c启用宏:
LUAT_USE_AIRLINK_EXEC_PM
PM 指令用于主机控制从机的功耗模式、电源开关和唤醒引脚.
通用 payload 头
所有 driver 指令的 data 字段前 8 字节是 seq_id (uint64_t, 小端, 单调递增), 用于匹配 cmd 0x08 result 回调. 详见 指令层描述.
指令列表
| cmd | 名称 | 方向 | 说明 |
|---|---|---|---|
| 0x600 | pm_request | 主→从 | 请求进入指定功耗模式 |
| 0x601 | pm_power_ctrl | 主→从 | 控制指定电源域开关 |
| 0x602 | pm_wakeup_pin | 主→从 | 配置唤醒引脚 |
各指令详细定义
pm_request (0x600)
请求从机进入指定功耗模式 (例如休眠).
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| mode | 1B | 功耗模式 (mode 编号由 luat_pm.h 定义, 例如 LUAT_PM_SLEEP_MODE_LIGHT / LUAT_PM_SLEEP_MODE_DEEP) |
详细的 mode 取值参考源码头文件
include/luat_pm.h.
pm_power_ctrl (0x601)
控制指定电源域开关 (例如 WiFi 模组的 PA/LDO).
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| id | 1B | 电源域 id (由 BSP 定义) |
| val | 1B | 0 = 关闭, 1 = 打开 |
pm_wakeup_pin (0x602)
配置唤醒引脚, 用于从深度休眠唤醒.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| pin | 1B | GPIO 引脚号 |
| val | 1B | 唤醒极性: 0 = 低电平唤醒, 1 = 高电平唤醒 |
相关 API
除 cmd 之外, AirLink 还提供以下电源管理接口 (见 binding/luat_lib_airlink.c):
| API | 作用 |
|---|---|
airlink.pause(mode) |
暂停/恢复 airlink 传输 task (0 = 恢复, 1 = 暂停). 休眠前调用 pause 持 mutex, 避免传输 task 干扰 |
airlink.power(enable) |
关闭/打开 wifi 供电 (仅 Air8000 自动调用) |
airlink.irqmode(enable, master_gpio, slave_gpio) |
启用 RDY/IRQ 引脚中断模式 |
airlink.wakeupIrqmode(enable, m_gpio, s_gpio, irq_mode) |
配置唤醒引脚极性 |
这些 API 通过 cmd 0x600/0x601/0x602 间接控制从机, 详见 物理层描述.