功耗测量
本章节基于默认 SDK,通过 WiFi 唤醒 和 GPIO 唤醒 两个低功耗示例,帮助用户快速熟悉并验证低功耗方案。
GPIO 唤醒测试
测试环境和工具准备
硬件设备:待测试开发板、USB Type C 连接线、测试电脑和杜邦线(用于连接测试 Pin 和 VCC/GND)
串口调试工具:用于观察开发板运行状态,以及发送测试指令
测量设备:电流源(或电压源)或数字万用表,以及配套上位机软件
测试代码
以 PA3 引脚作为唤醒源的测试代码如下,将其添加到 project_km4tz/src/main.c
或者 project_km4/src/main.c
,然后在 main 函数靠近末尾的地方调用测试函数:
void gpio_irq_handler(void *id, u32 event) { UNUSED(id); u32 GPIO_Pin = (event >> 16); u8 port_num = PORT_NUM(GPIO_Pin); GPIO_TypeDef *GPIO = (GPIO_TypeDef *)(GPIO_REG_BASE + port_num * 0x400); /* 0:AP; 1:NP */ RTK_LOGI(TAG, "Core %d GPIO_IRQ_HANDLED %x!\n", SYS_CPUID(), GPIO_Pin); RTK_LOGI(TAG, "GPIO_INT_STATUS = 0x%x\n", GPIO->GPIO_INT_STATUS); GPIO_INTConfig(GPIO_Pin, DISABLE); } void gpio_test(void) { GPIO_InitTypeDef GPIO_InitStruct = { .GPIO_Pin = _PA_3, .GPIO_PuPd = GPIO_PuPd_UP, .GPIO_Mode = GPIO_Mode_INT, .GPIO_ITTrigger = GPIO_INT_Trigger_EDGE, .GPIO_ITPolarity = GPIO_INT_POLARITY_ACTIVE_LOW, }; GPIO_INTConfig(_PA_3, DISABLE); GPIO_Init(&GPIO_InitStruct); InterruptRegister(GPIO_INTHandler, GPIOA_IRQ, (u32)GPIOA_BASE, 3); InterruptEn(GPIOA_IRQ, 3); GPIO_UserRegIrq(_PA_3, gpio_irq_handler, &GPIO_InitStruct); SOCPS_SetAPWakeEvent(WAKE_SRC_GPIOA, ENABLE); GPIO_INTConfig(_PA_3, ENABLE); }
测试流程
以下测试流程建立在官方开发板的基础上:
参考原理图,移除开发板 VDD33 和 VDD33_S 引脚之间的 0 欧姆电阻;
将电压源(必须输出 3.3v)的正极接到 VDD33_S 引脚,将负极接到 GND 引脚,然后打开电压源上位机软件,设置电压源输出 3.3v;
使用 USB TypeC 线连接开发板和电脑;
配置 GPIO 测试代码;
编译并下载包含 GPIO 唤醒配置的固件到目标开发板;
打开串口工具软件,选择开发板对应的串口,短按 chip en;
打开电压源上位机软件,查看电流波形;
待 log 输出结束后,输入测试指令
AT+TICKPS=R
进入休眠,观察此时电压源上位机的电流波形。然后,杜邦线一端连接 PA3,另一端短暂接 GND,即可唤醒 CPU。此时串口将打印中断 LOG,电压源上位机可以观察到此时电流值的变化。
备注
如果使用万用表,可以将其设置为电流档,然后把正极接 VDD33,负极接 VDD33_S。
LOG 如图 休眠时被 GPIO 唤醒 所示。输入 AT+TICKPS=R
指令后 CPU 进入休眠,待检测到 GPIO 的下降沿之后,CPU 被唤醒并执行中断,然后再次休眠。

休眠时被 GPIO 唤醒的 LOG
最终电流波形如 休眠时被 GPIO 唤醒 所示,休眠时的平均电流为 428.3uA,唤醒后的峰值电流超过 20mA。

休眠时被 GPIO 唤醒
WiFi 唤醒测试
测试环境和工具准备
硬件设备:待测试开发板、USB Type C 连接线、测试电脑
串口调试工具:用于观察开发板运行状态,以及发送测试指令
测量设备:电流源(或电压源)和配套上位机软件,也可以使用数字万用表
测试流程
在 amebaxxx_project 目录下,输入
./menuconfig.py
,打开菜单,使能 WiFi 选项将电压源(必须输出 3.3v)的正极接到 VDD33_S 引脚,将负极接到 GND 引脚,然后打开电压源上位机软件,设置电压源输出 3.3v;
使用 USB TypeC 线连接开发板和电脑;
编译并下载包含 WiFi 功能的的固件到目标开发板;
打开串口工具软件,选择开发板对应的串口,短按 chip en;
打开电压源上位机软件,查看电流波形;
待 log 输出结束后,输入指令
AT+WLCONN=ssid,<WiFi ssid>,pw,<password>
连接 WiFi,其中 WiFi ssid 和 password 需要替换成可用的 WiFi 及其密码(不加尖括号)。如果连接成功,串口会打印
assoc success
;然后输入AT+TICKPS=R
,观察电流波形;若连线失败,需要检查热点是否存在、开发板天线是否正确设置等。
LOG 如图 因收发 Beancon 周期性唤醒 所示。输入 AT+TICKPS=R
指令后 CPU 进入休眠,每隔 102ms 左右,系统被唤醒处理 Beancon,处理完成后再次休眠。

因收发 Beancon 周期性唤醒
WiFi 在休眠时定期唤醒 CPU 的电流波形如图 因收发 Beancon 周期性唤醒 所示,左侧均值电流超过 20mA,此时 CPU 仍处于 Active 状态;右侧休眠时的平均电流为 178.5uA,收发 beacon 时的电流接近 20mA。

因收发 Beancon 周期性唤醒