wifi_ps + GPIO 唤醒示例

功能说明

basic 子工程 的 WiFi 自动轻睡眠基础上,把 PB6(板载 KEY1)注册为 PMU 唤醒源,演示按键唤醒 SoC + 唤醒原因读取。

GPIOB_00..GPIOB_09 可作 PMU 唤醒源。

与 basic 的差异

basic

gpio_wakeup

WiFi + AUTO_LIGHT_SLEEP

GPIO 唤醒 (PB6)

额外 Kconfig

——

CONFIG_LISA_DEVICE=y + CONFIG_LISA_GPIO_DEVICE=y + CONFIG_LISA_GPIOB=y

额外代码

——

setup_pb6_wakeup_source() + IRQ 回调

硬件连接

  • PB6 / GPIOB_06:板载 KEY1,pull-up,按下拉低

使用前修改

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 + GPIO wakeup ===
PB6 configured as wakeup source (LEVEL_LOW)
Waiting for WiFi + IP...
WiFi connected
DHCP success: 192.168.x.x
AUTO_LIGHT_SLEEP enabled, press PB6 to wake
tick: last wakeup cause = WIFI
PB6 IRQ (runtime press)              ← 按键时打印
tick: last wakeup cause = GPIO       ← 按键唤醒后下一次 tick
...
  • cause = WIFI / TIMER 是空闲态自然 wake

  • cause = GPIO 说明 PMU 由 PB6 唤醒 SoC

关键 API

/* 配置 GPIO 为 PMU 唤醒源 */
lisa_gpio_configure(gpiob, 6, LISA_GPIO_INPUT | LISA_GPIO_PULL_UP);
lisa_gpio_configure_wakeup(gpiob, 6, LISA_GPIO_WAKEUP_LEVEL_LOW);
lisa_device_wakeup_enable(gpiob, true);

/* 可选:运行态按键中断 */
lisa_gpio_configure_irq(gpiob, 6, LISA_GPIO_IRQ_EDGE_FALLING, cb, NULL);
lisa_gpio_enable_irq(gpiob, 6);

注意事项

  1. 唤醒电平方向:进 sleep 前 pin 必须处于与触发电平相反的状态。pull-up 按钮 + LEVEL_LOW → 未按下=高电平,按下=低电平 → 满足条件。

  2. IRQ 与 wakeup 独立:两者走不同硬件路径,同一 pin 触发条件相互独立:IRQ 用 EDGE_FALLING、wakeup 用 LEVEL_LOW

  3. GPIO 范围:只能用 GPIOB_00..GPIOB_09

  4. 依然依赖 WiFi 起来:与 basic 一样,AUTO_LIGHT_SLEEP 在 SDK 当前实现下要求 WiFi 已连接。