Skip to Content

EEPROM Memory Module I2C Interface AT24C256

The AT24C256 is a 32-Kilobyte (256Kb) serial EEPROM (Electrically Erasable Programmable Read-Only Memory) module that stores data in 8-bit words. Unlike RAM, EEPROM retains data even when the device is powered off, making it ideal for long-term storage. With much larger capacity than built-in microcontroller EEPROMs—like Arduino’s 512 bytes—the AT24C256 expands storage capability significantly while operating on a low-power I2C serial interface.

Package Includes:

  • 1 x AT24C256 I2C EEPROM Memory Module

19.95 AED 19.95 AED Tax Included
19.95 AED Tax Included

Not Available For Sale

This combination does not exist.

Terms and Conditions
30-day money-back guarantee
Shipping: 2-3 Business Days

 

Features:

  • Low Voltage and Standard Voltage Operation
  • 2-wire I2C Serial Interface
  • Internal Organization: 32,768 x 8 (256Kb)
  • Supports Bi-directional Data Transfer Protocol
  • I2C Compatible: 100kHz and 400kHz
  • Write Protect Pin for Hardware Data Protection
  • 64-byte Page Write Mode
  • Supports Partial Page Writes
  • Self-timed Write Cycle (10ms max)
  • Durable: 1 Million Write Cycles, 100-Year Data Retention

Specifications:

  • Memory Capacity: 256Kb (32KB)
  • Max Write Time: 5ms
  • Read/Write Endurance: 100,000 cycles
  • Data Retention: >200 Years
  • Write Current: 3mA @ 5V
  • Read Current: 400µA @ 5V
  • Standby Power: 100nA @ 5V
  • Operating Temp Range: -40°C to +125°C

Pinout:

AT24C256 EEPROM Board Pinout

24C256 Pin Description

Connection with Arduino Uno:

AT24C256 EEPROM Arduino Uno
VCC 5V
SCL A5 (SCL)
SDA A4 (SDA)
GND GND

Example Arduino Code:

#include <Wire.h>
#define M1 0x50 // EEPROM device address

void setup() {
  Serial.begin(9600);
  Wire.begin();
  unsigned int address = 1;
  writeEEPROM(M1, address, 0x18);
  readEEPROM(M1, address);
}

void loop() {}

void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data) {
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress >> 8));     // MSB
  Wire.write((int)(eeaddress & 0xFF));   // LSB
  Wire.write(data);
  Serial.println(Wire.endTransmission());
  delay(20);
}

void readEEPROM(int deviceaddress, unsigned int eeaddress) {
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress >> 8));     // MSB
  Wire.write((int)(eeaddress & 0xFF));   // LSB
  Serial.println(Wire.endTransmission());
  delay(5);
  Wire.requestFrom(deviceaddress, 1);
  if (Wire.available() > 0) {
    Serial.println(Wire.read(), HEX);
  } else {
    Serial.println("NO DATA!");
  }
}