[16]ESP32 Wi-Fi 使用備忘錄(基於 ESP-IDF v4.0+)

文章更新版本 時間 更新說明 修訂人
V0.1 發佈於2020-04-25 初始版本 libo

一、Wi-Fi 性能

ESP32 Wi-Fi 性能

項目 參數
Mode Station, AP, Coexistence
Protocol IEEE-802.11B, IEEE-802.11G, IEEE802.11N 支持軟件切換
Safety WPA/WPA2/WPA2-Enterprise and WPS
Keyfeature AMPDU, HT40, QoS
Distance 1 km with Espressif-specific protocol
Speed 20 MBit/sec TCP throughput, 30 MBit/sec UDP

其它參數:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#esp32-wi-fi-feature-list

ESP32-S2 Wi-Fi 性能(需要驗證和補充)

項目 參數
Mode Station, AP, Coexistence
Protocol IEEE-802.11B, IEEE-802.11G, IEEE802.11N 支持軟件切換
Safety WPA/WPA2/WPA2-Enterprise and WPS
Keyfeature AMPDU, HT40, QoS
Distance 1 km with Espressif-specific protocol
Speed 20 MBit/sec TCP throughput, 30 MBit/sec UDP

其他參數:https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/wifi.html#esp32-s2-wi-fi-feature-list

二、Wi-Fi 編程框架

Wi-Fi Programming Model

  1. 應用層調用 Wi-Fi driver APIs 進行 Wi-Fi 初始化。
  2. Wi-Fi 可被看成一個獨立工作的黑箱,當事件發生時向默認事件循環 default event loop
    發佈event,應用程序可根據需求編寫handle程序,進行註冊。
  3. 網絡接口組件 esp_netif 提供了一系列handle程序,與WiFi驅動event默認關聯,例如 ESP32 作爲 AP,當有用戶接入時,esp_netif 將自動啓動 DHCP 服務。

注意:Wi-Fi 初始化之前應該使用WIFI_INIT_CONFIG_DEFAULT獲取初始化配置結構體,對該結構體進行個性化配置,然後進行初始化工作。防止結構體成員未初始化導致的問題,特別是 IDF 更新添加了新的結構體成員的時候。

2.1 menuconfig 可配置項

  1. 修改 Wi-Fi Buffer 以節約空間
    Wi-Fi初始化之後,會靜態分配一部分內存空間,如果用戶對內存比較敏感,可以通過減小Static RX Buffer節約最大6400 Bytes 空間,通過將Static TX Buffer修改爲Dynamic TX Buffer節約 (16 * 1600-32)Bytes左右空間。具體可參考:Wi-Fi Buffer Configure

  2. 將 WiFi 配置信息保持到 NVS 中
    通過使能 Wi-Fi NVS Flash,Wi-Fi 驅動將會保存配置信息到 NVS 中,下次啓動可以跳過 WiFi配置階段。用戶也可關閉該選項,自行保存配置信息。

  3. 開啓 AMPDU 提高網絡吞吐量
    AMPDU默認開啓。 802.11n標準中採用A-MPDU聚合幀格式,即將多個MPDU聚合爲一個A-MPDU,只保留一個PHY頭,刪除其餘MPDU的PHY頭,減少了傳輸每個MPDU的PHY頭的附加信息,同時也減少了ACK幀的數目,從而降低了協議的負荷,有效的提高網絡吞吐量。

802.11n協議定義了一個新的MAC特性A-MSDU,該特性實現了將多個MSDU組合成一個MSDU發送,與A-MPDU類似,通過聚合,A-MSDU減少了傳輸每個MSDU的MAC頭的附加信息,提高了MAC層的傳輸效率。802.11n支持在物理層的優化,提供短間隔功能。原11a/g的GI時長800us,而短間隔Short GI時長爲400us,在使用Short GI的情況下,可提高10%的速率。ESP32-S2 supports receiving AMSDU but doesn’t support transmitting AMSDU. The transmitting AMSDU is not necessary since ESP32-S2 has transmitting AMPDU.

三、Wi-Fi 調試

提升信號質量

  1. 將默認 HT40 修改爲固定 HT20,可減少外界干擾,但理論傳輸率從 150Mbps 下降爲 72Mbps(raw PHY data rate)。

Wireshark 網絡分析工具

Espressif Wireshark User Guide

錯誤碼監測

錯誤碼定義在 esp_err.h 文件中

ESP-IDF 提供了默認的錯誤碼監測宏 ESP_ERROR_CHECK 可用於監測錯誤位置和信息,但是建議用戶自定義監測宏,用於實現錯誤信息的自動化處理。

錯誤類型 處理方法
ESP_OK 下一步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章