标签:arduino Flash wemos 开发板 write value address 数据 EEPROM
前言
本节我们学习使用WeMos D1操作EEPROM,使用EEPROM我们可以保存需要掉电保存的信息,如配网信息,设备加密信息,产品认证信息等。
一、基础知识
1.EEPROM简介
EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。简而言之,如果希望保存内容,并且重新上电后读取上次保存的数据,推荐使用EEPROM,Arduino有EEPROM的接口函数可以使用。
ESP8266的EEPROM操作实际上是使用Flash模拟EEPROM,不过请放心,存在Flash中也是可以完成掉电保存的,编译出来的固件都是烧录到Flash中的,所以是不会丢失的哈。
2.函数说明
WeMos D1函数说明
EPS8266的EEPROM大小为4K,因此EEPROM.begin(size)中size最大是4096,和标准的Arduino相比,WeMos D1每次使用都需要使用EEPROM.begin声明要操作的空间。
调用EEPROM.write实际上不会真正的把数据写入Flash,而是写到了内存中,需要调用EEPROM.commit或者EEPROM.end才可以把数据真正写道Flash中。
二、实例
实例程序实现每次从3000地址开始读取数据,然后从0开始依次写入,直到写入地址到达3025,调用commit()函数保存内容,下次重新上电数据仍在。
#include <Arduino.h>
#include <EEPROM.h>
int address = 3000;
byte value;
byte value_write = 0;
int len = 4096;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
EEPROM.begin(len);
}
void loop() {
// put your main code here, to run repeatedly:
value = EEPROM.read(address);
Serial.print(address);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
EEPROM.write(address, value_write);
value_write ++;
if (address == 3025)
{
EEPROM.commit();
}
address = address + 1;
if (address == 4096)
address = 0;
delay(2000);
}
上述程序中,首先使用 EEPROM.begin(len)声明要操作的EEPROM长度,实际上是用来申请内存空间,需要调用EEPROM.commit()才能将数据保存到Flash。
三、运行
从图中可知,设备首次读取3000地址处内容为0xFF,重启设备后,数据变为了我们从0开始依次写入的数据。
四、结语
1.总结:
本节完,实际操作过程中需要注意的地方有如下几点:
(1) WeMos D1,支持操作4K数据
注意,实际操作地址为0-4095。
(2) 保存数据
注意write()只是将数据写的内存,如需要写入硬件,需要调用commit()函数。
(3) 擦除数据
擦除数据其实是向地址中写入0。
2.后记:
如您在使用过程中有任何问题,请加QQ群进一步交流,也可以github提Issue。
QQ交流群:906015840 (备注:物联网项目交流)
github仓库地址:https://github.com/solitary-sand/wemos/
一叶孤沙出品:一沙一世界,一叶一菩提
标签:arduino,Flash,wemos,开发板,write,value,address,数据,EEPROM 来源: https://blog.51cto.com/14616151/2465994
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。