自造星球-创客空间  - 讨论区

标题:EEPROM的使用与扩展方案

2015年08月31日 星期一 08:13

EEPROM是一种非易失性存储器,应用非常广泛,在MCU系统中,一般用于存储断电后不能丢失的数据。如下是维基百科的定义:

EEPROM stands for Electrically Erasable Programmable Read-Only Memory and is a type of non-volatile memory used in computers and other electronic devices to store small amounts of data that must be saved when power is removed, e.g., calibration tables or device configuration.

Arduino Nano使用的是ATmega328P MCU,此MCU自带1K字节的EEPROM。Arduino提供了读写EEPROM的Library,使用起来非常方便。

前一阵做了一个基于TEA5767芯片的FM收音机,每次开机都只能加载一个默认的电台,我想让其自动加载上次收听的电台,这个需求使用EEPROM就可以很好的解决。代码如下:

如果MCU内部的EEPROM不够用,我们也可以很方便的使用扩展芯片进行扩容。ATMEL生产的24C64就是一种常用的EEPROM扩展芯片,容量是8K字节。

一般来说,这种扩展芯片都是通过I2C总线与MCU进行通信。Atmel 24C64的I2C地址如下,A0 A1 A2悬空时为0。在使用Arduino编程时,R/W字节不需要考虑。

在GitHub上有多种Library可以用于读写外部EEPROM,我使用的是JChristensen的extEEPROM Library,使用很方便。

示例代码如下:

 

参考资料:

https://www.arduino.cc/en/Reference/EEPROM

https://www.arduino.cc/en/Reference/EEPROMUpdate

https://github.com/JChristensen/extEEPROM

ATMega 24C64芯片数据手册

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2019

    京ICP备05028076号