0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP32/Arduino如何使用EEPROM,并且读取和写入数据?

jf_Ufm3lVrj 来源:凌顺实验室 2024-03-19 11:44 次阅读

EEPROM (electrically erasable programmable read-only memory)是一种用户可修改的ROM,又或者称为闪存(Flash Memory)。它可以通过施加高于正常电压的电压,就可以反复擦除和重新编程(写入)的闪存 。

EEPROM 是一种非易失性ROM,可以擦除和重新编程单个字节的数据。这就是 EEPROM芯片被称为字节可擦除芯片的原因。EEPROM 通常用于在计算和其他电子设备中存储少量数据。

Arduino Uno 的EEEROM大小为1024个字节。

ESP32的EEPROM大小为 512 字节。

这意味着使用 ESP32 和 EEPROM 库可以有 512 个不同的地址,可以在每个地址位置保存一个 0 到 255 之间的值。

简单来说EEPROM里面的数据是可以断电保存的,重新上电数据并不会丢失。但是,闪存的一个限制是可刷写数据的次数。你可以根据需要多次从闪存中读取数据,但大多数设备闪存的写入次数设计为大约 100,000 到 1,000,000 次写入操作。

在 ESP32 的闪存读取和写入将使用 EEPROM 库。其实是和 Arduino EEPROM 一样的,并没有太大区别。

本示例,主要记录ESP32/Arduino如何使用EEPROM,并且读取和写入数据。

程序提点

首先需要加载EEPROM的库

// 加载EEPROM的库
#include 

在setup中初始化EEPROM的大小

// 定义EEPROM的大小
#define EEPROM_SIZE 1  // 这里定义1个字节的大小

void setup() { 
  ...
  // 初始化EEPROM为预习定义的大小
  EEPROM.begin(EEPROM_SIZE);
  ...
}

读取EEPROM指定位置的数据

例如,读取第0位的数据:

read_value = EEPROM.read(0); // 读区 EEPROM 第0位的数据

EEPROM刷写指定位置的数据

例如,第0位的数据刷写为read_value的值,最后,不要忘记EEPROM.commit();提交,运行这句代码才能正真刷写数据。

EEPROM.write(0, read_value); // 把 变量read_value的数值写入第0位
EEPROM.commit(); // 需要提交才能正真地把数据写入EEPROM

完整代码

该程序

实现每一秒都会把变量read_value + 1 ,并写入EEPROM中。

当中途断电,重新通电也能继续断电前的数据,而不是从0开始。

// welcome to lingshunlab.com
// 加载EEPROM的库
#include 

// 定义EEPROM的大小
#define EEPROM_SIZE 1  // 这里定义1个字节的大小

int read_value = 0;

void setup() { 
  Serial.begin(115200);

  // 初始化EEPROM为预习定义的大小
  EEPROM.begin(EEPROM_SIZE);
}

void loop() {
  read_value = EEPROM.read(0); // 读区 EEPROM 第0位的数据
  Serial.println(read_value);  

  read_value++;   // read_value+1 ,但EEPROM只接受0~255的数值,超出的将会是255的取余值
  EEPROM.write(0, read_value); // 把 变量read_value的数值写入第0位
  EEPROM.commit(); // 需要提交才能正真地把数据写入EEPROM

  delay(1000);
}



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    928

    浏览量

    80329
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184846
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15815

原文标题:ESP32 断电数据保存 EEPROM数据读取和写入

文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Arduino Core For ESP32是什么

    文章目录1. Arduino Core For ESP32是什么?2.Arduino core for ESP32库3.与ESP8266库类
    发表于 11-22 08:04

    NodeMCU V1.0无法读取/写入EEPROM数据

    。但是,对于 Arduino V1.8.8,我选择了菜单 Tools - Erase Flash - All Flash Contents之后,模块似乎运行良好,但现在无法读取/写入 EEPR
    发表于 02-24 07:39

    如何将ESP-IDF引导加载程序与用于NVS的ESP32-Arduino代码一起使用?

    Arduino 代码并将其闪存Stage 2 - ESP32-Arduino 代码我当前的问题是无论 NVS 是否已加密,我都无法从 NVS 分区写入/读取,我什至尝试禁用闪存加密
    发表于 04-13 08:11

    ADM106x EEPROM的块擦除、块读取和块写入

    本应用笔记说明如何对ADM106x EEPROM空间的单一页面(32字节)进行块擦除、块写入和块读取。本文中为便于说明,假设需擦除、写入读取
    发表于 09-01 15:48 50次下载

    arduino-esp32-master环境设置用的库

    arduino-esp32-master开发环境设置用的库
    发表于 08-07 08:53 25次下载

    ESP32ESP8266基于Arduino的MQTT收发资料说明

    本文档的主要内容详细介绍的是ESP32ESP8266基于Arduino的MQTT收发资料说明。
    发表于 01-24 08:00 104次下载
    <b class='flag-5'>ESP32</b>和<b class='flag-5'>ESP</b>8266基于<b class='flag-5'>Arduino</b>的MQTT收发资料说明

    esp32arduino的区别,esp32能否替代arduino

    很多创客爱好者甚至有些技术工程师在理解esp32arduino的时候总是问一句这两块板子哪个更好用?他们可能潜意识中就觉得arduinoesp32是竞品的关系,但实际是这样吗?今天
    发表于 06-24 17:11 2.4w次阅读

    ESP32 开发之旅② Arduino For ESP32说明

    文章目录1. Arduino Core For ESP32是什么?2.Arduino core for ESP32库3.与ESP8266库类
    发表于 11-13 19:51 33次下载
    <b class='flag-5'>ESP32</b> 开发之旅② <b class='flag-5'>Arduino</b> For <b class='flag-5'>ESP32</b>说明

    使用Arduino开发ESP32-01S

    使用Arduino开发ESP32-01S
    发表于 12-03 18:06 16次下载
    使用<b class='flag-5'>Arduino</b>开发<b class='flag-5'>ESP32</b>-01S

    Arduino封装上的ESP32

    电子发烧友网站提供《Arduino封装上的ESP32板.zip》资料免费下载
    发表于 07-25 14:36 5次下载
    <b class='flag-5'>Arduino</b>封装上的<b class='flag-5'>ESP32</b>板

    基于ESP32Arduino兼容系统

    电子发烧友网站提供《基于ESP32Arduino兼容系统.zip》资料免费下载
    发表于 12-20 17:53 0次下载
    基于<b class='flag-5'>ESP32</b>的<b class='flag-5'>Arduino</b>兼容系统

    Arduino Uno与ESP32串口通信

    电子发烧友网站提供《Arduino Uno与ESP32串口通信.zip》资料免费下载
    发表于 02-03 14:11 5次下载
    <b class='flag-5'>Arduino</b> Uno与<b class='flag-5'>ESP32</b>串口通信

    带有ESP32Arduino物联网云

    电子发烧友网站提供《带有ESP32Arduino物联网云.zip》资料免费下载
    发表于 06-15 09:16 3次下载
    带有<b class='flag-5'>ESP32</b>的<b class='flag-5'>Arduino</b>物联网云

    如何在Arduino IDE中安装ESP32开发环境

    要在Arduino IDE中使用ESP32开发板,您需要先安装相应的开发环境。以下是在Arduino IDE中安装ESP32开发环境的步骤。
    的头像 发表于 07-13 16:48 1.3w次阅读
    如何在<b class='flag-5'>Arduino</b> IDE中安装<b class='flag-5'>ESP32</b>开发环境

    用了ESP32后,我的Arduino都积灰了,专为零基础新手准备的ESP32入门指南,为什么我不再使用Arduino

    Arduino 或许你已经熟悉Arduino,这是许多零基础者接触的首个开发板。然而,随着ESP32的崭露头角,它
    的头像 发表于 11-20 11:20 7831次阅读
    用了<b class='flag-5'>ESP32</b>后,我的<b class='flag-5'>Arduino</b>都积灰了,专为零基础新手准备的<b class='flag-5'>ESP32</b>入门指南,为什么我不再使用<b class='flag-5'>Arduino</b>