Librería SparkFun External EEPROM


A continuación te presento una documentación detallada de la librería SparkFun External EEPROM

oscar Escrito por oscar 25 June 2025 17 0

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

📄 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.


Comentario

Debe aceptar antes de enviar