Ich benötige eine Speicherlösung, mit der ich die gesammelten Daten eines auf Mikrocontrollern basierenden Projekts nachverfolgen kann.
Mit akkumulierter Anzahl meine ich zu sagen, dass der Mikrocontroller diesen Speicherplatz verwendet, um die Anzahl des Auftretens eines Ereignisses zu erfassen. Die Zählung muss bei Stromausfällen beibehalten werden, weshalb nichtflüchtiger Speicher erforderlich ist.
Auch das Auftreten des Zählinkrementierungsereignisses ist häufig, daher wird es viele Schreibvorgänge in den Speicher geben, weshalb ich zögere, EEPROM zu verwenden.
Die bevorzugte Kommunikationsschnittstelle ist I2C, andere Alternativen sind jedoch willkommen.
Auf den ersten Blick stelle ich mir einen flüchtigen Speicher-IC mit geringem Stromverbrauch von SRAM vor, der bei Stromausfällen von einer Pufferbatterie wie einer Knopfzelle mit Strom versorgt werden kann.
Antworten:
Drei nichtflüchtige Speichertypen entsprechen Ihren Anforderungen in der Reihenfolge der verfügbaren Größe:
In Bezug auf die Kosten ist FRAM am besten. Alles, was Sie benötigen, ist der Chip, einschließlich der Backup-Kondensatoren, um das Schreiben abzuschließen. Die verfügbaren Größen sind jedoch gering.
Batterie-Backup-SRAM ist groß und materialintensiv.
Ein EEPROM mit Abnutzungsgrad erfordert Firmware, um den Abnutzungsgrad auszugleichen.
quelle
Hier ist, was ich an einem Produkt gemacht habe, das sich noch in Massenproduktion befindet.
Es stellte sich heraus, dass zwischen dem Niederspannungsauslöser und dem Zeitpunkt, an dem der Power-Management-IC einschaltete und alles herunterfuhr, ungefähr 10 bis 20 ms vergangen waren (in geordneter Weise). Ob dies funktioniert oder nicht, hängt vom Energiespeicher Ihres Netzteils ab. Aber auch ein kleines Netzteil kann dies verlangsamen, sodass Sie einen kleinen Datensatz zuverlässig schreiben können.
quelle
Toggle-MRAM (magnetoresistiver RAM) soll eine praktisch unendliche Schreibdauer haben (sie kennen keinen Mechanismus, der dazu führen würde, dass das Schreiben abgenutzt wird). Ich kenne jedoch keine solchen Chips, die I2C sprechen, also müsste man sich mit SPI zufrieden geben. Hier ist ein solcher Teil: https://www.digikey.com/product-detail/en/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370
quelle
Klingt so, als könnten Sie einfach einen RTC-Clock-Chip oder ein RTC-Clock-Modul verwenden. Diese verfügen über ein Batterie-Backup, einen zusätzlichen SRAM für Benutzerdaten und eine I2C-Schnittstelle.
Oder verwenden Sie zunächst eine MCU mit batteriegepuffertem SRAM, sodass keine externen Komponenten erforderlich sind.
quelle
Cypress stellt das her, was sie als nichtflüchtiges SRAM bezeichnen . Es handelt sich um einen Standard-SRAM, der bei einem Stromausfall automatisch eine Sicherungskopie erstellt. Da nur bei Stromausfall in den nichtflüchtigen Speicher geschrieben wird, ist die Lebensdauer möglicherweise wesentlich höher. Es kommt in seriellen und parallelen Versionen. Es könnte ein bisschen übertrieben sein, da die kleinste 64 KB groß ist.
quelle
Für eine einzelne 4-Byte-Variable wäre ein EEPROM völlig in Ordnung.
Angenommen, Sie schreiben einmal pro Sekunde darauf, und Sie haben ein typisches 32-KB-EEPROM, und wir gehen von einer konservativen Lebensdauer von 100.000 Schreibzyklen aus.
Sie können Ihre 4 Bytes 8000 Mal schreiben, bevor Sie eine Löschung vornehmen müssen. Das sollten also 800 Millionen Mal sein, dass Sie es auch mit einer konservativen Schätzung schreiben können.
Jetzt gibt es nur noch 31,5 Millionen Sekunden pro Jahr, so dass es nach einem Schreibvorgang 25 Jahre dauern würde, bis die niedrigste Schätzung der EEPROM-Lebensdauer erreicht ist.
quelle
Hier gibt es viele Optionen, aber das eigentliche Problem besteht darin, zu verhindern, dass die Daten beschädigt werden. Ein Stromausfall während eines Schreibvorgangs kann die Daten beschädigen. I2C ist eine gute Option, um dies zu vermeiden, da Sie z. B. mit SPI feststellen können, dass ein Schreibvorgang (aus Sicht des Speichers) nach der Hälfte der Aktualisierung, z. B. 4 Bytes eines 32-Bit-Wortes, abgeschlossen ist. I2C ist ein bisschen robuster, aber nur ein bisschen.
Mein Rat wäre, 4 Kopien des Wertes zu speichern. Auf diese Weise stimmen immer zwei überein, auch wenn das Schreiben unterbrochen wird.
FRAM oder ähnliches ist wahrscheinlich die beste Option.
quelle