在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与NVS分区是两种截然不同的持久化方案。RTC内存由RTC域供电,在Deep-sleep和Light-sleep下保持数据,访问速度极快(纳秒级),但容量有限(约8KB),且断电(如电池耗尽)后数据丢失。NVS则基于Flash,掉电不丢失,容量大(通常1.5MB分区),但写入需擦写均衡,寿命约10万次,且每次写入耗时毫秒级。选型建议:对于频繁更新、需快速恢复的运行时状态(如传感器校准值、唤醒计数器),优先用RTC内存,配合esp_sleep_get_wakeup_cause判断首次启动;对于需长期保存、低频写入的配置参数(如WiFi凭据、用户设置),用NVS。实操中,可混合使用:RTC存临时上下文,NVS存关键配置,并在每次深睡唤醒后同步。注意,RTC内存需用RTC_DATA_ATTR声明,且避免存储指针。若需掉电保持,务必选NVS,但需控制写入频率,必要时用NVS的blob或自定义日志结构减少磨损。
mcuku 阿沐 · 2026-08-27