EEPROM, что является сокращением от Электрически стираемого программируемого запоминающего устройства только для чтения, представляет собой тип энергонезависимой памяти, которая сохраняет свое содержимое даже после отключения питания.
В зависимости от физического расположения существует два типа EEPROM. Один из них — внутренняя EEPROM, встроенная в микроконтроллер, а другой — внешняя EEPROM, которая представляет собой микросхему и должна быть подключена к микроконтроллеру через последовательный интерфейс (например, I2C или SPI).
Схема соединения:
Код:
#include <Wire.h>
#define EEPROM_I2C_ADDRESS_0 0x50
#define EEPROM_I2C_ADDRESS_1 0x51
int EEPROM_I2C_ADDRESS = NULL;
int i=0;
void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop()
{
for(i=0;i<94;i++)
{
if(i<256)
{
EEPROM_I2C_ADDRESS = 0x50;
writeAT24(i, 33+i);
}
else
{
EEPROM_I2C_ADDRESS = 0x51;
writeAT24(i-256, 0);
}
}
delay(1000);
Serial.println("Data from EEPROM");
Serial.println("-----------------");
for(i=0;i<94;i++)
{
if(i<256)
{
EEPROM_I2C_ADDRESS = 0x50;
Serial.println((char)readAT24(i));
}
else
{
EEPROM_I2C_ADDRESS = 0x51;
Serial.println((char)readAT24(i-256));
}
}
delay(1000);
while(1)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
}
// Function to write to EEPROOM
void writeAT24(byte dataAddress, byte dataVal)
{
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write(dataAddress);
Wire.write(dataVal);
Wire.endTransmission();
delay(5);
}
// Function to read from EEPROM
byte readAT24(byte dataAddress)
{
byte readData = NULL;
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write(dataAddress);
Wire.endTransmission();
delay(5);
Wire.requestFrom(EEPROM_I2C_ADDRESS, 1);
//delay(1);
if(Wire.available())
{
readData = Wire.read();
}
return readData;
}
Чтобы продемонстрировать работу Arduino и внешнего интерфейса EEPROM IC, я написал небольшой код, который сохраняет значения ASCII от 33 (‘!’) до 126 (‘~’) с помощью функции write.
Сохранив их в EEPROM, я считало их с помощью функции чтения и вывело символы на последовательный монитор.
Более подробно читайте здесь: “electronicshub.org/arduino-at24c256-eeprom/”
Или скачайте pdf версию данной странички – здесь.



