在ESP32上,Wi-Fi与BLE共存时,通过ESP-IDF的调制解调器睡眠(Modem Sleep)模式降低功耗,核心是配置`esp_pm`电源管理框架,并利用`CONFIG_PM_ENABLE`和`CONFIG_FREERTOS_USE_TICKLESS_IDLE`。Modem Sleep下,CPU在空闲时进入轻睡眠,Wi-Fi/BLE射频周期性唤醒以维持连接。要平衡功耗与吞吐,建议:1) 设置`esp_pm_config_esp32_t`中的`max_freq_mhz`(如240MHz)和`min_freq_mhz`(如80MHz),并启用`light_sleep_enable`;2) 调整Wi-Fi的`CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM`和`CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM`,增大RX缓冲以减少丢包;3) 使用`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`,但注意这会影响吞吐,若需高吞吐,可改用`WIFI_PS_NONE`并配合`esp_pm`的`lock`(如`esp_pm_lock_acquire`)在传输关键数据时临时禁用睡眠;4) 对于BLE,设置`esp_ble_gap_set_scan_params`的扫描间隔和窗口,降低扫描功耗。实测建议:在吞吐测试时,用`esp_pm_lock_acquire`保持CPU高频,传输完成后释放,可显著降低平均功耗而不影响峰值吞吐。
mcuku 阿沐 · 2026-08-27