A continuación te presento una documentación detallada de la librería SparkFun_External_EEPROM.h
de SparkFun, ideal para incluir en tu blog. Esta librería permite la comunicación con memorias EEPROM externas vía I2C, y es compatible con una gran variedad de modelos como la 24LC512, 24LC256, etc.
La librería SparkFun_External_EEPROM
proporciona una interfaz sencilla para comunicarse con memorias EEPROM externas a través del bus I2C, facilitando operaciones de lectura y escritura byte a byte, así como manejo de páginas de memoria.
🔧 Instalación
Puedes instalarla desde el Library Manager del Arduino IDE buscando SparkFun External EEPROM
o desde GitHub:
https://github.com/sparkfun/SparkFun_External_EEPROM_Arduino_Library
📦 Compatibilidad
- Microcontroladores: Arduino UNO, ESP32, Wemos, etc.
- EEPROMs: 24LC512, 24LC256, AT24C256, etc.
- Protocolo: I2C
📚 Proyectos realizados
- Aprende a conectar el ESP32 con EEPROM 24LCXX
📄 Incluir la librería
#include <Wire.h>
#include "SparkFun_External_EEPROM.h"
🔧 Declaración del objeto
ExternalEEPROM myMem;
Este objeto manejará todas las operaciones de la memoria EEPROM.
⚙️ Métodos de la librería
🔹 setMemoryType(uint16_t kbits)
myMem.setMemoryType(512); // Para una EEPROM de 512 Kbits
Establece el tipo de memoria en kilobits. Algunas opciones comunes:
- 128 → 24LC128
- 256 → 24LC256
- 512 → 24LC512
Internamente la librería adapta la paginación y límites de dirección.
🔹 begin()
if(!myMem.begin()) {
Serial.println("EEPROM no detectada");
}
Inicializa la memoria EEPROM. Devuelve true
si se detectó correctamente.
🔹 isConnected()
if(myMem.isConnected()){
Serial.println("Conectada correctamente");
}
Verifica si la EEPROM responde por I2C.
🔹 write(uint32_t addr, uint8_t val)
myMem.write(0, 42); // Escribe el valor 42 en la dirección 0
Escribe un byte (uint8_t
) en la dirección especificada.
🔹 read(uint32_t addr)
uint8_t val = myMem.read(0); Serial.println(val);
Lee un byte desde la dirección dada.
🔹 write(unsigned long addr, const uint8_t* data, uint16_t length)
uint8_t buffer[3] = {1, 2, 3}; myMem.write(100, buffer, 3);
Escribe múltiples bytes en la dirección dada (modo página).
🔹 read(unsigned long addr, uint8_t* buffer, uint16_t length)
uint8_t datos[3]; myMem.read(100, datos, 3);
Lee múltiples bytes desde la EEPROM a un arreglo.
🔹 eraseMemory()
myMem.eraseMemory(); // Borra toda la EEPROM (escribe 0xFF)
Limpia completamente la memoria escribiendo 0xFF en todas las direcciones.
🔹 getMemorySize()
Serial.println(myMem.getMemorySize());
Devuelve el tamaño de la memoria en bytes.
🔌 Conexión típica EEPROM (24LC256)
EEPROM Pin | Conexión |
---|---|
VCC | 3.3V o 5V |
GND | GND |
SDA | A4 (Arduino UNO) |
SCL | A5 (Arduino UNO) |
WP | GND (para permitir escritura) |
A0, A1, A2 | GND (dirección por defecto 0x50) |
🧪 Ejemplo básico
#include <Wire.h>
#include "SparkFun_External_EEPROM.h"
ExternalEEPROM myMem;
void setup() {
Serial.begin(115200);
Wire.begin();
myMem.setMemoryType(512); // EEPROM de 512Kbit = 64KB
if (!myMem.begin()) {
Serial.println("No se detectó la EEPROM");
while (1);
}
myMem.write(0, 123); // Escribimos en la dirección 0
delay(10);
uint8_t value = myMem.read(0);
Serial.print("Valor leído: ");
Serial.println(value);
}
void loop() {
}
✅ Conclusiones
La librería SparkFun_External_EEPROM.h
es una herramienta poderosa y sencilla para manejar memorias externas I2C. Su API clara permite integrarla rápidamente en proyectos con Arduino, ESP32 o Wemos D1.