

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.








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 |
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) |
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;
}
No Data Read or Write:
Corrupted Data:
Write Protection Enabled: