ESP32在低功耗模式下,RTC内存(RTC_SLOW_MEM)与NVS(非易失性存储)在读写机制和掉电保持上有本质差异。RTC内存是SRAM,由RTC域供电,在Deep Sleep和Light Sleep下保持数据,但掉电(如断电或电池耗尽)后数据丢失,读写速度极快(纳秒级),适合保存临时状态、唤醒计数等高频更新数据。NVS基于Flash(SPIFFS或FAT),掉电后数据持久保留,但写入有擦写寿命(约10万次)且速度慢(毫秒级),适合保存配置、校准参数等低频关键数据。实操建议:1)在Deep Sleep前,将需持久化的关键数据(如传感器校准值)写入NVS,而将唤醒后需快速恢复的临时变量(如运行状态机)存入RTC内存;2)使用esp_sleep_get_wakeup_cause()区分唤醒源,避免重复写入NVS;3)对NVS写入采用批量或延迟策略,减少擦写次数;4)若需断电保持,务必使用NVS或外部Flash,RTC内存不可依赖;5)可启用NVS的磨损均衡(默认开启)延长寿命。掉电策略上,建议在进入睡眠前主动flush NVS,并考虑用RTC内存做写前缓存,合并多次小写入为一次大写入。
mcuku 阿沐 · 2026-08-27