本文主要是介绍ESP32-C3模组上跑通NVS(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文内容参考:
非易失性存储库 - ESP32 - — ESP-IDF 编程指南 latest 文档
【ESP-IDF】介绍NVS_esp-idf是什么-CSDN博客
12-ESP32-S3 的 NVS(Non-Volatile Storage)_esp32-s3 nvs-CSDN博客
ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)_esp入门教学-CSDN博客
特此致谢!
一、认识NVS
1. 简介
NVS的英文全称为Non-Volatile Storage,中文译为非易失性存储(库)。通俗地来讲,NVS就是在Flash上分配的一块内存空间,提供给用户保存掉电不丢失的数据。NVS主要用于在Flash中存储键值格式的数据。
NVS是一种用于在嵌入式系统中保存持久化数据的键值存储库。在ESP-IDF中,NVS提供了一种简单且有效的方法来在ESP32芯片上保存和读取配置信息、状态数据、用户设置等应用程序数据,以便在设备重新启动或断电后能够恢复状态。
NVS在ESP-IDF中具有以下特点和优点:
- 非易失性
NVS中的数据在芯片断电或重新启动后仍然保持不变、不会丢失,适合保存需要长期存储的数据。
- 键值对存储
NVS使用简单的键值对(Key-Value)结构来保存数据,方便进行读取和写入操作。
- 分区管理
NVS将数据存储在不同的分区中,可以根据需要创建多个独立的NVS分区,用于不同的数据类型或应用场景,实现数据隔离和管理。
- API丰富
ESP-IDF提供了丰富的NVS API,包括读取、写入、删除、遍历等操作,方便开发者进行数据的处理和管理。使用NVS的API不仅可以对NVS分区进行操作,也可以对任意的分区进行操作。
学习和使用ESP-IDF中的NVS可以带来以下好处:
- 持久化数据存储
NVS允许开发者将配置信息、状态数据等持久化保存在芯片中,即使设备断电或重新启动,数据也能够得到保留,从而避免了数据丢失的情况。
- 简单高效的数据管理
NVS提供了简单易用的API,可以方便地进行数据的读取、写入、删除等操作,减少了开发复杂性和提高了代码效率。
- 数据隔离和管理
NVS支持多个分区的管理,可以将不同类型的数据存储在不同的分区中,实现数据隔离和管理,便于维护和升级。
- 节省存储空间
NVS采用了紧凑的键值对结构,可以高效地利用芯片内部的存储空间,避免了使用外部存储器的成本和复杂性。
2. 键值对
NVS是ESP32-C3 Flash(Flash就是板子上的一个存储芯片,对于ESP32-C3来说是SPI Flash)中的一个存储分区,我们可以在其中存储键值对(Key-Value pairs)。每个键值对都有一个唯一的键名(key name)和一个对应的值(value)。这种组合类似于哈希表的(key-value)对应结构,或可以将其类比理解成电脑上的文件名和内容的对应关系。
NVS的操作对象为键值对,其中键是ASCII字符串,当前支持的最大键长为15个字符。值可以为以下几种类型:
-
整数型:
uint8_t
、int8_t
、uint16_t
、int16_t
、uint32_t
、int32_t
、uint64_t
和int64_t
; -
以 0 结尾的字符串;
-
可变长度的二进制数据(BLOB)。
当前支持的最大值长为:字符串值上限为4000字节,其中包括空终止符;BLOB值上限为508000 字节或分区大小的97.6%减去4000 字节,以较低值为准。
后续可能会增加对 float
和 double
等其他类型数据的支持。
注:
(1)键必须唯一。为现有的键写入新值时,会将旧的值及数据类型更新为写入操作指定的值和数据类型。
(2)读取值时会执行数据类型检查。如果读取操作预期的数据类型与对应键的数据类型不匹配,则返回错误。
更多内容请看下回。
这篇关于ESP32-C3模组上跑通NVS(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!