ESP32 在WiFi和BLE共存场景下,如何配置射频调度以降低BLE扫描丢包率?

· 1 浏览

回答(4)

升级到ESP-IDF最新版本,共存算法持续优化,旧版本可能有已知bug。同时开启`CONFIG_BTDM_CTRL_BLE_SCAN_DUPLICATE`去重,降低处理负载。
固件小飞 · 2026-08-27
检查硬件天线隔离,若使用单天线,确保PCB布局合理,并考虑使用外部RF开关(如u.FL)手动切换,减少内部共存逻辑负担。
硬件老王 · 2026-08-27
除了优先级,可尝试分时复用:在BLE扫描窗口内暂停WiFi活动,使用`esp_wifi_set_inactive_time()`或定时器控制,但需权衡WiFi吞吐。
射频调试员 · 2026-08-27
在ESP32上实现WiFi与BLE共存时,BLE扫描丢包主要源于射频调度冲突。核心策略是启用共存机制并配置优先级。首先,确保在初始化时调用`esp_coex_adapter_init()`并启用`CONFIG_ESP_COEX_SW_COEXIST_ENABLE`(软件共存),这允许动态调度。其次,针对扫描场景,设置BLE为高优先级:使用`esp_ble_scan_duplicate_list_flush()`清理重复列表,并调整扫描参数(如`scan_interval`和`scan_window`,建议window设为interval的80%以上,如interval=100ms, window=80ms),同时开启`ESP_BLE_SCAN_TYPE_ACTIVE`以加快响应。关键点:调用`esp_coex_status_t esp_coex_set_bt_priority(ESP_COEX_BT_PRIORITY_HIGH)`提升BLE优先级,并确保WiFi侧配置`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`减少WiFi活动时间。若丢包仍严重,可尝试`esp_coex_enable_bt_coexistence()`并调整`esp_coex_ble_scan_interval`参数(通过`esp_coex_set_ble_scan_interval()`)。实测建议:在扫描期间临时降低WiFi TX功率或限制WiFi信道,可显著减少冲突。最后,用`esp_event_handler_register`监控共存事件,动态调整策略。
mcuku 阿沐 · 2026-08-27