El 93C66 es un circuito integrado tipo EEPROM serial CMOS de 4096 bits, muy utilizado en aplicaciones donde se requiere almacenamiento no volátil compacto y confiable. Es una EEPROM serial de 4Kb (4096 bits), organizada como:
- 256 registros de 16 bits (modo x16)
- 512 registros de 8 bits (modo x8)
La selección se hace mediante el pin ORG:
- ORG a VCC → modo x16
- ORG a GND → modo x8
Está disponible en encapsulado SMD SOIC-8, ideal para montaje superficial.
Características
| Parámetro | Valor / Descripción |
|---|---|
| Capacidad | 4096 bits |
| Organización | x8 o x16 seleccionable por pin ORG |
| Interfaz | MICROWIRE (CS, SK, DI, DO) |
| Voltaje de operación | 1.8V – 5.5V |
| Corriente activa típica | ~200 µA |
| Corriente en standby | ~1 µA |
| Ciclos de escritura | 1,000,000 ciclos |
| Retención de datos | 100 años |
| Encapsulado | SOIC-8, DIP-8, TSSOP-8 |
| Protección de escritura | Software Write Protection |
| Lectura secuencial | Soportada |
Forma de lectura / escritura
La comunicación se realiza mediante el protocolo MICROWIRE, que usa 4 señales:
- CS (Chip Select)
- SK (Serial Clock)
- DI (Data In)
- DO (Data Out)
Las instrucciones disponibles incluyen:
- READ
- WRITE
- ERASE
- EWEN / EWDS (habilitar/deshabilitar escritura)
La escritura es auto-cronometrada, no requiere instrucción de borrado previa.
Usos comunes
El 93C66 se emplea en aplicaciones como:
- Almacenamiento de configuración en microcontroladores
- Datos de calibración en sensores
- Identificación de dispositivos (seriales, claves)
- Electrónica automotriz (ECUs, llaves inteligentes)
- Equipos industriales y de consumo
¿Cuánto tiempo guarda la información?
La EEPROM 93C66 puede retener los datos por hasta 100 años sin energía. Esto la hace ideal para almacenamiento de largo plazo en sistemas embebidos.
Aquí tienes un ejemplo completo de cómo comunicar un 93C66 EEPROM con Arduino UNO usando el protocolo Microwire, que es diferente al SPI convencional. Este ejemplo usa una librería especializada para facilitar la lectura y escritura.
Conexión física (modo bit-bang)
| Señal EEPROM | Pin Arduino sugerido |
|---|---|
| CS (Chip Select) | D10 |
| SK (Clock) | D13 |
| DI (Data In) | D11 |
| DO (Data Out) | D12 |
| VCC | 5V |
| GND | GND |
| ORG | GND (modo x8) o VCC (modo x16) |
Librería recomendada
Usa la librería MicrowireEEPROM de tim0s. Puedes instalarla manualmente desde GitHub.
Ejemplo de código básico
#include <MicrowireEEPROM.h>
// Pines asignados
const int CS = 10;
const int CLK = 13;
const int DI = 11;
const int DO = 12;
// Configuración EEPROM
const int PAGE_SIZE = 16; // bits por dirección
const int ADDR_WIDTH = 8; // bits de dirección
const int CLK_DELAY = 200; // microsegundos
MicrowireEEPROM eeprom(CS, CLK, DI, DO, PAGE_SIZE, ADDR_WIDTH, CLK_DELAY);
void setup() {
Serial.begin(9600);
eeprom.writeEnable(); // Habilita escritura
// Escribe valores en direcciones 0 a 9
for (int addr = 0; addr < 10; addr++) {
eeprom.write(addr, 42 + addr);
}
eeprom.writeDisable(); // Protege contra escritura
// Lee y muestra los valores
for (int addr = 0; addr < 10; addr++) {
int val = eeprom.read(addr);
Serial.print("Dirección ");
Serial.print(addr);
Serial.print(": ");
Serial.println(val);
}
}
void loop() {
// No se requiere código en loop
}
Tips para integración
- Si usas modo x16, asegúrate de que el pin ORG esté en alto (VCC).
- Puedes adaptar los pines si usas otro modelo de Arduino.
- Para pruebas, usa valores simples y verifica con el Monitor Serial.