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?
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_t
einen 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.
Jon
Rohr
Richard die Weltraumkatze
Richard die Weltraumkatze
Pryda
Andi aka
Schwanand