Electronics

EEPROM Memory Module I2C Interface AT24C256

AED 9.45

Low stock
1

Description

The AT24C256 is a 32-Kbyte serial, EEPROM (Electrically Erasable Programmable Read-Only Memory) that is divided into 256Kbit WORDS of 8 BITS each. EEPROM can retain data indefinitely unless you delete or write it, and the data is not lost when the power is turned off. Some microcontrollers have limited storage, such as the Arduino, which has just 512 bytes of data storage compared to the AT24C256, which has 256Kb EEPROM, which will be ideal for storing a modest quantity of data or expanding data storage for your microcontroller. The 24C256 is designed for use in low-power, low-voltage storage systems that are powered by the i2C serial communication channel.

 

Features:

  • Low Voltage and Standard-Voltage Operation
  • 2-wire Serial Interface
  • Internally Organized 16,384 x 8 and 32,768 x 8
  • Bi-directional Data Transfer Protocol
  • 100kHz and 400kHz Compatibility
  • Write Protect Pin for Hardware Data Protection
  • 64-byte Page Write Modes
  • Partial Page Writes are Allowed
  • Self-timed Write Cycle (10mS max)
  • High-Reliability, 1 million Write Cycles, 100 Year Data Retention

 

Specifications:

  • Maximum Writing Time: 5 mS
  • Read / Write Cycle: 100000
  • Data Retention: > 200 Years
  • Write Current Consumption: 3mA – 5VDC
  • Read Current Consumption: 400uA – 5VDC
  • Power Consumption on Standby: 100nA -5VDC
  • Temperature Range: -40*C to +125*C

 

Pinout:

 

Connections With Arduino:

24C256 EEPROM MODULE ARDUINO UNO
VCC 5V
SCL SCL/A5
SDA SDA/A4
GND GND

 

Test Code:

#include "Wire.h"

#define M1 0x50 // 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!");
  }
};