Alternativas al uso de EEPROM

Tal como lo entiendo, EEPROM es una parte de una computadora (en mi caso, un microcontrolador AVR) que almacena datos y los retiene incluso cuando el dispositivo se apaga por completo. Permite escribir y leer datos en él.

El problema que veo es que tiene una vida finita y bastante corta. En otras palabras, solo puedo leer/escribir un número finito de veces antes de gastar la EEPROM.

Lo que estoy buscando es una forma de lograr la misma funcionalidad que EEPROM, pero en un factor de forma pequeño. Supongo que puedo usar algo como una tarjeta microSD, pero preferiría una solución que no requiera que el usuario compre una tarjeta de memoria. Además, solo necesito unos pocos bytes de espacio, como máximo. Digamos que 1 kB para ser muy, muy conservador. Estaría gastando más de lo necesario para acomodar una tarjeta de memoria de cualquier tipo.

Entonces ¿cuales son mis opciones? ¿Hay alguna solución IC común que me permita lograr este tipo de almacenamiento/recuperación de datos, sin una vida útil corta y un alto costo?

¿Con qué frecuencia necesita guardar estos pocos bytes? Esa es la pregunta clave aquí. ¿Es cada minuto? ¿Hora? milisegundo?
La EEPROM de un ATmega32, por ejemplo, tiene una vida de 100.000 ciclos de escritura/lectura. Eso podría ser más que suficiente, dependiendo de la aplicación.
Dijiste "Solo puedo leer/escribir un número finito de veces antes de gastar la EEPROM", lo cual no es del todo correcto. Desgastas la EEPROM con escrituras, pero generalmente las lecturas no están limitadas.
@GustavoLitovsky Digamos, una vez por minuto. En cuyo caso, para un ATmega32 que está constantemente encendido, durará dos años. Supongo que está bien, cuando lo pongo en perspectiva.
@ThePhoton Ah, está bien. Nunca supe eso, gracias. No es que cambie nada, ya que necesito lectura/escritura.
@capcom si solo está tratando con una cantidad, entonces creo que está bien cambiar la pieza cada dos años más o menos. ¿Irá su aplicación a la producción en masa? Es posible que necesite una solución diferente en ese caso.

Respuestas (7)

Sí, una EEPROM es un tipo de memoria no volátil que puede almacenar datos incluso sin energía durante un período de tiempo significativo (el tiempo real depende de la temperatura y otras condiciones).

Hay algunas otras soluciones no volátiles que puede considerar:

1) Memoria Flash interna: la mayoría de los microcontroladores en la actualidad tienen Flash para el almacenamiento de código y algunos también lo proporcionan para los datos del usuario y el registro. Esto también tiene ciclos de escritura limitados y requiere el borrado de bloques antes de cambiar los bits de '1' a '0' (mientras tanto, almacena datos en otro lugar y luego los vuelve a escribir).

2) Memoria FRAM interna: TI tiene dispositivos con memoria FRAM que no es volátil, se puede acceder de manera muy simple (como cualquier otra ubicación de memoria). Las lecturas también son destructivas como las escrituras (aunque en su caso esto podría no importar ya que la cantidad de ciclos es 10 ^ 13 más o menos a 85 grados centígrados).

3) Memoria flash externa: puede agregar memoria externamente para almacenar unos pocos megabits de datos de forma bastante económica.

Dependiendo de la velocidad a la que desee ahorrar (y si puede apagar bien), es posible que pueda aumentar la cantidad efectiva de ciclos disponibles para usted.

La forma de superar la limitación de resistencia de la EEPROM es aplicar un algoritmo de nivelación de desgaste. Básicamente, para cada registro que desee almacenar, asigne N veces el requisito de memoria y un espacio correspondiente para los valores de índice N, luego use la inferencia para averiguar cuál es el "registro actual" y cuál es el próximo registro para escribir a. Está bien descrito en esta nota de la aplicación AVR .

Otra posible solución es un poco de ram estático y una batería. Esto tiene una vida útil limitada en el sentido de que la batería eventualmente se agotará, pero es ilimitada en ciclos de escritura. También podría usar algo como un condensador grande para alimentarlo, si sabe que su tiempo de inactividad será un valor pequeño. Una celda de moneda de litio puede durar mucho tiempo en una aplicación como esta, si se diseña correctamente.

También hay partes que incorporan un RTC, nvram y batería (para mantener el reloj funcionando) en una sola parte. Estos tienen la desventaja de que si la fuente de alimentación interna falla, ha perdido toda la parte (no solo la batería), pero dependiendo de cuánto tiempo deba durar su producto, eso podría no ser un problema.

No sé cuál es su presupuesto, pero es posible que desee echar un vistazo a MRAM , que es rápido como DRAM pero no volátil como Flash. Por supuesto, estos son mucho más caros que los chips EEPROM.

Tengo un montón de circuitos integrados de muestra de Freescale hace años, pero nunca tuve la oportunidad de usarlos, por lo que realmente no puedo decir si terminará con un circuito mucho más simple que si tiene que adjuntar una tarjeta SD ranura.

Soy informático en lugar de ingeniero eléctrico, pero creo que hay otro enfoque para el problema del ciclo de vida de la memoria flash:

Tengo entendido que el problema del ciclo de vida en flash es en realidad una cuestión de borrar, no de escribir. Puedes escribir tantas veces como quieras excepto por el pequeño detalle de que las escrituras son unidireccionales.

Dado que el almacenamiento que necesita es pequeño en comparación con el tamaño de incluso dispositivos pequeños, puede (suponiendo que tenga un nivel de acceso al hardware lo suficientemente bajo) escribirlo muchas veces, cada vez en una ubicación diferente. Asegúrese de que sus datos se puedan distinguir de la memoria no escrita (rellénelos si es necesario para lograr esto) y que la última celda escrita sea el valor actual.

Además, si sus datos son en realidad un contador que se incrementa una vez por escritura, puede obtener aún más si no los escribe en absoluto, sino que escribe un bit por tic, el conteo es la cantidad de bits escritos.

La NVSRAM serie de Microchip puede ajustarse a su factura:

Serial NVSRAM offers non-volatile RAM storage and is ideal for applications that need to write very often to the memory. This device is significantly lower cost than other non-volatile RAM devices and the data is backed using an external battery. This 8-pin, SPI device supports unlimited instantaneous writes to the memory array, making it ideal in applications such as meters, data loggers, data recorders, black boxes. These devices are available in 512Kbits and 1Mbit densities.

Esta familia de memorias en serie admite respaldo de batería. La hoja de datos menciona el consumo actual de 1ua de la batería. El precio es inferior a $2 en una cantidad de 1K y Microchip ofrece muestras gratuitas. Los circuitos integrados están disponibles en paquetes PDIP y SOIC aptos para aficionados.

Es posible que desee buscar en FRAM serie. El principal fabricante parece ser Cypress (de soltera Ramtron). Aquí hay una parte:

http://www.cypress.com/?rID=73530

Está disponible en tamaños grandes (el más grande que he visto es de 2 Mbit), su protocolo es compatible con MRAM o flash, es de lectura y escritura de bytes sin necesidad de borrar, es rápido --- escribe siguiendo el protocolo SPI --- y el la retención es ridículamente alta.

Dicho esto, es un poco difícil de encontrar. No muchos distribuidores lo tienen y aquellos que sí parecen venderse instantáneamente --- Cypress tiene su propia tienda (envío gratis también) y entre mi pedido de dos piezas de FM25V04 se agotaron. Seis semanas de tiempo de espera, aparentemente...