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数据读取和写入
文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论