

The Adafruit 24LC32 I2C EEPROM Breakout (Part ID: 5146) is a compact and reliable module designed to provide 32Kbits (4KB) of non-volatile memory. This memory module is accessible via the I2C interface, making it an excellent choice for embedded systems that require small amounts of data storage. The breakout board features a Stemma QT connector, enabling seamless integration with a wide range of microcontrollers, including Arduino and Raspberry Pi.








The Adafruit 24LC32 I2C EEPROM Breakout is based on the Microchip 24LC32A EEPROM chip. Below are the key technical details:
| Specification | Details |
|---|---|
| Memory Capacity | 32Kbits (4KB) |
| Interface | I2C (Inter-Integrated Circuit) |
| Operating Voltage | 2.5V to 5.5V |
| Maximum Clock Frequency | 400 kHz (Fast Mode I2C) |
| Write Cycle Time | 5 ms (typical) |
| Data Retention | > 200 years |
| Endurance | 1,000,000 write/erase cycles |
| Stemma QT Connector | Yes (compatible with Stemma QT cables) |
The breakout board has the following pinout:
| Pin Name | Description |
|---|---|
| VIN | Power input (2.5V to 5.5V) |
| GND | Ground connection |
| SDA | I2C data line (connect to microcontroller's SDA pin) |
| SCL | I2C clock line (connect to microcontroller's SCL pin) |
| A0, A1, A2 | Address pins (used to set the I2C address; connect to GND or VIN as needed) |
| Stemma QT | 4-pin JST-SH connector for plug-and-play I2C connections |
0x50. Refer to the 24LC32A datasheet for address configuration details.Below is an example of how to use the Adafruit 24LC32 I2C EEPROM Breakout with an Arduino UNO:
#include <Wire.h> // Include the Wire library for I2C communication
#define EEPROM_I2C_ADDRESS 0x50 // Default I2C address of the 24LC32 EEPROM
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
Serial.println("EEPROM Test Initialized");
// Write a byte to EEPROM
writeEEPROM(0x00, 0x42); // Write 0x42 to address 0x00
delay(10); // Wait for the write cycle to complete
// Read the byte back from EEPROM
byte data = readEEPROM(0x00);
Serial.print("Data read from EEPROM: 0x");
Serial.println(data, HEX); // Print the data in hexadecimal format
}
void loop() {
// Nothing to do in the loop
}
// Function to write a byte to the EEPROM
void writeEEPROM(unsigned int address, byte data) {
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((address >> 8) & 0xFF); // Send the high byte of the address
Wire.write(address & 0xFF); // Send the low byte of the address
Wire.write(data); // Send the data byte
Wire.endTransmission();
delay(5); // Wait for the write cycle to complete
}
// Function to read a byte from the EEPROM
byte readEEPROM(unsigned int address) {
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((address >> 8) & 0xFF); // Send the high byte of the address
Wire.write(address & 0xFF); // Send the low byte of the address
Wire.endTransmission();
Wire.requestFrom(EEPROM_I2C_ADDRESS, 1); // Request 1 byte from the EEPROM
if (Wire.available()) {
return Wire.read(); // Return the received byte
}
return 0xFF; // Return 0xFF if no data is available
}
EEPROM Not Responding on I2C Bus
Data Corruption
Unstable I2C Communication
Incorrect Data Read
Q: Can I use this module with a 3.3V microcontroller?
A: Yes, the module supports operating voltages from 2.5V to 5.5V, making it compatible with both 3.3V and 5V systems.
Q: How do I connect multiple EEPROM modules on the same I2C bus?
A: Use the A0, A1, and A2 pins to assign unique I2C addresses to each module.
Q: What happens if I exceed the write endurance limit?
A: After 1,000,000 write/erase cycles, the memory cells may begin to degrade, leading to unreliable data storage.
Q: Is the Stemma QT connector mandatory for use?
A: No, you can use the standard VIN, GND, SDA, and SCL pins for connections if you do not have a Stemma QT cable.