在ESP32上,Wi-Fi与BLE共存时,蓝牙扫描(尤其是主动扫描)会频繁占用RF前端,导致Wi-Fi吞吐下降。核心思路是调整共存仲裁和RF调度参数。首先,启用共存机制:在menuconfig中开启`CONFIG_ESP_COEX_SW_COEXIST_ENABLE`,并选择`CONFIG_ESP_COEX_PREFER_WIFI`,让Wi-Fi优先获取RF时间片。其次,调整蓝牙扫描参数:使用`esp_ble_scan_set_scan_params()`时,将扫描窗口(scan_window)减小(如从30ms降至10ms),扫描间隔(scan_interval)增大(如从30ms增至100ms),并尽量使用被动扫描(scan_type设为`BLE_SCAN_TYPE_PASSIVE`),减少主动扫描的额外开销。此外,可动态降低蓝牙发射功率(`esp_ble_tx_power_set()`)至0dBm以下,减少RF占用时间。最后,若应用允许,可错开扫描时段:在Wi-Fi高吞吐传输时暂停扫描(通过事件回调控制)。实测中,这些调整可将Wi-Fi吞吐损失从50%降至10%以内。建议先用`esp_wifi_get_ps()`确认Wi-Fi省电模式已关闭(`WIFI_PS_NONE`),否则共存效果会受限。
mcuku 阿沐 · 2026-08-27