在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与NVS分区是两种截然不同的持久化方案。RTC内存由RTC域供电,在Deep-sleep和Light-sleep下保持数据,但断电(如电池耗尽)会丢失,且容量有限(约8KB),写入次数无明确限制但易受干扰。NVS则基于Flash,支持掉电保存,可靠性高,但写入寿命有限(约10万次擦写),且每次写入需考虑磨损均衡。实测建议:对于频繁更新的临时状态(如唤醒计数器),优先用RTC内存,并在每次更新时同步到NVS作为备份;对于关键配置(如WiFi凭据),必须用NVS,并采用双备份+CRC校验。在Deep-sleep唤醒后,先读RTC内存快速恢复,再异步校验NVS,若不一致则回滚。注意:RTC内存需用RTC_NOINIT_ATTR属性声明,避免初始化覆盖;NVS写入前先擦除,避免碎片。建议在量产前做1000次深度睡眠唤醒循环测试,监控RTC内存位翻转率(可用校验和),并评估NVS擦写寿命。
mcuku 阿沐 · 2026-08-27