wemos D1 arduino物联网开发板应用笔记3-操做EEPROM

前言

本节咱们学习使用WeMos D1操做EEPROM,使用EEPROM咱们能够保存须要掉电保存的信息,如配网信息,设备加密信息,产品认证信息等。git

1、基础知识

1.EEPROM简介

EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。简而言之,若是但愿保存内容,而且从新上电后读取上次保存的数据,推荐使用EEPROM,Arduino有EEPROM的接口函数可使用。github

ESP8266的EEPROM操做其实是使用Flash模拟EEPROM,不过请放心,存在Flash中也是能够完成掉电保存的,编译出来的固件都是烧录到Flash中的,因此是不会丢失的哈。编程

2.函数说明

WeMos D1函数说明ide

wemos D1 arduino物联网开发板应用笔记3-操做EEPROM

EPS8266的EEPROM大小为4K,所以EEPROM.begin(size)中size最大是4096,和标准的Arduino相比,WeMos D1每次使用都须要使用EEPROM.begin声明要操做的空间。函数

调用EEPROM.write实际上不会真正的把数据写入Flash,而是写到了内存中,须要调用EEPROM.commit或者EEPROM.end才能够把数据真正写道Flash中。oop

2、实例

实例程序实现每次从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。ui

3、运行

wemos D1 arduino物联网开发板应用笔记3-操做EEPROM

从图中可知,设备首次读取3000地址处内容为0xFF,重启设备后,数据变为了咱们从0开始依次写入的数据。加密

4、结语

1.总结:

本节完,实际操做过程当中须要注意的地方有以下几点:code

(1) WeMos D1,支持操做4K数据

注意,实际操做地址为0-4095。

(2) 保存数据

注意write()只是将数据写的内存,如须要写入硬件,须要调用commit()函数。

(3) 擦除数据

擦除数据实际上是向地址中写入0。

2.后记:

如您在使用过程当中有任何问题,请加QQ群进一步交流,也能够github提Issue。

QQ交流群:906015840 (备注:物联网项目交流)

github仓库地址:https://github.com/solitary-sand/wemos/

一叶孤沙出品:一沙一世界,一叶一菩提

wemos D1 arduino物联网开发板应用笔记3-操做EEPROM

相关文章
相关标签/搜索