Wi-Fi 开发者配置
所有配置参数统一通过 wifi_user_conf
结构体进行管理。本节将详细介绍该结构体中的各项参数及其配置方法。
github source code
github source code
github source code
github source code
github source code
github source code
rtw_edcca_mode
能量检测-信道空闲评估机制(Energy-Detection Clear Channel Assessment)是一种管理无线设备访问信道的技术。它通过对环境中的信号能量进行监测,如果能量低于预定义的阈值,则信道被视为 “空闲”,并且允许设备进行传输。该过程最大限度的减少数据碰撞,确保多设备可以在同频进行有效传输。
参数 |
rtw_edcca_mode |
|
---|---|---|
类型 |
u8 |
|
取值 |
RTW_EDCCA_NORM |
根据实时信号强度测量值动态调整 EDCCA 阈值
|
RTW_EDCCA_ADAPT |
ETSI Adaptivity 测试模式,固定阈值 |
|
RTW_EDCCA_CS |
日本 Carrier Sense 测试模式,固定阈值 |
|
RTW_EDCCA_DISABLE |
关闭 EDCCA 模式 |
|
默认值 |
RTW_EDCCA_NORM |
tx_pwr_table_selection
一般情况下, Wi-Fi 发射功率由两组发射功率表的综合结果给出,取其中最小值作为最终的发射功率。
速率功率表:满足射频性能的情况下不同速率的最大发射功率。
功率限制表:当地法规为每个信道的 Wi-Fi 发射功率所施加的限制。
该参数则用于选择由哪组功率表来决定最终的发射功率:
参数 |
tx_pwr_table_selection |
|
---|---|---|
类型 |
u8 |
|
取值 |
0 |
选择速率功率表
|
1 |
选择功率限制表和速率功率表综合的结果
|
|
2 |
根据 efuse 中的设定值选择 |
|
默认值 |
2 |
rtw_trp_tis_cert_en
客户会需要评估终端的天线性能和整机射频链路的好坏,也即针对射频性能做一些测试,该测试也被称为 OTA(Over-The-Air)测试,一般通过总辐射功率和总全向灵敏度这两个关键指标来衡量,通常在电波暗室(Anechoic Chamber)中进行测试。
总辐射功率(Total Radiated Power):指设备在各个方向上发射的射频功率的总和,它衡量的是设备的发射性能。
总全向灵敏度(Total Isotropic Sensitivity):指设备在各个方向上能够成功解调信号所需的最低接收功率的平均值,它衡量的是设备的接收性能。
因为匹配不同测试环境的需求,需要做一些定制化的处理,根据如下表格进行配置:
参数 |
rtw_trp_tis_cert_en |
|
---|---|---|
类型 |
u8 |
|
取值 |
RTW_TRP_TIS_DISABLE |
关闭 TRP/TIS 测试定制化处理
|
RTW_TRP_TIS_NORMAL |
打开 TRP/TIS 测试定制化处理
|
|
RTW_TRP_TIS_DYNAMIC |
保留 |
|
RTW_TRP_TIS_FIX_ACK_RATE |
保留 |
|
RTW_TRP_TIS_FIX_PHY_ACK_HIGH_RATE |
保留 |
|
默认值 |
RTW_TRP_TIS_DISABLE |
wifi_wpa_mode_force
该参数用于强制指定一个特定的 Wi-Fi 保护接入(Wi-Fi Protected Acess)模式。
参数 |
wifi_wpa_mode_force |
||
---|---|---|---|
类型 |
u8 |
||
取值 |
RTW_WPA_AUTO_MODE |
跟随 AP 能力自动选择 WPA 模式 |
某些设备在处理 WPA 混合模式时可能存在问题,通过强制使用单一模式可以绕过有问题的协商过程,帮助设备成功连接。 这是一种常见的调试手段,用于定位问题是否出在安全模式的协商环节。
在某些测试环境中,测试人员需要验证设备在各种特定安全模式下的功能。 |
RTW_WPA_ONLY_MODE |
仅支持 WPA 模式 |
||
RTW_WPA2_ONLY_MODE |
仅支持 WPA2 模式 |
||
RTW_WPA3_ONLY_MODE |
仅支持 WPA3 模式 |
||
RTW_WPA_WPA2_MIXED_MODE |
支持 WPA/WPA2 模式 |
||
RTW_WPA2_WPA3_MIXED_MODE |
支持 WPA2/WPA3 模式 |
||
默认值 |
RTW_WPA_AUTO_MODE |
tdma_dig_enable
不支持
该参数用于 STA 模式下使能时分多址-动态初始增益机制(Time Division Multiple Access, Dynamic Initial Gain),通过不同时隙的划分选择接收不同能量大小的无线信号。
一般情况下,STA 模式通过当前和接入点之间的信号强度选择一个合适的能量接收范围。但是在一些多变的无线环境下,类似静态初始增益的设置方案对于突发弱信号的接收性能很差,TDMA-DIG 的方式可以让接收机能够更从容地处理从极强到极弱的各种信号,避免了饱和或信噪比不足的问题。
若是需要使用 TDMA-DIG 机制,请配置 wifi_user_config.tdma_dig_enable = 1
。
该参数用于 STA 模式下使能时分多址-动态初始增益机制(Time Division Multiple Access, Dynamic Initial Gain),通过不同时隙的划分选择接收不同能量大小的无线信号。
一般情况下,STA 模式通过当前和接入点之间的信号强度选择一个合适的能量接收范围。但是在一些多变的无线环境下,类似静态初始增益的设置方案对于突发弱信号的接收性能很差,TDMA-DIG 的方式可以让接收机能够更从容地处理从极强到极弱的各种信号,避免了饱和或信噪比不足的问题。
若是需要使用 TDMA-DIG 机制,请配置 wifi_user_config.tdma_dig_enable = 1
。
该参数用于 STA 模式下使能时分多址-动态初始增益机制(Time Division Multiple Access, Dynamic Initial Gain),通过不同时隙的划分选择接收不同能量大小的无线信号。
一般情况下,STA 模式通过当前和接入点之间的信号强度选择一个合适的能量接收范围。但是在一些多变的无线环境下,类似静态初始增益的设置方案对于突发弱信号的接收性能很差,TDMA-DIG 的方式可以让接收机能够更从容地处理从极强到极弱的各种信号,避免了饱和或信噪比不足的问题。
若是需要使用 TDMA-DIG 机制,请配置 wifi_user_config.tdma_dig_enable = 1
。
该参数用于 STA 模式下使能时分多址-动态初始增益机制(Time Division Multiple Access, Dynamic Initial Gain),通过不同时隙的划分选择接收不同能量大小的无线信号。
一般情况下,STA 模式通过当前和接入点之间的信号强度选择一个合适的能量接收范围。但是在一些多变的无线环境下,类似静态初始增益的设置方案对于突发弱信号的接收性能很差,TDMA-DIG 的方式可以让接收机能够更从容地处理从极强到极弱的各种信号,避免了饱和或信噪比不足的问题。
若是需要使用 TDMA-DIG 机制,请配置 wifi_user_config.tdma_dig_enable = 1
。
该参数用于 STA 模式下使能时分多址-动态初始增益机制(Time Division Multiple Access, Dynamic Initial Gain),通过不同时隙的划分选择接收不同能量大小的无线信号。
一般情况下,STA 模式通过当前和接入点之间的信号强度选择一个合适的能量接收范围。但是在一些多变的无线环境下,类似静态初始增益的设置方案对于突发弱信号的接收性能很差,TDMA-DIG 的方式可以让接收机能够更从容地处理从极强到极弱的各种信号,避免了饱和或信噪比不足的问题。
若是需要使用 TDMA-DIG 机制,请配置 wifi_user_config.tdma_dig_enable = 1
。
antdiv_mode
Ameba 芯片支持天线分集(Antenna Diversity)机制,利用多根天线来对抗无线通信中 “多径衰落” 效应,从而提高信号质量和连接可靠性。
简而言之就是通过动态切换天线来达到较优的传输/接收性能。软件层统计一段时间内接收封包的资讯,对诸如信号强度指示(Received Signal Strength Indication) 、误差矢量幅度(Error Vector Magnitude)、吞吐量等进行对比决策出当前性能较优的天线作为下一段时间的收发器天线。
参数 |
antdiv_mode |
|
---|---|---|
类型 |
u8 |
|
取值 |
RTW_ANTDIV_AUTO |
自动切换天线模式 |
RTW_ANTDIV_FIX_MAIN |
固定在 MAIN 天线 |
|
RTW_ANTDIV_FIX_AUX |
固定在 AUX 天线 |
|
RTW_ANTDIV_DISABLE |
关闭天线切换功能 |
|
默认值 |
RTW_ANTDIV_DISABLE |
如果需要使用天线分集机制,需要在编译固件的时候打开该功能,步骤如下:
导航至
{SDK}/amebaxxx_gcc_project
目录,执行以下指令:./menuconfig.py
找到
,选择 后保存退出。----Connectivity config---- CONFIG WHC INTF ---> CONFIG WIFI ---> SDK MODE (NORMAL INIC) ---> [ ] Enable WPS [ ] Enable CSI [*] Enable ANTDIV --- CONFIG BT ---> ... --->
不支持
不支持
不支持
Ameba 芯片支持天线分集(Antenna Diversity)机制,利用多根天线来对抗无线通信中 “多径衰落” 效应,从而提高信号质量和连接可靠性。
简而言之就是通过动态切换天线来达到较优的传输/接收性能。软件层统计一段时间内接收封包的资讯,对诸如信号强度指示(Received Signal Strength Indication) 、误差矢量幅度(Error Vector Magnitude)、吞吐量等进行对比决策出当前性能较优的天线作为下一段时间的收发器天线。
参数 |
antdiv_mode |
|
---|---|---|
类型 |
u8 |
|
取值 |
RTW_ANTDIV_AUTO |
自动切换天线模式 |
RTW_ANTDIV_FIX_MAIN |
固定在 MAIN 天线 |
|
RTW_ANTDIV_FIX_AUX |
固定在 AUX 天线 |
|
RTW_ANTDIV_DISABLE |
关闭天线切换功能 |
|
默认值 |
RTW_ANTDIV_DISABLE |
如果需要使用天线分集机制,需要在编译固件的时候打开该功能,步骤如下:
导航至
{SDK}/amebaxxx_gcc_project
目录,执行以下指令:./menuconfig.py
找到
,选择 后保存退出。----Connectivity config---- CONFIG WHC INTF ---> CONFIG WIFI ---> SDK MODE (NORMAL INIC) ---> [ ] Enable WPS [ ] Enable CSI [*] Enable ANTDIV --- CONFIG BT ---> ... --->
Ameba 芯片支持天线分集(Antenna Diversity)机制,利用多根天线来对抗无线通信中 “多径衰落” 效应,从而提高信号质量和连接可靠性。
简而言之就是通过动态切换天线来达到较优的传输/接收性能。软件层统计一段时间内接收封包的资讯,对诸如信号强度指示(Received Signal Strength Indication) 、误差矢量幅度(Error Vector Magnitude)、吞吐量等进行对比决策出当前性能较优的天线作为下一段时间的收发器天线。
参数 |
antdiv_mode |
|
---|---|---|
类型 |
u8 |
|
取值 |
RTW_ANTDIV_AUTO |
自动切换天线模式 |
RTW_ANTDIV_FIX_MAIN |
固定在 MAIN 天线 |
|
RTW_ANTDIV_FIX_AUX |
固定在 AUX 天线 |
|
RTW_ANTDIV_DISABLE |
关闭天线切换功能 |
|
默认值 |
RTW_ANTDIV_DISABLE |
如果需要使用天线分集机制,需要在编译固件的时候打开该功能,步骤如下:
导航至
{SDK}/amebaxxx_gcc_project
目录,执行以下指令:./menuconfig.py
找到
,选择 后保存退出。----Connectivity config---- CONFIG WHC INTF ---> CONFIG WIFI ---> SDK MODE (NORMAL INIC) ---> [ ] Enable WPS [ ] Enable CSI [*] Enable ANTDIV --- CONFIG BT ---> ... --->
concurrent_enabled
Wi-Fi 并发模式允许 Ameba 设备同时扮演两个不同的网络角色:STA 模式和 SoftAP 模式,不同模式的介绍详见 Wi-Fi 基础模式 章节。
若是需要使用 Wi-Fi 并发模式,请配置 wifi_user_config.concurrent_enabled = 1
。
SoftAP 配置
本节提供参数针对 SoftAP 模式进行能力、行为等的配置。
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 14 |
Softap 最大可允许连接设备数目 |
5 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 5 |
Softap 最大可允许连接设备数目 |
5 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 5 |
Softap 最大可允许连接设备数目 |
5 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 5 |
Softap 最大可允许连接设备数目 |
5 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 12 |
Softap 最大可允许连接设备数目 |
12 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
参数 |
类型 |
取值 |
描述 |
默认值 |
---|---|---|---|---|
ap_sta_num |
u8 |
1 ~ 5 |
Softap 最大可允许连接设备数目 |
5 |
ap_polling_sta |
u8 |
0 / 1 |
Softap 周期发送问询帧来确认 STA 是否仍在线
|
0 |
softap_addr_offset_idx |
u8 |
0 ~ 5 |
指定 Softap 的 MAC 地址的增量偏移位置(增量为 1) 备注
|
1 |
示例-地址换算
假定芯片的 MAC 地址是 00:e0:4c:01:02:03
softap_addr_offset_idx = 0 -> SoftAP 的 MAC 地址为 02:e0:4c:01:02:03
softap_addr_offset_idx = 1 -> SoftAP 的 MAC 地址为 00:e1:4c:01:02:03
softap_addr_offset_idx = 5 -> SoftAP 的 MAC 地址为 00:e0:4c:01:02:04
MAC 地址冲突限制
当 SoftAP 与芯片 MAC 地址相同时(wifi_user_config. concurrent_enabled = 0),STA 和 SoftAP 将无法同时工作,具体表现为:
SoftAP 启动后,STA 无法进行连线操作
STA 成功连线后,SoftAP 无法正确启动
省电配置
Ameba 系列芯片作为专为物联网(IoT)应用设计的低功耗 Wi-Fi/蓝牙 SoC,其核心设计理念之一便是极致的电源管理,允许开发者根据具体应用场景在性能、功耗和响应速度之间做出精确的权衡,省电模式的介绍可以参考 FreeRTOS 低功耗 章节获取详细信息。
下面对多种省电模式的配置进行详细展开:
非活动省电模式(Inactive Power Save)
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。
IPS 支持两种睡眠的状态:
Wi-Fi 完全断电,此时处于最大程度的 Wi-Fi 省电状态。
电源门控(Power Gating)模式,以求可以更快速的退出 IPS。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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 / 1
是否允许更快速的进入 IPS 状态
0
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。进入 IPS 状态后 Wi-Fi 会完全断电以求最大程度的省电。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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
ips_ctrl_by_usr
u8
0 / 1
是否允许更快速的进入 IPS 状态
0
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。进入 IPS 状态后 Wi-Fi 会完全断电以求最大程度的省电。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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
ips_ctrl_by_usr
u8
0 / 1
是否允许更快速的进入 IPS 状态
0
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。进入 IPS 状态后 Wi-Fi 会完全断电以求最大程度的省电。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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
ips_ctrl_by_usr
u8
0 / 1
是否允许更快速的进入 IPS 状态
0
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。进入 IPS 状态后 Wi-Fi 会完全断电以求最大程度的省电。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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
ips_ctrl_by_usr
u8
0 / 1
是否允许更快速的进入 IPS 状态
0
IPS 专为 Wi-Fi 未连接状态所设计,允许在没有网络连接时进入睡眠的状态,从而显著的延长电池续航的时间。进入 IPS 状态后 Wi-Fi 会完全断电以求最大程度的省电。
IPS 通过定时监测的方式进入,系统周期性的检查当前 Wi-Fi 的状态,在 Wi-Fi 未连接且不存在诸如扫描等特殊行为的情况下,根据配置进入相应的省电层级。我们同时也提供了一种快速的方式进入 IPS 状态,开发者需要配置
wifi_user_config.ips_ctrl_by_usr = 1
,然后调用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
ips_ctrl_by_usr
u8
0 / 1
是否允许更快速的进入 IPS 状态
0
传统省电模式(Legacy Power Save)
LPS 是基于 IEEE 802.11 标准最初的 Wi-Fi 省电机制所设计,其核心思想是允许客户端在 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 间隔)
无线局域网唤醒模式(Wake on Wireless LAN)
WoWLAN 是一种系统级的省电模式,当系统空闲时会暂停 CPU(不关闭时钟和电源),同时可配置实现射频状态的开启和关闭。在此模式下系统通过 Wi-Fi 的特殊事件来唤醒,比如收到单播数据包、收到广播/组播数据包以及接入点(Access Point)断联事件等,我们提供了配置可供开发者选择是否通过广播/组播数据包来唤醒系统工作。
参数
类型
取值
描述
默认值
wowlan_rx_bcmc_dis
u8
0 / 1
使能/关闭 WoWLAN 模式下允许广播或组播帧唤醒系统
0
其他配置参数
TBD