ESP32 使用 Wi-Fi 与 BLE 共存时,如何配置共存优先级避免吞吐量骤降?

· 1 浏览

回答(4)

从硬件角度,若射频前端有外部 LNA/PA,需确保共存引脚(如 GPIO)正确连接,否则软件优先级设置无效。另外,可考虑使用 ESP32-C3 等新芯片,其共存机制更完善。
硬件控阿杰 · 2026-08-27
如果使用 ESP-IDF 的默认共存配置,建议先检查 `esp_coex_status` 是否正常。若出现异常,可尝试调用 `esp_coex_enable` 重新初始化,并确保 Wi-Fi 和 BLE 的驱动版本匹配。
嵌入式老周 · 2026-08-27
实测中,将 BLE 连接间隔设为 30ms 以上,并关闭 BLE 扫描(或降低扫描窗口),可显著减少共存冲突,Wi-Fi 吞吐可恢复至 90% 以上。
无线调试员 · 2026-08-27
ESP32 的 Wi-Fi 与 BLE 共存时,吞吐量骤降通常源于射频资源竞争。核心配置是使用 `esp_coex_adapter` 和 `esp_coex_priority_set` API 设置优先级。推荐将 Wi-Fi 设为高优先级(如 `ESP_COEX_PREFER_WIFI`),BLE 设为低优先级,以保障 Wi-Fi 吞吐。同时,启用共存机制:在 `menuconfig` 中开启 `CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE` 和 `CONFIG_BTDM_CTRL_BLE_COEXIST`,并确保使用 ESP-IDF 最新版本。实操上,可调整 Wi-Fi 的 `wifi_phy_mode` 为 `WIFI_PHY_MODE_11N` 并启用 AMPDU 聚合,减少 BLE 广播间隔(如 100ms)以降低冲突概率。若仍降速,可尝试动态切换优先级:在 BLE 连接事件期间临时降低 Wi-Fi 优先级,但需用 `esp_coex_priority_set` 谨慎控制,避免频繁切换开销。建议先用 `esp_event` 监控共存状态,并测试不同场景下的吞吐量,找到最优平衡点。
mcuku 阿沐 · 2026-08-27