概述
IEEE 802.11 规范中定义的 Wi-Fi STA 省电模式包括以下关键特性:
在未发送或接收数据时,进入休眠状态。
定期唤醒以接收 AP 的 Beacon 帧。
利用 Beacon 中的 TIM(Traffic Indication Map, 流量指示映射)进行数据管理。
站点休眠期间无法接收任何数据帧,因此 AP 需缓存待传数据帧,STA 需周期性唤醒检测信标帧。
Wi-Fi 省电模式的时序图如下:
基于上述标准 IEEE 802.11 省电机制,Ameba 系列 SoC 提供了三种 Wi-Fi 省电模式:
模式 |
全称 |
描述 |
|---|---|---|
IPS |
非活动省电模式 |
在未连接时实现完全断电状态 |
LPS |
传统省电模式 |
在 Wi-Fi 连接状态下,在活跃和休眠状态之间切换,并定期打开或关闭收发器以实现省电 |
WoWLAN |
无线局域网唤醒 |
允许 SoC 系统在保持 Wi-Fi 连接的同时进入睡眠模式
|
非活动省电模式(IPS)
非活动省电模式(Inactive Power Save,IPS)专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。
IPS 一般有两种睡眠层级:
Wi-Fi 完全断电,此时处于最大程度的 Wi-Fi 省电状态。
电源门控(Power Gating)模式,以求可以更快速的退出 IPS。
编程接口
Ameba Wi-Fi 通过 wifi_set_ips_internal() 函数及一组相关参数,来实现对 IPS 行为的控制。IPS 控制流程如下图所示:
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
ips_enable |
u8 |
0/1 |
关闭/使能 IPS |
1 |
ips_level |
u8 |
RTW_IPS_WIFI_OFF |
IPS 状态下 Wi-Fi 断电 |
RTW_IPS_WIFI_OFF |
RTW_IPS_WIFI_PG |
IPS 状态下 Wi-Fi 进入 PG 模式 |
|||
ips_ctrl_by_usr |
u8 |
0 |
结合 API 控制开关 IPS 机制 |
0 |
1 |
结合 API 控制进退 IPS 模式 |
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
ips_enable |
u8 |
0/1 |
关闭/使能 IPS |
1 |
ips_level |
u8 |
RTW_IPS_WIFI_OFF |
IPS 状态下 Wi-Fi 断电 |
RTW_IPS_WIFI_OFF |
RTW_IPS_WIFI_PG |
不支持 |
|||
ips_ctrl_by_usr |
u8 |
0 |
结合 API 控制开关 IPS 机制 |
0 |
1 |
结合 API 控制进退 IPS 模式 |
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
ips_enable |
u8 |
0/1 |
关闭/使能 IPS |
1 |
ips_level |
u8 |
RTW_IPS_WIFI_OFF |
IPS 状态下 Wi-Fi 断电 |
RTW_IPS_WIFI_OFF |
RTW_IPS_WIFI_PG |
不支持 |
|||
ips_ctrl_by_usr |
u8 |
0 |
结合 API 控制开关 IPS 机制 |
0 |
1 |
结合 API 控制进退 IPS 模式 |
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
ips_enable |
u8 |
0/1 |
关闭/使能 IPS |
1 |
ips_level |
u8 |
RTW_IPS_WIFI_OFF |
IPS 状态下 Wi-Fi 断电 |
RTW_IPS_WIFI_OFF |
RTW_IPS_WIFI_PG |
不支持 |
|||
ips_ctrl_by_usr |
u8 |
0 |
结合 API 控制开关 IPS 机制 |
0 |
1 |
结合 API 控制进退 IPS 模式 |
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
ips_enable |
u8 |
0/1 |
关闭/使能 IPS |
1 |
ips_level |
u8 |
RTW_IPS_WIFI_OFF |
IPS 状态下 Wi-Fi 断电 |
RTW_IPS_WIFI_OFF |
RTW_IPS_WIFI_PG |
不支持 |
|||
ips_ctrl_by_usr |
u8 |
0 |
结合 API 控制开关 IPS 机制 |
0 |
1 |
结合 API 控制进退 IPS 模式 |
不同的组合方式功能参见如下表格:
ips_enable |
ips_ctrl_by_usr |
wifi_set_ips_internal |
行为 |
|---|---|---|---|
0 |
0 |
Y |
动态开关 IPS 机制
|
0 |
1 |
Y |
关闭 IPS 机制 |
0 |
X |
N |
关闭 IPS 机制 |
1 |
0 |
Y |
动态开关 IPS 机制
|
1 |
1 |
Y |
动态进退 IPS 模式
|
1 |
X |
N |
使能 IPS 机制
|
传统省电模式(LPS)
传统省电模式(Legacy Power Save,LPS)的核心思想是允许客户端在 Wi-Fi 连接状态且不存在无线数据传输的情况下进入睡眠状态,此时接入点(Access Point)为其缓存下行数据从而达到节省功耗的目的。
LPS 模式下,客户端需要周期性唤醒来接收 AP 的信标帧,并通过解析信标帧中流量指示图 (Traffic Indication Map) 元素获知是否存在自己的数据等待接收,若存在则保持清醒继续和 AP 进行数据交互。
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
lps_enable |
u8 |
0 / 1 |
关闭/使能 LPS |
1 |
lps_listen_interval |
u8 |
0 |
每个目标信标传输时间(Target Beacon Transmission Time)都唤醒来接收信标帧 |
0 |
> 0 |
配置接收信标帧的间隔,单位:102.4ms(TBTT 间隔) |
无线局域网唤醒模式(WoWLAN)
无线局域网唤醒模式(Wake on Wireless LAN,WoWLAN)是一种系统级的省电模式,当系统空闲时进入 低功耗模式—睡眠模式 ,但同时保有 Wi-Fi 连接。
WoWLAN 模式下,Wi-Fi 事件可以作为一种唤醒源来唤醒系统:
收到目标单播数据包
收到广播/组播数据包(可选,可通过配置参数开启或关闭该唤醒事件)
接入点(Access Point)断连事件
参数 |
类型 |
取值 |
描述 |
默认值 |
|---|---|---|---|---|
wowlan_rx_bcmc_dis |
u8 |
0 / 1 |
开启/关闭 WoWLAN 模式下允许广播或组播帧唤醒系统 |
0 |