使用EEPROM断电保存数据

💡 原文中文,约3000字,阅读约需7分钟。
📝

内容提要

EEPROM是一种电可擦可编程只读存储器,用于保存断电后的数据。Arduino控制器上的AVR芯片都带有EEPROM,也可以外接EEPROM芯片。可以使用EEPROM类库的write和read方法来操作EEPROM。可以通过eeprom_write示例代码将值写入EEPROM,通过eeprom_read示例代码从EEPROM读取值,通过eeprom_clear示例代码清除EEPROM内容。

🔎

延伸解读

不同Arduino型号的EEPROM容量差异

文章指出,Arduino控制器的EEPROM大小因型号而异:Arduino UNO、Arduino duemilanove-m328、Zduino m328均使用ATmega328芯片,EEPROM为1K;Arduino duemilanove-m168为512字节;Arduino 2560为4K。这意味着在编写代码时,不能统一假设EEPROM为512字节,而应根据实际型号调整地址范围,否则可能访问越界或浪费存储空间。

官方示例代码的容量假设与调整

文章特别提醒,官方提供的eeprom_write、eeprom_read和eeprom_clear示例代码编写较早,均将EEPROM大小定为512字节。实际使用时,如果您的Arduino型号EEPROM容量不同(如UNO为1K),需要自行修改代码中的地址上限,例如将循环条件中的512改为1024,以确保操作覆盖全部存储空间或避免越界。

模拟值存储时的缩放处理

在eeprom_write示例中,从模拟输入0读取的值范围是0-1024,但EEPROM每个字节只能存储0-255的值。因此代码将读取值除以4后再写入,以适配单字节存储。这提示读者,在存储大于255的数据时,需要先进行缩放或拆分,否则会丢失精度或无法正确保存。

❓

Q&A

什么是EEPROM,它的主要用途是什么?

EEPROM是一种电可擦可编程只读存储器,用于保存断电后的数据。

Arduino控制器上EEPROM的大小是多少?

Arduino UNO和Zduino m328的EEPROM为1K,Arduino 2560的EEPROM为4K。

如何在Arduino中写入数据到EEPROM?

可以使用eeprom_write示例代码,通过EEPROM类库的write方法将值写入EEPROM。

如何从EEPROM读取数据?

可以使用eeprom_read示例代码,通过EEPROM类库的read方法从EEPROM读取值。

如何清除EEPROM中的数据?

可以使用eeprom_clear示例代码,将EEPROM中的每个字节写入0来清除内容。

EEPROM的使用有什么注意事项?

在使用EEPROM时,需注意不同型号的Arduino其EEPROM大小不同,实际使用中应参考具体型号。

➡️

继续阅读