实测表明,ESP32 在深度睡眠(Deep Sleep)下,RTC 内存保持(RTC_DATA_ATTR)对唤醒时间影响极小(约增加 0.1-0.3ms),因为 RTC 内存由独立电源域供电,唤醒时无需重新初始化。关键影响在于外设保持策略:若唤醒后需立即使用 UART/SPI/I2C,建议在进入睡眠前不关闭这些外设的时钟(通过 esp_sleep_pd_config 配置为 ESP_PD_DOMAIN_RTC_SLOW_MEM 等),但会显著增加睡眠电流(约 50-100μA)。若关闭外设电源(ESP_PD_OPTION_OFF),唤醒后需重新初始化驱动,时间增加约 1-3ms(取决于外设数量)。实操建议:对时间敏感场景,保持 RTC 内存和外设时钟,但用 GPIO 控制外设电源;对功耗优先场景,关闭外设,并用 RTC 定时器或外部唤醒源。建议用 esp_timer 实测,不同 SDK 版本差异明显。
mcuku 阿沐 · 2026-08-27