Alternativen zur Verwendung von EEPROM

So wie ich es verstehe, ist EEPROM ein Teil eines Computers (in meinem Fall ein AVR-Mikrocontroller), der Daten speichert und auch dann behält, wenn das Gerät vollständig heruntergefahren wird. Es ermöglicht das Schreiben von Daten und das Lesen von Daten.

Das Problem, das ich sehe, ist, dass es ein endliches Leben hat, und zwar ein ziemlich kurzes. Mit anderen Worten, ich kann nur eine begrenzte Anzahl von Malen lesen/schreiben, bevor ich das EEPROM verschleiße.

Was ich suche, ist eine Möglichkeit, die gleiche Funktionalität wie EEPROM zu erreichen, jedoch in einem kleinen Formfaktor. Ich nehme an, ich kann so etwas wie eine microSD-Karte verwenden, aber ich würde eine Lösung bevorzugen, bei der der Benutzer keine Speicherkarte kaufen muss. Außerdem benötige ich höchstens ein paar Bytes Speicherplatz. Sagen wir einfach, 1 kB ist sehr, sehr konservativ. Ich würde mehr als nötig ausgeben, um eine Speicherkarte jeglicher Art unterzubringen.

Also, was sind meine Optionen? Gibt es gängige IC-Lösungen, mit denen ich diese Art der Datenspeicherung/-abfrage ohne kurze Lebensdauer und hohe Kosten erreichen könnte?

Wie oft müssen Sie diese wenigen Bytes speichern? Das ist hier die entscheidende Frage. Jede Minute? Stunde? Millisekunde?
Das EEPROM eines ATmega32 beispielsweise hat eine Lebensdauer von 100.000 Schreib-/Lesezyklen. Das könnte je nach Anwendung mehr als genug sein.
Sie sagten "Ich kann nur eine begrenzte Anzahl von Malen lesen / schreiben, bevor ich das EEPROM verschleiße", was nicht ganz richtig ist. Sie verschleißen das EEPROM mit Schreibvorgängen, aber im Allgemeinen sind Lesevorgänge nicht begrenzt.
@GustavoLitovsky Sagen wir einmal pro Minute. In diesem Fall hält es für einen ATmega32, der ständig eingeschaltet ist, zwei Jahre. Ich denke, das ist in Ordnung, wenn ich es relativiere.
@ThePhoton Ah, ok. Das wusste ich nie, danke. Nicht, dass es etwas ändert, da ich sowohl Lesen als auch Schreiben benötige.
@capcom Wenn Sie es nur mit einer Menge zu tun haben, glaube ich, dass es in Ordnung ist, das Teil alle paar Jahre oder so zu wechseln. Wird Ihre Anwendung in die Massenproduktion gehen? In diesem Fall kann eine andere Lösung erforderlich sein.

Antworten (7)

Ja, ein EEPROM ist eine Art nichtflüchtiger Speicher, der Daten auch ohne Strom für eine beträchtliche Zeit halten kann (die tatsächliche Zeit hängt von der Temperatur und anderen Bedingungen ab).

Es gibt ein paar andere nicht flüchtige Lösungen, die Sie in Betracht ziehen sollten:

1) Interner Flash-Speicher – Die meisten Mikrocontroller haben heutzutage Flash für die Codespeicherung und einige bieten es auch für Benutzerdaten und Protokollierung. Dies hat auch begrenzte Schreibzyklen und erfordert ein Blocklöschen, bevor die Bits von "1" auf "0" geändert werden (Sie speichern Daten in der Zwischenzeit an anderer Stelle und schreiben sie dann neu).

2) Interner FRAM-Speicher - TI verfügt über Geräte mit nichtflüchtigem FRAM-Speicher, auf den sehr einfach zugegriffen werden kann (wie auf jeden anderen Speicherort). Lesevorgänge sind ebenso destruktiv wie Schreibvorgänge (obwohl dies in Ihrem Fall möglicherweise keine Rolle spielt, da die Anzahl der Zyklen 10 beträgt ^13 oder so bei 85 Grad Celsius).

3) Externer Flash-Speicher – Sie können Speicher extern hinzufügen, um ein paar Megabit Daten ziemlich kostengünstig zu speichern.

Abhängig von der Rate, mit der Sie sparen möchten (und ob Sie gut herunterfahren können), können Sie möglicherweise die effektive Anzahl der für Sie verfügbaren Zyklen erhöhen.

Der Weg zur Überwindung der Lebensdauerbegrenzung des EEPROM besteht in der Anwendung eines Wear-Leveling-Algorithmus. Grundsätzlich weisen Sie jedem Datensatz, den Sie speichern möchten, das N-fache des Speicherbedarfs und einen entsprechenden Platz für N-Indexwerte zu. Verwenden Sie dann die Inferenz, um herauszufinden, welcher der "aktuelle Datensatz" und welcher der nächste zu schreibende Datensatz ist zu. Es ist in dieser AVR App Note gut beschrieben .

Eine andere mögliche Lösung ist ein bisschen statischer RAM und eine Batterie. Dies hat eine begrenzte Lebensdauer, da die Batterie irgendwann leer wird, aber die Schreibzyklen sind unbegrenzt. Sie könnten auch so etwas wie einen großen Kondensator verwenden, um es mit Strom zu versorgen, wenn Sie wissen, dass Ihre Ausschaltzeit einen kleineren Wert haben wird. Eine Lithium-Knopfzelle kann in einer Anwendung wie dieser lange halten, wenn Sie sie richtig konzipieren.

Es gibt auch Teile, die RTC, NVRAM und Batterie (um die Uhr am Laufen zu halten) in einem Teil enthalten. Diese haben den Nachteil, dass wenn die interne Stromquelle ausfällt, Sie das ganze Teil verloren haben (nicht nur den Akku), aber je nachdem, wie lange Ihr Produkt halten soll, ist das vielleicht kein Problem.

Ich weiß nicht, wie hoch Ihr Budget ist, aber vielleicht möchten Sie einen Blick auf MRAM werfen , das so schnell wie DRAM, aber nicht flüchtig ist, genau wie Flash. Natürlich sind diese viel teurer als EEPROM-Chips.

Ich habe vor Jahren eine Reihe von Beispiel-ICs von Freescale bekommen, hatte aber nie die Gelegenheit, sie zu verwenden, daher kann ich nicht wirklich sagen, ob Sie am Ende eine viel einfachere Schaltung erhalten, als wenn Sie eine SD-Karte anschließen müssen Slot.

Ich bin eher ein Computertyp als ein Elektroingenieur, aber ich denke, es gibt einen anderen Ansatz für das Lebenszyklusproblem von Flash-Speichern:

Mein Verständnis ist, dass das Lebenszyklusproblem bei Flash eigentlich eine Frage des Löschens und nicht des Schreibens ist. Sie können so oft schreiben, wie Sie möchten, mit Ausnahme des kleinen Details, dass die Schreibvorgänge nur in eine Richtung erfolgen.

Da der Speicherplatz, den Sie benötigen, im Vergleich zur Größe selbst kleiner Geräte winzig ist, können Sie ihn (vorausgesetzt, Sie haben ausreichend niedrigen Zugriff auf die Hardware) viele Male ausschreiben, jedes Mal an einem anderen Ort. Stellen Sie sicher, dass Ihre Daten vom unbeschriebenen Speicher unterschieden werden können (füllen Sie sie gegebenenfalls auf, um dies zu erreichen) und die letzte geschriebene Zelle der aktuelle Wert ist.

Wenn Ihre Daten tatsächlich ein Zähler sind, der einmal pro Schreibvorgang erhöht wird, können Sie noch mehr daraus machen, indem Sie sie überhaupt nicht schreiben, sondern ein Bit pro Tick ausschreiben. Die Anzahl ist die Anzahl der geschriebenen Bits.

Serielles NVSRAM von Microchip könnte Ihre Rechnung erfüllen:

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.

Diese serielle Speicherfamilie unterstützt Batterie-Backup. Das Datenblatt erwähnt die Stromaufnahme von 1ua aus der Batterie. Der Preis beträgt weniger als 2 US-Dollar in einer Menge von 1.000, und kostenlose Muster werden von Microchip angeboten. ICs sind in Bastler-freundlichen PDIP- und SOIC-Gehäusen erhältlich.

Vielleicht möchten Sie sich den seriellen FRAM ansehen. Haupthersteller scheint Cypress (geb. Ramtron) zu sein. Hier ist ein Teil:

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

Es ist in großen Größen erhältlich (das größte, das ich gesehen habe, ist 2 Mbit), es ist protokollkompatibel mit MRAM oder Flash, es ist Byte-lesbar und schreibbar, ohne dass es gelöscht werden muss, es ist schnell --- Schreibvorgänge halten mit dem SPI-Protokoll Schritt --- und das Die Retention ist lächerlich hoch.

Das heißt, es ist ein bisschen schwer zu finden. Nicht viele Distributoren führen es und diejenigen, die es zu tun scheinen, sind sofort ausverkauft --- Cypress hat einen eigenen Laden (auch kostenloser Versand) und zwischen meiner Bestellung von zwei FM25V04-Teilen waren sie ausverkauft. Anscheinend sechs Wochen Vorlaufzeit...