使用EEPROM存储和读取数据

目的

测试和了解Arduino板载EEPROM的使用。

原文地址:

http://www.joytag.com/arduino/使用eeprom存储和读取数据/
(转载请注明出处)

正文:

QQ群里一朋友问Arduino上如何使用EEPROM存储字符型数据,其实无论是字符型数据还是其它类型数据,或者类似文件、图片这样的对象,都是作为二进制数据存在的。

Arduino官方的有三个EEPROM的例子,分别是清空EEPROM、 写入EEPROM、读取EEPROM。而清空EEPROM,其本质就是把整个EEPROM的空间写入0。而读写的语法分别是:EEPROM.read(address)、EEPROM.write(address, value),是不是很简单?

下面是一个简单的例子,写入一组字符串到EEPROM中,然后读出来,通过串口监视器显示出来。

这个例子中,我对0至1023地址中写入0,来清空EEPROM,这是因为Arduino不同的微控制器有不同大小的EEPROM。对于Arduino UNO R3而言,微控制器是ATmega328,空间大小是1024字节。

The microcontrollers on the various Arduino boards have different amounts of EEPROM: 1024 bytes on the ATmega328, 512 bytes on the ATmega168 and ATmega8, 4 KB (4096 bytes) on the ATmega1280 and ATmega2560.

另外,需要注意的是EEPROM写入寿命的问题,这个很容易被忽略。

An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it.

当写这个例子的时候,想到一个有意思的问题,就是对于1024个字节长度的EEPROM,我们如果在第1024、1025、1026处分别写入内容,那么会写到哪里去,读出又会读出哪些内容?通过测试,我们发现在1024、1025、1026处写入和读出内容,等同于在0、1、2处操作。感兴趣的读者可以自己修改代码测试。

结论:

Arduino的EEPROM库提供了很方便的存储和读取功能,对EEPROM的操作简单直接。

文成仓促,错漏难免,如有发现,烦请赐教。
联系邮件:support@joytag.com
转载请注明出处:http://www.joytag.com/arduino/使用eeprom存储和读取数据/

Posted in Arduino