Electronics

EEPROM Data Module - AT24C256 RobotDYN

Out Of Stock

1

Description

This I2C EEPROM module is the finest option for data storage in your applications. This module is built around the AT24C256 EEPROM chip, which has a 256k bit capacity. It communicates with Arduino through the I2C bus, allowing you to store a lot more data.

The AT24C256C is a 256Kb Serial EEPROM with an I2C (2-wire) serial interface from Microchip. The device is structured as a single 32K x 8 block and is designed for consumer, industrial, and automotive applications that require stable nonvolatile memory storage. The EEPROM can be packaged in a variety of ways to save space.


Specifications: 

32K x 8 (256 Kbit)

2-Wire Serial Interface, I2C Compatible

400 kHz and 1 MHz clock compatibility

Self-Timed Erase and Write Cycles (5 ms max.)

Low Power Consumption

Read current 1 mA (Typ), 2 mA (Max)

Write current 2 mA (Typ), 3 mA (Max)

Standby current 6 uA (Max)

Hardware Write-Protect Pin

More than 1 million erase/write cycles

Data retention > 100 years

Extended Temperature Ranges Available (Grade 1, 2, and 3 as defined in AEC-Q100)

Grade 1 Temperature Range: -40°C to 125°C

Grade 2 Temperature Range: -40°C to 105°C

Grade 3 Temperature Range: -40°C to 85°C

Qualified for Automotive Applications

Factory Programming Available


Documents

Dimensional drawing

Dimensions EEPROM Data Module - AT24C256Dimensions EEPROM Data Module - AT24C256

Pinout

Pinout EEPROM Data Module - AT24C256Pinout EEPROM Data Module - AT24C256

Schematic

Schematic of EEPROM Data Module - AT24C256


Address Truth Table

The Wire library allows you to pass an integer value so we could just make a bit-wise operation to device the integer variable into two bytes. There are already functions that simplify this operation HIGH BYTE and LOW BYTE. The following code allows you to write all 32000 bytes of memory.

Source Code 1

Address Configuration Truth Table


Sample Code fo the EEPROM Data Module - AT24C256 RobotDYN


/*
 * Use the I2C bus with EEPROM 24LC64
 * Sketch: eeprom.pde
 *
 * Author: hkhijhe
 * Date: 01/10/2010
 *
 *
 */
 #include  //I2C library
 void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
 int rdata = data;
 Wire.beginTransmission(deviceaddress);
 Wire.send((int)(eeaddress >> 8)); // MSB
 Wire.send((int)(eeaddress & 0xFF)); // LSB
 Wire.send(rdata);
 Wire.endTransmission();
 }
 // WARNING: address is a page address, 6-bit end will wrap around
 // also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes
 void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) {
 Wire.beginTransmission(deviceaddress);
 Wire.send((int)(eeaddresspage >> 8)); // MSB
 Wire.send((int)(eeaddresspage & 0xFF)); // LSB
 byte c;
 for ( c = 0; c < length; c++)
 Wire.send(data[c]);
 Wire.endTransmission();
 }
 byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
 byte rdata = 0xFF;
 Wire.beginTransmission(deviceaddress);
 Wire.send((int)(eeaddress >> 8)); // MSB
 Wire.send((int)(eeaddress & 0xFF)); // LSB
 Wire.endTransmission();
 Wire.requestFrom(deviceaddress,1);
 if (Wire.available()) rdata = Wire.receive();
 return rdata;
 }
 // maybe let's not read more than 30 or 32 bytes at a time!
 void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length ) {
 Wire.beginTransmission(deviceaddress);
 Wire.send((int)(eeaddress >> 8)); // MSB
 Wire.send((int)(eeaddress & 0xFF)); // LSB
 Wire.endTransmission();
 Wire.requestFrom(deviceaddress,length);
 <