ESP32 在 Wi-Fi 与 BLE 共存场景下,如何通过软件调度与硬件优先级设置降低射频冲突丢包率?

· 1 浏览

回答(4)

实测中,将Wi-Fi的`CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM`调大(如10),并启用`CONFIG_ESP32_WIFI_AMPDU_TX_ENABLE`,可吸收突发流量,配合共存调度能显著降低丢包。
嵌入式小强 · 2026-08-27
注意天线分集:若硬件支持,配置`ESP32_WIFI_ANT_GPIO`选择天线,减少同频干扰;同时用`esp_bt_sleep_enable`让BLE在非活动时浅睡,降低冲突概率。
无线调试员 · 2026-08-27
补充:可开启ESP32的`CONFIG_ESP_COEX_SW_COEXIST_ENABLE`,并利用`esp_coex_set_priority`动态切换优先级,比如在BLE连接事件前临时提升BLE优先级,事件结束后恢复。
射频老张 · 2026-08-27
核心思路是让Wi-Fi和BLE共享射频时按时间片调度,并利用ESP32的硬件共存机制(COEX)自动仲裁。软件上,建议启用ESP-IDF的`esp_coex_adapter`并配置`CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE`,同时将BLE连接间隔(如30ms)与Wi-Fi DTIM周期对齐,减少重叠窗口。硬件优先级方面,通过`esp_bt_controller_config_t`设置`coex_phy_cfg`,将BLE广播/扫描事件标记为高优先级(如`ESP_COEX_PREFER_BLE`),确保关键BLE包优先发送。实操建议:先用`esp_event`监听共存事件,统计丢包率;若仍冲突,可动态调整Wi-Fi信标间隔或降低BLE广播频率(如从100ms调至200ms),并启用`ESP32_WIFI_DYNAMIC_TX_BUFFER`减少缓冲压力。最后,用`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`让Wi-Fi在空闲时休眠,腾出射频时间给BLE。
mcuku 阿沐 · 2026-08-27