Wie sieht ein Speicherabbild eines 1K-EEPROMs aus? [geschlossen]

Ich verwende 1 Kbit: Das Gerät ist als ein Block mit 128 x 8-Bit-Speicher organisiert. Ich möchte verstehen, wie es organisiert ist und wie Adressen aufgebaut sind?

Beispiel: Ich möchte die Welt „Hallo“ im EEPROM speichern. Jedes Zeichen ist in 1 Byte kodiert; Hier haben wir also insgesamt 5 Bytes, da der Speicher 128 x 8 Bit groß ist. Jedes Zeichen wird in einer Adresse gespeichert. Meine Frage ist, wie diese Adressen organisiert sind? Ist es so etwas:

0x00: H
0x01: E
0x02: L
0x03: L
0x04: O
..
..

0x7F

Was ich versuche, ist, Daten in einer bestimmten Reihenfolge im EEPROM zu speichern. Ich muss also wissen, wie die Speicherkarte aussieht, um die Start- und Endadresse jedes Felds zu kennen.
Beispiel:
Ich möchte speichern: Name Alter Geburtsdatum und Land in einem EEPROM. Lassen Sie uns 2 Funktionen schreiben (Adresse) und lesen (Adresse) definieren. Mein Problem, wie ich 'Adresse' ermittle?

Nicht ganz sicher, was Sie fragen. Beachten Sie, dass die letzte Adresse 0x7F (127) und nicht 128 ist.
Ich verstehe nicht wirklich, was du hier fragst. Sie fragen sich, wie die Daten physikalisch auf dem Chip angeordnet sind? Weil es wie alles in einer Datei aussehen kann.
Die Sache ist, dass Sie es höchstwahrscheinlich so organisieren können, wie Sie es möchten. :)
Falls Sie Daten mit variabler Länge speichern, wie z die Zeichenfolge mit einem Nullbyte, dem C-Weg.
Was ich versuche, ist, Daten in einer bestimmten Reihenfolge im EEPROM zu speichern. Ich muss also wissen, wie die Speicherkarte aussieht, um die Start- und Endadresse jedes Felds zu kennen.
Lesen Sie das verdammte Datenblatt des Geräts.
Was Sie in der Frage erwähnt haben, ist richtig. Denken Sie daran, was @RichardtheSpacecat gesagt hat!

Antworten (1)

EEPROMs sind normalerweise Byte-adressierbar, dh. Sie haben einfach ein Array von Bytes. Sie können sie einzeln festlegen (im Gegensatz zu Flash, wo Sie sie Bit für Bit festlegen, aber in größeren Blöcken löschen können).

Mein üblicher Ansatz beim Umgang mit EEPROMs besteht darin, eine Struktur im Code wie folgt zu definieren:

typedef struct {
    uint32_t magic;
    uint32_t version;
    uint32_t parameter1;
    bool use_something;
    uint8_t parameter2;
    uint32_t checksum;
} settings_t;

Ich deklariere es an einer Stelle (im RAM): settings_t my_global_settings;, dann, wenn ich es speichern möchte, mache ich uint8_teinen Zeiger, der auf die Struktur im RAM zeigt, und schreibe dann Byte für Byte in einer Schleife (bis zu sizeof(settings_t)). Das Lesen erfolgt auf ähnliche Weise.

Es ist schön, eine Datei mit einer Speicherkarte des EEPROM (wenn Sie mehr als eine Struktur haben) mit Definitionen/Konstanten wie EEPROM_CALIBRATION_BASE_ADDR, EEPROM_SETTINGS1_BASE_ADDR usw. zu haben. Sie müssen die Adressen selbst berechnen und/oder sich darauf verlassen sizeof.

Denken Sie daran, eine Prüfsumme oder CRC oder LRC am Ende Ihrer Daten zu verwenden, um zu überprüfen, ob es tatsächlich sinnvoll ist.