Как подключить AT24C04 I2C EEPROM к Arduino?

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 версию данной странички – здесь.

Добавить комментарий