wifi_ps basic —— 最精简的 WiFi 自动轻睡眠示例

功能说明

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 固件

build/remote/ap.bin

0x0

CP 固件

build/arcs.bin

0x100000

./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_init()

初始化 LISA PM 框架(内部自动启动 vrtc / HAL PM)

lisa_pm_wifi_set_ps_mode(LISTEN, &cfg)

启用 WiFi LISTEN PS,必须在 connect 之前调用

lisa_pm_set_system_policy(AUTO_LIGHT_SLEEP)

允许系统空闲时自动轻睡

lisa_pm_get_wakeup_cause()

读取最近一次归一化的唤醒原因

注意事项

  1. PS LISTEN 设置时机lisa_pm_wifi_set_ps_mode(LISTEN, ...) 必须在 wifi_sta_connect() 之前调用,否则 listen_interval 不会下发到 chip。

  2. WiFi 是 AUTO_LIGHT_SLEEP 的硬依赖:SDK 当前实现 light sleep 路径与 WiFi RF 状态绑定,WiFi 不连上不会真正进 light sleep。

  3. 两份固件必须一起烧:只烧 AP 不烧 CP,CP 跑不起来;只烧 CP 不烧 AP,PM 唤醒后无法把 CP 重启回 RAM 入口。