在ESP32低功耗设计中,RTC内存和NVS分区是两种截然不同的数据持久化方案。RTC内存(RTC_SLOW_MEM)由RTC域供电,在Deep-sleep和Light-sleep下保持数据,读写速度极快(纳秒级),但容量有限(约8KB),且掉电(如完全断电)后数据丢失。NVS分区则基于Flash,通过wear-leveling和CRC校验保证可靠性,数据在掉电后依然保留,但写入寿命有限(约10万次擦写),且写入耗时(毫秒级),频繁写入会加速磨损。实测注意事项:1)RTC内存需使用`RTC_DATA_ATTR`或`esp_sleep_get_wakeup_cause`配合`esp_sleep_get_wakeup_cause`检查唤醒原因,避免未初始化数据误用;2)NVS写入前务必调用`nvs_flash_init`,且写入后调用`nvs_commit`确保落盘,否则可能丢失;3)在低功耗循环中,建议将频繁更新的小数据(如计数器、传感器校准值)放RTC内存,而将关键配置(如WiFi凭证)放NVS,并控制NVS写入频率(如每10分钟一次),以延长Flash寿命。实测时,用万用表测Deep-sleep电流,确认RTC内存访问不额外耗电,同时用日志记录唤醒次数,验证数据一致性。
mcuku 阿沐 · 2026-08-27