概述

IEEE 802.11 规范中定义的 Wi-Fi STA 省电模式包括以下关键特性:

  • 在未发送或接收数据时,进入休眠状态。

  • 定期唤醒以接收 AP 的 Beacon 帧。

  • 利用 Beacon 中的 TIM(Traffic Indication Map, 流量指示映射)进行数据管理。

站点休眠期间无法接收任何数据帧,因此 AP 需缓存待传数据帧,STA 需周期性唤醒检测信标帧。

Wi-Fi 省电模式的时序图如下:

../../_images/wifi_timeline_of_power_saving.svg

基于上述标准 IEEE 802.11 省电机制,Ameba 系列 SoC 提供了三种 Wi-Fi 省电模式:

模式

全称

描述

IPS

非活动省电模式

在未连接时实现完全断电状态

LPS

传统省电模式

在 Wi-Fi 连接状态下,在活跃和休眠状态之间切换,并定期打开或关闭收发器以实现省电

WoWLAN

无线局域网唤醒

允许 SoC 系统在保持 Wi-Fi 连接的同时进入睡眠模式

  • 系统可通过单播数据包、广播/组播数据包(可选)以及 AP 断连事件被唤醒

非活动省电模式(IPS)

非活动省电模式(Inactive Power Save,IPS)专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。

IPS 一般有两种睡眠层级:

  • Wi-Fi 完全断电,此时处于最大程度的 Wi-Fi 省电状态。

  • 电源门控(Power Gating)模式,以求可以更快速的退出 IPS。

编程接口

Ameba Wi-Fi 通过 wifi_set_ips_internal() 函数及一组相关参数,来实现对 IPS 行为的控制。IPS 控制流程如下图所示:

../../_images/ips_flow.svg

参数

类型

取值

描述

默认值

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

ips_ctrl_by_usr

wifi_set_ips_internal

行为

0

0

Y

动态开关 IPS 机制

  • 默认关闭 IPS

0

1

Y

关闭 IPS 机制

0

X

N

关闭 IPS 机制

1

0

Y

动态开关 IPS 机制

  • 默认使能 IPS

1

1

Y

动态进退 IPS 模式

  • 调用 wifi_set_ips_inetrnal() 可以快速退出 IPS 模式。

1

X

N

使能 IPS 机制

  • 系统通过周期性监测 Wi-Fi 状态决定是否进入预设的省电等级。

传统省电模式(LPS)

传统省电模式(Legacy Power Save,LPS)的核心思想是允许客户端在 Wi-Fi 连接状态且不存在无线数据传输的情况下进入睡眠状态,此时接入点(Access Point)为其缓存下行数据从而达到节省功耗的目的。

LPS 模式下,客户端需要周期性唤醒来接收 AP 的信标帧,并通过解析信标帧中流量指示图 (Traffic Indication Map) 元素获知是否存在自己的数据等待接收,若存在则保持清醒继续和 AP 进行数据交互。

../../_images/lps.svg

参数

类型

取值

描述

默认值

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