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

    文章

    1008

    浏览量

    81303
  • Arduino
    +关注

    关注

    187

    文章

    6456

    浏览量

    186469
  • ESP32
    +关注

    关注

    17

    文章

    948

    浏览量

    16971

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

    本文档的主要内容详细介绍的是ESP32ESP8266基于Arduino的MQTT收发资料说明。
    发表于 01-24 08:00 105次下载
    <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.6w次阅读

    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 / VScode+platformIO搭建esp32/esp8266编译环境(一篇足矣)

    arduino/VScode+platformIO 搭建esp32/esp8266开发环境(一篇足矣)前言:入门开源硬件开发,在搭建编译环境的时候碰了一脸灰,特意写下此博客,以供参考!制作不易,来个
    发表于 12-05 14:06 31次下载
    <b class='flag-5'>arduino</b> / VScode+platformIO搭建<b class='flag-5'>esp32</b>/<b class='flag-5'>esp</b>8266编译环境(一篇足矣)

    mpu6050使用 基于esp32

    arduino例程只写了读取各角度。没有写明我们应该怎么去操作这些数据arduino果然入门简单),去查看了他们stm32的例程后看到了操作函数,现在开始开搞。1.模块2.
    发表于 12-06 12:36 10次下载
    mpu6050使用 基于<b class='flag-5'>esp32</b>

    Arduino Nano和ESP32 DEV显示板

    电子发烧友网站提供《Arduino Nano和ESP32 DEV显示板.zip》资料免费下载
    发表于 07-06 14:39 0次下载
    <b class='flag-5'>Arduino</b> Nano和<b class='flag-5'>ESP32</b> DEV显示板

    Arduino封装上的ESP32

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

    如何使用Arduino IDE对ESP32进行无线编程

    在本教程中,我们将使用Arduino IDE 中的 OTA Web Updater对 ESP32 进行无线 (OTA) 编程。
    发表于 08-11 15:42 5395次阅读
    如何使用<b class='flag-5'>Arduino</b> IDE对<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>兼容系统

    带有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.7w次阅读
    如何在<b class='flag-5'>Arduino</b> IDE中安装<b class='flag-5'>ESP32</b>开发环境

    ESP32学习笔记:NVS分区永久保存数据

    今天我们来说说ESP32 for Arduino NVS分区永久保存数据
    的头像 发表于 07-15 16:14 1w次阅读
    <b class='flag-5'>ESP32</b>学习笔记:NVS分区永久保存<b class='flag-5'>数据</b>