一. 测试目的
经常会有开发者提出基于 ESP32 的不同 RF 校准模式 & Wi-Fi 协议对复位上电启动时间以及电流功耗影响的疑问,本文将进行此项测试。
二. 测试环境
为了保证测试结果的一致性,采用以下测试环境:
-
esp-idf
本文使用 release/v3.3 版本进行测试,对应 commit 为 2befd5c。可通过以下命令确认:git log --oneline -1
结果为:
2befd5c Merge branch 'feature/wifi_prov_ext_httpd_v3.3' into 'release/v3.3'
-
toolchain 版本
gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) ,可通过以下命令确认:xtensa-esp32-elf-gcc -v
结果为(log 过长,只需要关注最后的这部分。如下):
Thread model: posix gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a)
-
测试主机
Linux 环境,Ubuntu 16.04 LTS,可选用其他平台。 -
开发板
ESP32-WROOM-32D 开发板,可选用其他基于 ESP32 的开发板。 -
测试示例
esp-idf 里的 station 示例。 -
测试工具
Tektronix MDO3104 示波器。
三. 测试步骤
此次示例使用了 esp-idf 里的 station 示例 。
1. 接入示波器
测试时测量 Vcc 引脚上连接导线的电流即可。
2. 代码修改
首先你需要 下载并配置 esp-idf,配置完成后,我们输入以下指令来进入对应的项目:
cd ~/esp/esp-idf/examples/wifi/getting_started/station
然后你需要添加 Wi-Fi 协议设置的 API 和 修改 ESP32 的不同 RF 校准模式。以下是具体的操作:
- 添加 Wi-Fi 协议设置的 API:在
station_example_main.c
里的wifi_init_sta()
函数中添加esp_wifi_set_protocol(ESP_IF_WIFI_STA,WIFI_PROTOCOL_11B)
,这样就将 Wi-Fi 协议设置为 802.11b。以下是 esp-idf 支持的 Wi-Fi 协议:
802.11 B esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B) 802.11 BG esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G) 802.11 BGN esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G|WIFI_PROTOCOL_11N) 802.11 BGNLR esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G|WIFI_PROTOCOL_11N|WIFI_PROTOCOL_LR) 802.11 LR esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_LR)
注:ifx 参数在此处应为 ESP_IF_WIFI_STA。
- 修改 ESP32 的不同 RF 校准模式:在
phy_init.c
的 645 行修改calibration_mode
,如下:
这里的校准模式有以下三个参数:#ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE esp_phy_calibration_mode_t calibration_mode = PHY_RF_CAL_NONE;
PHY_RF_CAL_NONE
不进行校验PHY_RF_CAL_PARTIAL
部分校验PHY_RF_CAL_FULL
全校验
3. 固件烧写及串口监视
在正确修改 Wi-Fi 协议 与 RF 校准模式后,你就可以开始进行固件烧写及串口监视了,首先你需要针对 Wi-Fi 账号密码进行简单配置:
make menuconfig
在 menuconfig
界面,你需要设置需要连接的 AP 的 SSID
和 password
,然后就可以运行如下指令进行固件烧录及串口监视:
make flash monitor
在串口监视工具中,当你看到 Wi-Fi 成功连接时,就可以进行开始复位上电启动时间以及电流功耗测试了。
四. 测试结果
运行此示例,在首次烧录并成功连接到 AP 之后,你需要将 ESP32 复位,这样就可以进行对应的 RF 校验模式。以下是对应不同 Wi-Fi 协议下的 各种 RF 校准测试结果:
1. Wi-Fi IEEE 802.11b 协议
校准模式 | 此校准在启动阶段消耗的时间 | 此校准在启动阶段最大的电流功耗 |
---|---|---|
PHY_RF_CAL_PARTIAL | 46 ms | 442 mA |
PHY_RF_CAL_NONE | 12 ms | 396 mA |
PHY_RF_CAL_FULL | 40 ms | 444 mA |
对应示波器截图如下:
- PHY_RF_CAL_PARTIAL
- PHY_RF_CAL_NONE
- PHY_RF_CAL_FULL
2. Wi-Fi IEEE 802.11b/g 协议
校准模式 | 此校准在启动阶段消耗的时间 | 此校准在启动阶段最大的电流功耗 |
---|---|---|
PHY_RF_CAL_PARTIAL | 46 ms | 436 mA |
PHY_RF_CAL_NONE | 18 ms | 404 mA |
PHY_RF_CAL_FULL | 46 ms | 436 mA |
对应示波器截图如下:
-
PHY_RF_CAL_PARTIAL
-
PHY_RF_CAL_NONE
-
PHY_RF_CAL_FULL
3. Wi-Fi IEEE 802.11b/g/n 协议
校准模式 | 此校准在启动阶段消耗的时间 | 此校准在启动阶段最大的电流功耗 |
---|---|---|
PHY_RF_CAL_PARTIAL | 44 ms | 444 mA |
PHY_RF_CAL_NONE | 20 ms | 420 mA |
PHY_RF_CAL_FULL | 44 ms | 444 mA |
对应示波器截图如下:
- PHY_RF_CAL_PARTIAL
- PHY_RF_CAL_NONE
- PHY_RF_CAL_FULL
五. 总结
通过以上方法,可测出 ESP32 的不同 RF 校准模式 & Wi-Fi 协议对复位上电启动时间以及电流功耗,用户可选择采用以上方法对自己的 ESP32 进行对应测试。同时可以发现不同的 Wi-Fi 协议对 ESP32 的 Wi-Fi 功能也有影响,后续将做进一步测试。
六. 附录:相关知识整理
1. Wi-Fi IEEE 802.11b
IEEE 802.11b 是无线局域网的一个标准。其载波的频率为 2.4 GHz,可提供 1、2、5.5 及 11 Mbit/s 的多种传输速度。在 2.4 GHz 的 ISM 频段共有 11 个频宽为 22 MHz 的频道可供使用,它是 11 个相互重叠的频段。IEEE 802.11b 的后继标准是 IEEE 802.11g。
802.11b 工作在 2.4G 的 ISM 频段上,物理层上使用了的补码键控(CCK)调制方式,不同于 802.11 原始标准,使得最大速率达到 11 Mbps。在介质访问控制上,标准采用载波侦听多路访问/冲突避免(CSMA/CA)的方式,这与原始标准相同。考虑到 CSMA/CA 协议的开销,802.11b 设备间的最大吞吐量,TCP 可以达到 5.9 Mbps,UDP达到 7.1 Mbps。由于微波炉,蓝牙设备,ZigBee 等产品都工作在 ISM 频段上,802.11b 设备可能会受到其他设备的干扰。
2. Wi-Fi IEEE 802.11g
IEEE 802.11g 在 2003 年 7 月被通过。其载波的频率为 2.4 GHz(跟 802.11b 相同),共 14 个频段,最大传送速度为 54 Mbit/s。802.11g 的设备向下与 802.11b 兼容。
802.11g 工作在 2.4G 的 ISM 频段上,物理层上使用了正交频分复用(OFDM)调制方式,不同于 802.11 原始标准和 802.11b 标准,而与802.11a 标准相同,使得最大速率达到 54Mbps。在介质访问控制上,标准采用载波侦听多路访问/冲突避免(CSMA/CA)的方式,这与其他标准相同。考虑到 CSMA/CA 协议的开销,802.11g 设备间的最大吞吐量可以达到 31.4 Mbps。由于微波炉,蓝牙设备,ZigBee 等产品都工作在 ISM 频段上,802.11g 设备可能会受到其他设备的干扰。
3. Wi-Fi IEEE 802.11n
IEEE 802.11n(又被称为 Wi-Fi 4),于 2009 年 9 月正式批准。该标准增加了对 MIMO 的支持,最大传输速度為 450 Mbit/s。同时,通过使用 Alamouti 提出的空时分组码,该标准扩大了数据传输范围。
4. Wi-Fi IEEE 802.11b/g/n 的区别
协议标准时间 | 发布时间 | 工作频段 | 标准速度 | 理想最高速率 | 覆盖范围 |
---|---|---|---|---|---|
802.11b | 1999 | 2.4-2.5 GHz | 6.5 Mbps | 11 Mbps | 30 m / 100 m |
802.11g | 2003 | 2.4-2.5 GHz | 25 Mbps | 54 Mbps | 30 m / 100 m |
802.11n | 2009 | 2.4 GHz / 5 GHz | 300 Mbps | 600 Mbps | 70 m / 250 m |
4. 英文简写术语解释
- ISM:ISM 频段 (Industrial Scientific Medical Band),分別是工业的 (Industrial)、科学的(Scientific)和医学的(Medical),因此 ISM 频段就是各国挪出某一段频段主要开放给工业,科学和医学机构使用。应用这些频段无需许可证或费用,只需要遵守一定的发射功率(一般低于1 W),并且不要对其它频段造成干扰即可。ISM 频段在各国的规定并不统一。如在美国有三个频段 902 - 928 MHz、2400 - 2484.5 MHz 及 5725 - 5850 MHz,而在欧洲 900 MHz 的频段则有部份用于 GSM 通信。而 2.4 GHz 为各国共同的 ISM 频段。因此无线局域网 (IEEE 802.11b/IEEE 802.11g)、蓝牙、ZigBee 等无线网络,均可工作在 2.4 GHz 频段上。
- CCK:补码键控
- OFDM:正交频分多工 (Orthogonal frequency-division multiplexing) 有时又称为分离复频调变技术 (discrete multitone modulation, DMT),可以视为多载波传输的一个特例,具备高速率资料传输的能力,加上能有效对抗频率选择性衰减衰減,而逐渐获得重视与采用。
OFDM 使用大量紧邻的正交子载波 (Orthogonal sub-carrier),每个子载波采用传统的调变方案,進行低符号率调制。可以视为一调变技术与多工技术的结合。 - CSMA/CA:载波侦听多路访问 (Carrier Sense Multiple Access) 是一种介质访问控制 (MAC) 的协议。载波侦听 (Carrier Sense) 指任何连接到介质的设备在欲发送帧前,必须对介质进行侦听,当确认其空闲时,才可以发送。多路访问 (Multiple Access) 指多个设备可以同时访问介质,一个设备发送的帧也可以被多个设备接收。
- MIMO:多输入多输出系统 (Multi-input Multi-output) 是一种用來描述多天线无线通信系统的抽象数学模型,能利用发射端的多个天线各自独立发送信号,同时在接收端用多个天线接收并恢复原信息。
- mbps:是 Million bits per second 的缩写,是一种传输速率单位,指每秒传输的位(比特)数量。