wifi_ps basic —— 最精简的 WiFi 自动轻睡眠示例
源码位置: samples/subsys/lisa_pm/wifi_ps/basic 查看源码
功能说明
lisa_pm 框架下最小的 WiFi 省电 + 自动 light-sleep 工程,不包含 GPIO 唤醒、不包含 MQTT。用于展示一个能正常进入自动轻睡眠所必需的全部步骤。
关键流程
lisa_pm_init() # 内部已自动跑 vrtc_init() + HAL pm_init()
→ mac_manager + DHCP 回调注册
→ lisa_wifi_init(ops)
→ 等 EVENT_WIFI_CONNECTED + DHCP success
→ lisa_pm_wifi_set_ps_mode(LISTEN, listen_interval=10)
→ net_enable_keep_alive()
→ lisa_pm_set_system_policy(AUTO_LIGHT_SLEEP)
→ 主循环每 5 秒打印 lisa_pm_get_wakeup_cause()
使用前修改
src/main.c 顶部:
#define TARGET_WIFI_SSID "YOUR_WIFI_SSID"
#define TARGET_WIFI_PWD "YOUR_WIFI_PASSWORD"
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在 SDK 根目录执行编译:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应的工具链。
烧录
本工程产出两份固件,必须同时烧到 flash 上才能正常运行:
固件 |
路径 |
烧录地址 |
|---|---|---|
AP 固件 |
|
|
CP 固件 |
|
|
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 \
0x0 build/remote/ap.bin \
0x100000 build/arcs.bin \
-C arcs
预期输出
=== lisa_pm wifi_ps basic ===
Waiting for WiFi + IP...
WiFi connected
DHCP success: 192.168.x.x
AUTO_LIGHT_SLEEP enabled (WiFi LISTEN interval=10)
tick: last wakeup cause = WIFI
tick: last wakeup cause = TIMER
...
进入自动轻睡眠后,多数 tick 的唤醒原因会是 WIFI(LISTEN beacon)或 TIMER(FreeRTOS tick)。
核心 API
API |
说明 |
|---|---|
|
初始化 LISA PM 框架(内部自动启动 vrtc / HAL PM) |
|
启用 WiFi LISTEN PS,必须在 connect 之前调用 |
|
允许系统空闲时自动轻睡 |
|
读取最近一次归一化的唤醒原因 |
注意事项
PS LISTEN 设置时机:
lisa_pm_wifi_set_ps_mode(LISTEN, ...)必须在wifi_sta_connect()之前调用,否则 listen_interval 不会下发到 chip。WiFi 是 AUTO_LIGHT_SLEEP 的硬依赖:SDK 当前实现 light sleep 路径与 WiFi RF 状态绑定,WiFi 不连上不会真正进 light sleep。
两份固件必须一起烧:只烧 AP 不烧 CP,CP 跑不起来;只烧 CP 不烧 AP,PM 唤醒后无法把 CP 重启回 RAM 入口。