ESP32S3学习——nvs_非易失性存储

【ESP32】打造全网最强esp-idf基础教程——13.ESP32中的NVS NVS即Non-volatile storage,意思是非易失存储,也就是掉电后能依然能持久化保存数据。在我们应用NVS时,一般用于存储一些配置数据、状态数据等,一般不会用来存储存放大量的数据量。 阅读详情

芯片:esp32s3

开发环境:espidfv4.4

一、官网相关资料

简介

非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。本文档将详细介绍 NVS 常用的一些概念。

NVS 最适合存储一些较小的数据,而非字符串或二进制大对象 (BLOB) 等较大的数据。如需存储较大的 BLOB 或者字符串,请考虑使用基于磨损均衡库的 FAT 文件系统。

键值对

NVS 的操作对象为键值对,其中键是 ASCII 字符串,当前支持的最大键长为 15 个字符。值可以为以下几种类型:

  • 整数型:uint8_t、int8_t、uint16_t、int16_t、uint32_t、int32_t、uint64_t 和 int64_t;

  • 以 0 结尾的字符串;

  • 可变长度的二进制数据 (BLOB)

键必须唯一。为现有的键写入新的值可能产生如下结果:

  • 如果新旧值数据类型相同,则更新值;

  • 如果新旧值数据类型不同,则返回错误。

读取值时也会执行数据类型检查。如果读取操作的数据类型与该值的数据类型不匹配,则返回错误。

命名空间

为了减少不同组件之间键名的潜在冲突,NVS 将每个键值对分配给一个命名空间。命名空间的命名规则遵循键名的命名规则,例如,最多可占 15 个字符。命名空间的名称在调用 nvs_open() 或 nvs_open_from_partition 中指定,调用后将返回一个不透明句柄,用于后续调用 nvs_get_*、nvs_set_* 和 nvs_commit 函数。这样,一个句柄关联一个命名空间,键名便不会与其他命名空间中相同键名冲突。请注意,不同 NVS 分区中具有相同名称的命名空间将被视为不同的命名空间。

二、简单上手

1、nvs_flash_init();:初始化

2、异常处理 if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {

// NVS partition was truncated and needs to be erased

// Retry nvs_flash_init

ESP_ERROR_CHECK(nvs_flash_erase());

err = nvs_flash_init();

}

3、创建句柄:nvs_handle_t my_handle;在nvs_open("storage", NVS_READWRITE, &my_handle);中更新

4.从nvs中读取数据:nvs_get_i32(my_handle, "restart_counter", &restart_counter);

5。向nvs写入数据

分两步:1.err = nvs_set_i32(my_handle, "restart_counter", restart_counter);更新值

2,err = nvs_commit(my_handle);使用返回的句柄提交新值

6、关闭nvs :nvs_close(my_handle);

ESP32 通过NVS存储WiFi账号和密码至Flash 在ESP32板子重启之后,自动从Flash中寻找已经存储好的WiFi账号和秘密,连接到网络。要想能够很好的理解如何将WiFi的账号和密码如何写入到Flash的什么地方,首先需要了解下ESP32中Flash的特点。 阅读详情

相关推荐

12-ESP32-S3 的 NVS(Non-Volatile Storage)

ESP32-S3 是一款集成了 Wi-Fi 和蓝牙功能的系统级芯片,适用于各种物联网应用。其中,NVS(Non-Volatile Storage,非易失性存储)是 ESP32-S3 的一个重要特性,它允许我们在芯片的闪存中存储和读取数据,即使在断电后,这些数据也不会丢失。

宁子希的博客 2305

ESP32的NVS

非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。key和value,key相当是文件名(最大15个字节) ,value是文件内容(最大int64,8个字节)。NVS默认是24kb,page是4kb,entry是NVS最小储存单元(32个字节),一个键值对占一个entry单元(占不满也是一个entry单元)。

CCPCCH的博客 2130

esp32s3数据存储 nvs

esp32s3数据存储 nvs

m0_73253860的博客 1243

ESP32_NVS操作

非易失性存储 (NVS) (掉电后可以保存),主要用于在 flash 中存储键值格式的数据。NVS因为无wear leveling技术(平均损耗技术),所以最适合存储一些较小的数据,最好是int类型,而非字符串或二进制大对象 (BLOB) 等较大的数据。如需存储较大的 BLOB 或者字符串,请考虑使用基于磨损均衡库的 FAT 文件系统。

th576951469的专栏 1393

ESP32学习笔记12--NVS

迭代器。

Car12 1082

ESP32学习笔记 -- ESP32-S3使用NVS存储数据

非易失性存储(Non-Volatile Storage)简称NVS,是用来保存一些设备断电后不能丢失的数据,乐鑫的ESP32-S3芯片使用了一套NVS库函数对外置的SPI FLASH进行读、写、擦除等操作。

EmbedIoT Studio 3707

ESP32 非易失性存储器NVS,实现数据掉电存储(ESP-IDF)

NVS即Non-volatile storage,是一种非易失性存储技术,用于在嵌入式系统中保存持久化数据。它主要用于在flash存储器中存储键值格式的数据,提供了一种简单且有效的方法来保存和读取配置信息、状态数据、用户设置等应用程序数据。NVS在设备重新启动或断电后能够恢复状态,因此非常适合保存需要长期存储的数据。

weixin_49337111的博客 5599

ESP32-IDF开发实例-非易失性存储(NVS)数据存取

非易失性存储(NVS)数据存取 ESP32是一系列高度集成的、专为移动设备、可穿戴电子产品设计的物联网模块,其集成了天线开关、RF balun、功率放大器、低接收噪声放大器,滤波器、电源管理模块等,可以独立运行应用,也可以通过SPI/SDIO或I2C/UART接口为其他设备提供WiFi和蓝牙功能。 在ESP32-IDF中,NVS主要用于将键值对存储在闪存中,并提供了支持NVS操作的库。比如,ESP32的WiFi相关数据就储存在NVS中。 本次实例将实现NVS数据和简单存取。 1、硬件准备 NodeMCU

视觉与物联智能 1662

ESP32学习笔记(23)——NVS(非易失性存储)接口使用

一、简介 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。 NVS适合存储一些小数据,如果对象占用空间比较大,使用负载均衡的FAT文件系统。 如果NVS分区被截断,比如更改分区表布局的时候,应该擦除分区内容。可以使用 idf.py erase_flash 命令擦除flash上全部的内容。 NVS 的操作对象为键值对,其中键是 ASCII 字符串,当前支持最大键长为 15 个字符,值可以为以下几种类型: 整数型: uint8_t、int8_t、uint16_t、int16_t、

Leung的博客 1万+

ESP32-C3模组上跑通NVS(3)

ESP32-C3模组上跑通NVS(3)

phmatthaus的专栏 1226

ESP32-C3模组上跑通NVS(2)

ESP32-C3模组上跑通NVS(2)

phmatthaus的专栏 1427

Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例

Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例

perseverance51博客 2881

前馈神经网络求解XOR问题

摘要 前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层之间没有反馈。是目前应用最广泛、发展最迅速的人工神经网络之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平[1]。本节通过设计包含输入层、一个隐含层和输出层的前馈神经网络,实现XOR运算,并基于计算数据或实验数据分析隐含层决策面的特点,进而总结前馈神经网络隐含层的作用。 1.1 神经网络结构设计 1.1.1 XOR问题描述 ...

sinat_28178805的博客 2358

ESP32 IDF NVS离线存储

在之前学习桌面小屏幕的时候,发现老师在为了能够使用https修改wifi密码和账号并保证下一次启动mcu能够自动加载wifi使用了一个叫做nvs的离线存储功能。

m0_73991989的博客 1238

ComfyUI 的 LoRA 训练:秋叶 LoRA-scripts 参数设置与测试方法详解

秋叶 LoRA-scripts 的参数设置需结合理论(如模型原理、优化器机制)和硬件条件(显存、算力),新手可先按推荐值起步,再逐步调整。测试时,loss 值帮你判断训练是否正常,XYZ 图表法帮你找到最佳使用参数。掌握这些知识,你就能避开 LoRA 训练的常见坑,从 “盲目调参” 变为 “精准训练”。

2301_78150483的博客 2402

win11禁止更新,草履虫教程

本文介绍了彻底禁止Windows 11系统更新的组合方法,包括禁用核心服务、修改注册表、关闭计划任务和使用组策略(专业版适用)。作者特别提醒,禁止更新会影响系统安全性,建议实体机保持更新,仅虚拟机等特殊情况下使用这些方法。同时强调即使禁用更新,也应定期手动检查重要安全补丁。文章最后附上了作者的个人网站信息。

testwzc1的博客 561

ESP32开发(一)—— NVS存储 (附代码)

本文介绍了ESP32的非易失性存储(NVS)组件,包括其核心概念和操作示例代码。

m0_72838674的博客 1568

SQL 通过sum() over(order by ,rownum)实现财务现金日记账实例

SELECT 类型,to_char(发生日期,'yyyy-MM-dd') 发生日期,期初余额,借方金额,贷方金额, (CASE WHEN 借方金额>0 THEN '借' WHEN 贷方金额>0 THEN '贷' ELSE '平' END) 方向, sum(收支金额) over(order by 发生日期, rownum) 余额 FROM( SELECT LX 类型,账户,账号,摘要,发生日期,单据ID, ...

qq_41451794的博客 1023

ESP32数据存储 nvs

这个实验的功能是使用乐鑫提供的 nvs 库去对 spi flash 的读写。 这个实验的代码为工程“3_9_nvs”目录。 3.9.1. 实验内容 (1) 学习 NVS 库函数接口 (2) 学习 NVS 存储/读取多种类型数据 3.9.2. ESP32 NVS 功能介绍 NVS总的来说,就是非易失性存储,类似MCU EEPROM,但实际上调用ESP32这些函数,数据是存储在FLASH中的。它的管理方式类似数据库的表,在NVS里面可以存储很多个不同的表,每个表下面有不同的键值,每个键值可以存储8位

bytechip的博客 4252

Unified Access Control:从NAS到RRC的5G接入控制全流程解析

本文深入解析了5G统一接入控制(Unified Access Control)的全流程,从NAS到RRC的协同工作机制。通过身份核验、业务分类和动态决策三个核心步骤,UAC实现了智能调度和弹性决策,确保海量设备接入时的网络稳定性。文章详细介绍了USIM卡的身份凭证体系、NAS层的业务分类引擎以及RRC层的动态决策机制,并提供了实战案例和常见问题排查方法。

weixin_30855099的博客 590

Realtek RTD1319D芯片解析:H.266与AV1双解码的机顶盒SoC

视频编解码技术是数字媒体传输的核心,H.266/VVC作为新一代标准,相比H.265提升50%压缩效率,显著降低带宽需求。其实现原理依赖于专用硬件解码器和并行处理架构,在超高清视频传输领域具有重要价值。Realtek RTD1319D作为首款商用H.266处理器,采用异构计算设计,集成四核ARM CPU和独立视频处理单元,同时支持AV1解码,兼顾市场兼容性。该SoC特别适合4K机顶盒、数字标牌等应用场景,其HDMI 2.1a接口和DVB解调器为超高清内容传输提供完整解决方案。开发时需注意散热设计和内存配置优

weixin_42591413的博客 672

ESP32 NVS 非易失性存储

非易失性存储 (NVS) 库主要用于在 flash 中存储的数据。本章涉及核心知识点:NVS掉电不丢失存储系统。ESP-IDF版本:V5.1.2。

weixin_56073998的博客 1255

用业务语义织就企业数据之网:SAP Datasphere 的定位、架构与落地场景全解析

SAP Datasphere作为SAP业务数据云的核心组件,通过语义层整合企业内外部数据,支持实时分析与AI应用。其核心功能包括数据集成、语义建模、虚拟化与仓库能力,通过Spaces实现资源隔离,Data Builder和Business Builder分别面向技术和业务建模。该平台与SAP HANA Cloud、SAC等深度集成,支持财务统一分析、供应链可视化等典型场景,并可通过BW bridge实现传统BW资产云化迁移。Datasphere强调开放互联,能与Databricks等生态伙伴协同,为企业提供

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1365

SOC-ESP32S3部分:21-非易失性存储库

NVS 是 ESP32 flash(flash就是板子上的一个存储芯片)中的一个存储分区,我们可以在其中存储键值对(key-value pairs)。因此,每次在NVS中设置键值对后,都应该调用nvs_commit()函数,以确保这些更改在设备重启后仍然存在。当你在NVS中设置一个键值对后,这个更改首先被存储在内存中。在这个例子中,我们首先打开了一个名为 “storage” 的 NVS 名称空间,然后在其中存储了一个键名为 “restart_counter”、值为1的键值对。三个函数来存储数据。

嵌入式成长手册 1774

【数据集】全球预报系统GFS概述:数据下载及处理

【数据集】全球预报系统GFS概述:数据下载及处理

WW、forever的博客 5751

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

(二十)ESP32-S3之NVS

NVS(Non-volatile storage,非易失存储),意思是掉电后能依然能持久化保存数据。在我们应用 NVS 时,一般用于存储一些配置数据、状态数据等,一般不会用来存储存放大量的数据量。在嵌入式系统中,NVS 主要是在 Flash 进行键值对的存储。举个例子,假设我们要把东西存到 Flash 中,按照底层的操作习惯,我们要先指定一个地址,然后对这个地址执行擦除操作,然后才能写入;读取的时候也需要根据这个地址,然后指定读取长度。

小新的博客 1323

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: ESP32S3学习——spi_lcd_ILI9341
下一篇: ESP32S3学习——SPIFFS 文件系统
HandBAI
博客等级 码龄5年 27粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值