Alternative all'utilizzo di EEPROM


9

A quanto ho capito, EEPROM fa parte di un computer (nel mio caso, un microcontrollore AVR) che memorizza i dati e li mantiene anche quando il dispositivo si spegne completamente. Consente ai dati di essere scritti e letti da esso.

Il problema che sto vedendo è che ha una vita finita e abbastanza breve. In altre parole, posso leggere / scrivere solo un numero finito di volte prima di logorare la EEPROM.

Quello che sto cercando è un modo per ottenere la stessa funzionalità di EEPROM, ma in un fattore di forma ridotto. Suppongo di poter usare qualcosa come una scheda microSD, ma preferirei una soluzione che non richiede all'utente di acquistare una scheda di memoria. Inoltre, ho davvero bisogno solo di pochi byte di spazio, al massimo. Diciamo solo 1 kB per essere molto, molto conservatore. Spenderei più del necessario per ospitare una scheda di memoria di qualsiasi tipo.

Quindi quali sono le mie opzioni? Esistono soluzioni IC comuni che mi consentirebbero di ottenere questo tipo di archiviazione / recupero dei dati, senza una breve durata e costi elevati?


3
Quanto spesso devi salvare questi pochi byte? Questa è la domanda chiave qui. È ogni minuto? Ora? milisecond?
Gustavo Litovsky,

La EEPROM di un ATmega32, ad esempio, ha una durata di 100.000 cicli di scrittura / lettura. Potrebbe essere più che sufficiente, a seconda dell'applicazione ...
m.lin

3
Hai detto "Posso solo leggere / scrivere un numero finito di volte prima di logorare la EEPROM", il che non è del tutto corretto. Si consuma la EEPROM con le scritture, ma generalmente le letture non sono limitate.
Il fotone

@GustavoLitovsky Diciamo, una volta ogni minuto. Nel qual caso, per un ATmega32 che è costantemente acceso, durerà due anni. Immagino che vada bene, quando lo metto in prospettiva.
capcom,

@ThePhoton Ah, ok. Non l'ho mai saputo, grazie. Non che cambi nulla, poiché ho bisogno sia di lettura / scrittura.
capcom,

Risposte:


4

Sì, una EEPROM è un tipo di memoria non volatile che può contenere dati anche senza alimentazione per un periodo di tempo significativo (il tempo effettivo dipende dalla temperatura e da altre condizioni).

Ci sono alcune altre soluzioni non volatili da considerare:

1) Memoria flash interna: la maggior parte dei microcontrollori oggigiorno dispone di Flash per l'archiviazione del codice e alcuni lo forniscono anche per i dati utente e la registrazione. Questo ha anche cicli di scrittura limitati e richiede la cancellazione dei blocchi prima di cambiare i bit da '1' a '0' (nel frattempo memorizzi i dati altrove e poi li riscrivi).

2) Memoria FRAM interna - TI ha dispositivi con memoria FRAM non volatile, a cui è possibile accedere in modo molto semplice (come qualsiasi altra posizione di memoria. Le letture sono anche distruttive come le scritture (anche se nel tuo caso questo potrebbe non avere importanza poiché il numero di cicli è 10 ^ 13 o giù di lì a 85 gradi Celsius).

3) Memoria flash esterna: è possibile aggiungere memoria esternamente per contenere alcuni megabit di dati in modo piuttosto economico.

A seconda della velocità con cui si desidera salvare (e se è possibile arrestare correttamente), è possibile aumentare il numero effettivo di cicli disponibili.


12

Il modo per superare la limitazione di resistenza di EEPROM è applicare un algoritmo di livellamento dell'usura. Fondamentalmente per ogni record che si desidera memorizzare, allocare N-volte il requisito di memoria ad esso e uno spazio corrispondente per i valori N-index, quindi utilizzare l'inferenza per capire quale sia il "record corrente" e quale sia il record successivo da scrivere per. È ben descritto in questa nota sull'app AVR .


7

Un'altra potenziale soluzione è un po 'di RAM statica e una batteria. Questo ha una durata limitata in quanto la batteria alla fine si esaurisce, ma è illimitata nei cicli di scrittura. Potresti anche usare qualcosa come un condensatore di grandi dimensioni per alimentarlo, se sai che il tuo tempo di inattività avrà un valore piccolo. Una cella a bottone al litio può durare a lungo in un'applicazione come questa, se progettata nel modo giusto.

Ci sono anche parti che incorporano un RTC, un nvram e una batteria (per far funzionare l'orologio) in una parte. Questi hanno lo svantaggio che se la fonte di alimentazione interna va, hai perso l'intera parte (non solo la batteria), ma a seconda della durata del prodotto che potrebbe non essere un problema.


2

Non so quale sia il tuo budget, ma potresti voler dare un'occhiata a MRAM , che è veloce come DRAM ma non volatile come Flash. Naturalmente, questi sono molto più costosi dei chip EEPROM.

Ho avuto un sacco di campioni IC di Freescale anni fa, ma non ho mai avuto la possibilità di usarli, quindi non posso davvero dire se finirai con un circuito molto più semplice rispetto a se devi collegare una scheda SD fessura.


1

Sono un ragazzo di computer piuttosto che un ingegnere elettrico, ma penso che ci sia un altro approccio al problema del ciclo di vita della memoria flash:

La mia comprensione è che il problema del ciclo di vita su Flash è in realtà una questione di cancellazione, non di scrittura. Puoi scrivere tutte le volte che vuoi, tranne per il piccolo dettaglio che le scritture sono a senso unico.

Poiché la memoria di cui hai bisogno è minuscola rispetto alle dimensioni anche di dispositivi di piccole dimensioni che puoi (supponendo che tu abbia un accesso sufficientemente basso all'hardware) scriverlo molte volte, ogni volta in una posizione diversa. Assicurati che i tuoi dati possano essere distinti dalla memoria non scritta (riempilo se necessario per farlo) e l'ultima cella scritta è il valore corrente.

Inoltre, se i tuoi dati sono effettivamente un contatore che viene incrementato una volta per scrittura, puoi ottenere ancora di più da esso non scrivendoli affatto, ma piuttosto scrivendo un bit per tick, il conteggio è il numero di bit scritti.


1

La NVSRAM seriale di Microchip può adattarsi al tuo conto:

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.

Questa famiglia di memorie seriali supporta il backup della batteria. Il foglio dati menziona l'attuale assorbimento di 1ua dalla batteria. Il prezzo è inferiore a $ 2 in quantità 1K e i campioni gratuiti sono offerti da Microchip. I circuiti integrati sono disponibili in pacchetti PDIP e SOIC adatti agli hobbisti.


1

Potresti voler esaminare la FRAM seriale. Il principale produttore sembra essere Cypress (nata Ramtron). Ecco una parte:

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

È disponibile in grandi dimensioni (il più grande che ho visto è 2Mbit), è protocollo compatibile con MRAM o flash, è leggibile in byte senza bisogno di cancellazione, è veloce --- le scritture tengono il passo con il protocollo SPI --- e il la ritenzione è ridicolmente alta.

Detto questo, è un po 'difficile da trovare. Non molti distributori lo trasportano e quelli che sembrano esaurirsi all'istante --- Cypress hanno il loro negozio (anche spedizione gratuita) e tra me e l'ordinazione di due parti FM25V04 sono esaurite. Sei settimane di anticipo, apparentemente ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.