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

How to Use 25LC1024: Examples, Pinouts, and Specs

Image of 25LC1024
Cirkit Designer LogoDesign with 25LC1024 in Cirkit Designer

Introduction

The 25LC1024 is a 1 Mbit (128K x 8) serial EEPROM manufactured by Microchip Technology. It is designed for non-volatile data storage, meaning it retains data even when power is removed. The component communicates using the Serial Peripheral Interface (SPI) protocol, making it suitable for a wide range of applications requiring reliable and efficient data storage.

Explore Projects Built with 25LC1024

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32-Based Water Flow Monitoring System with OLED Display
Image of Copy of Copy of Flow: A project utilizing 25LC1024 in a practical application
This circuit features an ESP32 microcontroller interfaced with a water flow sensor to measure flow rates and an OLED display for visual output. A 4060 binary counter IC is configured for timing or frequency division, with its outputs connected to the ESP32. A SN74AHCT125N buffer is used for level shifting or driving capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Sound-Activated LED Lighting with ESP32 and INMP441 Microphone
Image of WS2815 v3: A project utilizing 25LC1024 in a practical application
This circuit features an ESP32 microcontroller interfacing with an INMP441 microphone module and controlling a WS2815 LED strip, with signal conditioning provided by an SN74AHC14 hex inverter. It includes a 12V power supply with a 5A fuse for protection and uses a ceramic capacitor for voltage regulation.
Cirkit Designer LogoOpen Project in Cirkit Designer
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
Image of LRCM PHASE 2 BASIC: A project utilizing 25LC1024 in a practical application
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Health Monitoring System with Nucleo WB55RG and OLED Display
Image of Pulsefex: A project utilizing 25LC1024 in a practical application
This circuit is a multi-sensor data acquisition system that uses a Nucleo WB55RG microcontroller to interface with a digital temperature sensor (TMP102), a pulse oximeter and heart-rate sensor (MAX30102), and a 0.96" OLED display via I2C. Additionally, it includes a Sim800l module for GSM communication, powered by a 3.7V LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with 25LC1024

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 Copy of Copy of Flow: A project utilizing 25LC1024 in a practical application
ESP32-Based Water Flow Monitoring System with OLED Display
This circuit features an ESP32 microcontroller interfaced with a water flow sensor to measure flow rates and an OLED display for visual output. A 4060 binary counter IC is configured for timing or frequency division, with its outputs connected to the ESP32. A SN74AHCT125N buffer is used for level shifting or driving capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of WS2815 v3: A project utilizing 25LC1024 in a practical application
Sound-Activated LED Lighting with ESP32 and INMP441 Microphone
This circuit features an ESP32 microcontroller interfacing with an INMP441 microphone module and controlling a WS2815 LED strip, with signal conditioning provided by an SN74AHC14 hex inverter. It includes a 12V power supply with a 5A fuse for protection and uses a ceramic capacitor for voltage regulation.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of LRCM PHASE 2 BASIC: A project utilizing 25LC1024 in a practical application
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Pulsefex: A project utilizing 25LC1024 in a practical application
Battery-Powered Health Monitoring System with Nucleo WB55RG and OLED Display
This circuit is a multi-sensor data acquisition system that uses a Nucleo WB55RG microcontroller to interface with a digital temperature sensor (TMP102), a pulse oximeter and heart-rate sensor (MAX30102), and a 0.96" OLED display via I2C. Additionally, it includes a Sim800l module for GSM communication, powered by a 3.7V LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Data logging in embedded systems
  • Configuration and calibration data storage
  • Firmware storage for microcontrollers
  • Industrial automation systems
  • Consumer electronics requiring non-volatile memory

Technical Specifications

The following table outlines the key technical details of the 25LC1024:

Parameter Value
Memory Size 1 Mbit (128K x 8)
Interface SPI (Serial Peripheral Interface)
Operating Voltage Range 2.5V to 5.5V
Maximum Clock Frequency 10 MHz (at 5.0V)
Write Cycle Time 5 ms (typical)
Endurance 1,000,000 write cycles (typical)
Data Retention 200 years (typical)
Operating Temperature Range -40°C to +85°C
Package Types PDIP, SOIC, TSSOP, MSOP

Pin Configuration and Descriptions

The 25LC1024 is available in an 8-pin package. The pinout and descriptions are as follows:

Pin Number Pin Name Description
1 CS Chip Select: Activates the device when pulled low
2 SO Serial Data Output: Outputs data to the SPI master
3 WP Write Protect: Disables write operations when pulled low
4 VSS Ground: Connect to system ground
5 SI Serial Data Input: Receives data from the SPI master
6 SCK Serial Clock: Clock signal for SPI communication
7 HOLD Hold: Pauses communication without resetting the SPI bus when pulled low
8 VCC Power Supply: Connect to a voltage source within the operating range (2.5V-5.5V)

Usage Instructions

How to Use the 25LC1024 in a Circuit

  1. Power Supply: Connect the VCC pin to a stable power source (2.5V to 5.5V) and the VSS pin to ground.
  2. SPI Connections:
    • Connect the CS pin to a GPIO pin on the microcontroller to enable/disable the EEPROM.
    • Connect the SCK pin to the SPI clock pin of the microcontroller.
    • Connect the SI pin to the SPI MOSI (Master Out Slave In) pin.
    • Connect the SO pin to the SPI MISO (Master In Slave Out) pin.
  3. Optional Pins:
    • Connect the WP pin to VCC if write protection is not required.
    • Connect the HOLD pin to VCC if the hold function is not needed.
  4. SPI Configuration: Configure the SPI interface on the microcontroller with the following settings:
    • Clock polarity (CPOL): 0
    • Clock phase (CPHA): 0
    • Data order: MSB first
  5. Data Transfer:
    • To write data, send the WRITE instruction (0x02) followed by the memory address and data bytes.
    • To read data, send the READ instruction (0x03) followed by the memory address and read the data bytes.

Important Considerations and Best Practices

  • Write Protection: Use the WP pin to prevent accidental writes to the memory.
  • Timing: Ensure proper timing for SPI signals, especially the clock frequency, to avoid communication errors.
  • Pull-Up Resistors: Use pull-up resistors on the CS, WP, and HOLD pins if they are not actively driven.
  • Page Writes: The 25LC1024 supports page writes of up to 256 bytes. Ensure that writes do not cross page boundaries.

Example Code for Arduino UNO

Below is an example of interfacing the 25LC1024 with an Arduino UNO to write and read data:

#include <SPI.h>

// Pin definitions
const int CS_PIN = 10; // Chip Select pin connected to Arduino pin 10

void setup() {
  // Initialize SPI and Chip Select pin
  SPI.begin();
  pinMode(CS_PIN, OUTPUT);
  digitalWrite(CS_PIN, HIGH); // Set CS pin high to disable the EEPROM
  Serial.begin(9600);
}

void loop() {
  // Example: Write and read a byte of data
  byte addressHigh = 0x00; // High byte of memory address
  byte addressLow = 0x10;  // Low byte of memory address
  byte dataToWrite = 0x55; // Data to write

  // Write data to EEPROM
  writeEEPROM(addressHigh, addressLow, dataToWrite);

  // Read data from EEPROM
  byte dataRead = readEEPROM(addressHigh, addressLow);

  // Print the read data
  Serial.print("Data read from EEPROM: 0x");
  Serial.println(dataRead, HEX);

  delay(1000); // Wait for 1 second
}

void writeEEPROM(byte addressHigh, byte addressLow, byte data) {
  digitalWrite(CS_PIN, LOW); // Enable the EEPROM
  SPI.transfer(0x06);        // Send WREN (Write Enable) command
  digitalWrite(CS_PIN, HIGH); // Disable the EEPROM

  delay(1); // Small delay to ensure WREN is processed

  digitalWrite(CS_PIN, LOW); // Enable the EEPROM
  SPI.transfer(0x02);        // Send WRITE command
  SPI.transfer(addressHigh); // Send high byte of address
  SPI.transfer(addressLow);  // Send low byte of address
  SPI.transfer(data);        // Send data byte
  digitalWrite(CS_PIN, HIGH); // Disable the EEPROM

  delay(5); // Wait for write cycle to complete
}

byte readEEPROM(byte addressHigh, byte addressLow) {
  digitalWrite(CS_PIN, LOW); // Enable the EEPROM
  SPI.transfer(0x03);        // Send READ command
  SPI.transfer(addressHigh); // Send high byte of address
  SPI.transfer(addressLow);  // Send low byte of address
  byte data = SPI.transfer(0x00); // Read data byte
  digitalWrite(CS_PIN, HIGH); // Disable the EEPROM
  return data;
}

Troubleshooting and FAQs

Common Issues

  1. No Data Read or Write:

    • Ensure the CS pin is properly toggled during SPI communication.
    • Verify the SPI clock frequency is within the supported range (up to 10 MHz at 5V).
    • Check the power supply voltage and connections to the VCC and VSS pins.
  2. Corrupted Data:

    • Ensure that write operations do not cross page boundaries.
    • Avoid power interruptions during write cycles.
  3. Write Protection Enabled:

    • Verify the state of the WP pin. If it is low, write operations will be disabled.

Solutions and Tips

  • Use a logic analyzer or oscilloscope to debug SPI communication if issues persist.
  • Double-check the SPI settings (CPOL, CPHA, and data order) in your microcontroller's configuration.
  • If using multiple SPI devices, ensure proper handling of the CS pin for each device to avoid conflicts.