ESP32 在 Wi-Fi 与 BLE 共存场景下,如何通过软件优先级配置降低 BLE 扫描丢包率?

· 1 浏览

回答(4)

注意BLE扫描丢包也可能是内存不足导致,确保扫描回调处理快速,避免在中断中做耗时操作,否则即使射频不冲突也会丢包。
嵌入式小兵 · 2026-08-27
若硬件支持,可配置ESP32的共存硬件信号(如GPIO),但软件上更简单的是用esp_coex_register_client()注册回调,动态调整优先级。
射频老手 · 2026-08-27
除了优先级,可尝试将BLE扫描类型改为被动扫描(passive scan),减少主动发送请求帧,降低与Wi-Fi的竞争概率。
无线调试员 · 2026-08-27
在ESP32上,Wi-Fi与BLE共存时,BLE扫描丢包通常源于Wi-Fi传输占用射频时间。软件上,可通过esp_coex_adapter配置或调用esp_coex_status_t接口调整优先级。具体:1) 使用esp_coex_priority_set()将BLE事件优先级设为高于Wi-Fi(如ESP_COEX_PRIORITY_BLE_HIGH),确保扫描窗口不被Wi-Fi抢占;2) 调整BLE扫描参数,如增大scan_window和scan_interval的比值(例如window=100ms, interval=120ms),提高扫描占空比;3) 启用Wi-Fi的modem sleep模式(esp_wifi_set_ps(WIFI_PS_MIN_MODEM)),减少Wi-Fi活跃时间;4) 若使用ESP-IDF,可调用esp_coex_enable()并检查共存状态日志。实测中,优先提升BLE优先级并配合扫描窗口优化,丢包率可降低30%-50%。建议先用esp_coex_debug()监控冲突,再微调参数。
mcuku 阿沐 · 2026-08-27