Ich habe mir mal die FRAM Speicher auf den Tisch geholt

Antworten
Benutzeravatar
Admin
Administrator
Beiträge: 1275
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Ich habe mir mal die FRAM Speicher auf den Tisch geholt

Beitrag von Admin »

Ja diese FRAM haben ja offenbar sehr viele Schreib/Lese Zugriffe. Die gefallen mir seeeehr gut. meine Test FRAM´s sind 32MB brauchen wenig Strom und sind offenbar sehr schnell. Damit kann man wichtige Daten zwischenspeichern, dass man bei Ausfall der Spannung, also bei Neustart der CPU wieder da ansetzen kann, wo man zuletzt war. Also keine Datenausfälle.

Das ist guuuut, das kommt in die Suppe. :(V):

Also die nächten Tage werde ich wohl mal da dran bleiben.
Franz

Das hier habe ich im Google aus KI zum FRAM gefunden:
--------------------------------------------------------------------
FRAM-Speicher (Ferroelectric Random Access Memory) ist extrem langlebig und ermöglicht eine praktisch unbegrenzte Anzahl an Schreib-/Lesezugriffen, oft in der Größenordnung von über
10 Milliarden Zyklen (10^10), was weit über die Lebensdauer von Flash-Speichern hinausgeht und ihn ideal für Anwendungen mit häufigen Schreibvorgängen macht, bei denen Daten nicht verloren gehen dürfen. Im Gegensatz zu herkömmlichem RAM sind die Daten in FRAM auch ohne Stromversorgung nicht flüchtig, sodass sie auch nach einem Stromausfall erhalten bleiben.

Hohe Lebensdauer: Mehr als 10 Milliarden Lese-/Schreibzyklen sind typisch, was die Lebensdauer praktisch unbegrenzt macht.
Nichtflüchtig: Daten bleiben auch bei Stromausfall erhalten, ähnlich wie bei Flash-Speicher, aber mit viel schnelleren Schreibvorgängen.
Schnelle Zugriffe: Sehr schnelle Schreibzeiten ermöglichen zahlreiche Zugriffe in kurzer Zeit, oft im Sekundentakt über Jahrzehnte hinweg.
Geringer Stromverbrauch: Im Vergleich zu traditionellen RAM-Typen benötigt FRAM weniger Strom, insbesondere bei Schreibvorgängen.

Vergleich zu anderen Speichertypen:

RAM: Kann beliebig oft beschrieben werden, verliert aber die Daten ohne Strom.
Flash-ROM: Hat eine begrenzte Anzahl von Schreibzyklen (z.B. 1.000–10.000), die oft schneller erschöpft sind als bei FRAM
------------------------------------------------------------------
Benutzeravatar
Admin
Administrator
Beiträge: 1275
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Ich habe mir mal die FRAM Speicher auf den Tisch geholt

Beitrag von Admin »

Das ist ein Bespielcode aus der FRAM - Lib (Adafruit_FRAM_I2C). Ein bischen für mich angepasst. Die Speicher - Adressen gebe ich Dezial aus. und nur die ersten 96 Byte. Mehr gibt es bei dem Test nicht zu sehen. Der läuft schon mal auf einem ESP32 D1 Mini, mit dem 32KB FRAM.

Das Programm macht bis jetzt noch nicht viel. Es liest nach jedem Neustart den Wert auf der erten Speicherstelle aus, addiert ihn +1 und schreibt ihn wieder zurück. Also kann man da wunderbar dafür sorgen, dass die zuletzt von irgendwo bekommenen Werte bei einem Spannungsausfall nicht verloren gehen. Man bekommt die Daten, z.B. von einem Poti, das man eingestellt hat, oder das man über I2C von einer anderen Stelle bekommen hat, speichert sie sofort im FRAM und arbeitet erst dann, mit diesen Daten weiter. Wenn dann ein Spannungsausfall für einen Restart sorgt, holt man sich beim Neustart schon im Setup die zuletzt bekommenen Daten, und kann weiterarbeiten als wenn nichts gewesen wäre. Das gefällt meines Vaters Sohn. :oo:

Code: Alles auswählen

#include "Adafruit_FRAM_I2C.h"

/* Beispielcode für das Adafruit I2C FRAM Breakout-Board */

/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 5.0V DC
   Connect GROUND to common ground */

Adafruit_FRAM_I2C fram = Adafruit_FRAM_I2C();

void setup(void) {
  Serial.begin(115200);

  if (fram.begin()) {  // Sie können die neue I2C-Adresse hier einfügen, z. B. begin(0x51);
    Serial.println("I2C FRAM gefunden");
  } else {
    Serial.println("I2C FRAM nicht identifiziert ... überprüfen Sie Ihre Verbindungen?\r\n");
    Serial.println("Wird fortgesetzt, falls dieser Prozessor wiederholte Operationen nicht unterstützt start\r\n");
    while (1)
      ;
  }

  // Lies das erste Byte
  uint8_t test = fram.read(0x0);
  Serial.print("Neustart Zähler ");
  Serial.println(test);
 
  // Test schreiben ++
  fram.write(0x0, test + 1);

  // Den gesamten 32K-Speicherinhalt auslesen!
  uint8_t value;
  for (uint16_t a = 0; a < 96; a++) { // Bis zu 32768 Byte !! Hier nur 96.
    value = fram.read(a);  // Speicherstelle auslesen
    if ((a % 16) == 0) {   // 16 byte in einer Zeile am Bildschirm darstellen.
      Serial.print("\n ");
      //Serial.print(a, HEX);  // Speicherstellen Zähler in HEX ausgeben
      Serial.print(a);       // Speicherstellen Zähler in Dezimal ausgeben
      Serial.print(": ");
    }
    Serial.print("0x");
    if (value < 0x1)
      Serial.print('0');
    Serial.print(value);  // Den Wert der Speicherstelle ausgeben
    Serial.print(" ");
  }
  Serial.println();
  Serial.println(F("####################################################################################")); // Aus Optischen Gründen.
}

void loop(void)  // Wird nicht genutzt, weil er nur einen Durchgang im Setup macht.
{
}
Benutzeravatar
Admin
Administrator
Beiträge: 1275
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Ich habe mir mal die FRAM Speicher auf den Tisch geholt

Beitrag von Admin »

Hier ist mal ein Bild von meinem "Testaufbau", der ja nun wirklich seeeeehr einfach ist. :) Ein ESP32 D1 Mini mit einem 32KB FRAM über die I2C Schnittstelle angeschlossen. Spannung hier einfach über USB vom PC.
ESP32_I2C_FRAM.jpg
ESP32_I2C_FRAM.jpg (301.17 KiB) 13 mal betrachtet
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast