Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT: Examples, Pinouts, and Specs

Image of Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT
Cirkit Designer LogoDesign with Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in Cirkit Designer

Introduction

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.

Explore Projects Built with Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
I2C-Controlled OLED Display with External EEPROM and Interactive Pushbuttons
Image of godmode: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
This is a microcontroller-based interactive device featuring a Wemos D1 Mini, an OLED display, external EEPROM, and an I/O expander. It includes user input buttons and status LEDs, with potential MIDI interface capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Sensor Hub with Adafruit QT Py RP2040 and OLED Display
Image of 512: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
This circuit features an Adafruit QT Py RP2040 microcontroller interfacing with an MPU-6050 accelerometer, an Adafruit APDS-9960 sensor, and a 0.96" OLED display via I2C communication. It is powered by a 3.7V LiPo battery and includes a green LED with a current-limiting resistor connected to an analog pin of the microcontroller.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Smart Sensor Hub with Adafruit QT Py RP2040
Image of wearable final: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
This circuit features an Adafruit QT Py RP2040 microcontroller interfaced with an APDS9960 proximity sensor, an MPU6050 accelerometer and gyroscope, and an OLED display via I2C communication. It also includes a buzzer controlled by the microcontroller and is powered by a 3.7V LiPo battery with a toggle switch for power control.
Cirkit Designer LogoOpen Project in Cirkit Designer
A-Star 32U4 Mini and I2C LCD Screen Battery-Powered Display
Image of lcd disolay: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
This circuit features an A-Star 32U4 Mini microcontroller connected to a 16x2 I2C LCD screen. The microcontroller provides power and ground to the LCD, and communicates with it via the I2C protocol using the A4 (SDA) and A5 (SCL) pins.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of godmode: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
I2C-Controlled OLED Display with External EEPROM and Interactive Pushbuttons
This is a microcontroller-based interactive device featuring a Wemos D1 Mini, an OLED display, external EEPROM, and an I/O expander. It includes user input buttons and status LEDs, with potential MIDI interface capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of 512: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
Battery-Powered Sensor Hub with Adafruit QT Py RP2040 and OLED Display
This circuit features an Adafruit QT Py RP2040 microcontroller interfacing with an MPU-6050 accelerometer, an Adafruit APDS-9960 sensor, and a 0.96" OLED display via I2C communication. It is powered by a 3.7V LiPo battery and includes a green LED with a current-limiting resistor connected to an analog pin of the microcontroller.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of wearable final: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
Battery-Powered Smart Sensor Hub with Adafruit QT Py RP2040
This circuit features an Adafruit QT Py RP2040 microcontroller interfaced with an APDS9960 proximity sensor, an MPU6050 accelerometer and gyroscope, and an OLED display via I2C communication. It also includes a buzzer controlled by the microcontroller and is powered by a 3.7V LiPo battery with a toggle switch for power control.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of lcd disolay: A project utilizing Adafruit 24LC32 I2C EEPROM Breakout - 32Kbit / 4 KB - Stemma QT in a practical application
A-Star 32U4 Mini and I2C LCD Screen Battery-Powered Display
This circuit features an A-Star 32U4 Mini microcontroller connected to a 16x2 I2C LCD screen. The microcontroller provides power and ground to the LCD, and communicates with it via the I2C protocol using the A4 (SDA) and A5 (SCL) pins.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Storing configuration settings or calibration data in embedded systems
  • Logging small amounts of sensor data
  • Retaining data across power cycles
  • Applications requiring low-power, non-volatile memory

Technical Specifications

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)

Pin Configuration and Descriptions

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

Usage Instructions

How to Use the Component in a Circuit

  1. Power the Module: Connect the VIN pin to a 3.3V or 5V power source and the GND pin to ground.
  2. Connect I2C Lines: Connect the SDA and SCL pins to the corresponding I2C pins on your microcontroller.
  3. Set the I2C Address: Use the A0, A1, and A2 pins to configure the I2C address. By default, all address pins are tied to GND, resulting in an address of 0x50. Refer to the 24LC32A datasheet for address configuration details.
  4. Optional Stemma QT Connection: If your microcontroller supports Stemma QT, simply use a Stemma QT cable to connect the module.

Important Considerations and Best Practices

  • Pull-Up Resistors: Ensure that your I2C bus has appropriate pull-up resistors (typically 4.7kΩ) on the SDA and SCL lines. Some microcontrollers include internal pull-ups, but external resistors may be required for reliable operation.
  • Write Cycle Time: Allow sufficient time (5 ms) for write operations to complete before initiating another write.
  • Address Conflicts: If using multiple I2C devices, ensure that each device has a unique address to avoid conflicts.
  • Voltage Compatibility: Verify that the operating voltage of your microcontroller matches the voltage requirements of the EEPROM module.

Example Code for Arduino UNO

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
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. EEPROM Not Responding on I2C Bus

    • Cause: Incorrect wiring or I2C address conflict.
    • Solution: Double-check the connections and ensure the I2C address matches the configuration of the A0, A1, and A2 pins.
  2. Data Corruption

    • Cause: Insufficient delay after write operations.
    • Solution: Ensure a minimum delay of 5 ms after each write operation.
  3. Unstable I2C Communication

    • Cause: Missing or incorrect pull-up resistors on the SDA and SCL lines.
    • Solution: Add 4.7kΩ pull-up resistors to the SDA and SCL lines if not already present.
  4. Incorrect Data Read

    • Cause: Addressing error or noise on the I2C bus.
    • Solution: Verify the address being accessed and ensure proper shielding of I2C lines in noisy environments.

FAQs

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.