Estoy usando 1Kbit: El dispositivo está organizado como un bloque de memoria de 128 x 8 bits. Quiero entender cómo se organiza y cómo se estructuran las direcciones.
Ejemplo: Quiero almacenar el mundo "Hola" en la EEPROM. Cada carácter está codificado en 1 Byte; Entonces aquí tenemos 5 Bytes en total, ya que la memoria es de 128 x 8 bits. cada carácter se almacenará en una dirección. Mi pregunta es ¿cómo se organizan estas direcciones? Es algo como esto:
0x00: H
0x01: E
0x02: L
0x03: L
0x04: O
..
..0x7F
Lo que estoy tratando de hacer es almacenar datos en EEPROM en un orden específico. Así que tengo que saber cómo se ve el mapa de memoria para saber la dirección inicial y final de cada campo.
Ejemplo:
Quiero almacenar: nombre edad fecha de nacimiento y país en una EEPROM. Definamos 2 funciones escribir(dirección) y leer(dirección). Mi problema de cómo determinar la 'dirección'?
Las EEPROM suelen ser direccionables por bytes, es decir. simplemente tiene una matriz de bytes. Puede configurar cualquiera de ellos individualmente (a diferencia de Flash, donde puede configurarlos poco a poco, pero borrarlos en bloques más grandes).
Mi enfoque habitual cuando se trata de EEPROM es definir una estructura en el código como:
typedef struct {
uint32_t magic;
uint32_t version;
uint32_t parameter1;
bool use_something;
uint8_t parameter2;
uint32_t checksum;
} settings_t;
Lo declaro en un lugar (en RAM): settings_t my_global_settings;
, luego, cuando quiero guardarlo, hago uint8_t
un puntero que apunta a la estructura en RAM y luego escribo byte por byte en un bucle (hasta sizeof(settings_t)
). La lectura se realiza de manera similar.
Es bueno tener un archivo con un mapa de memoria de la EEPROM (si tiene más de una estructura) con definiciones/constantes como EEPROM_CALIBRATION_BASE_ADDR, EEPROM_SETTINGS1_BASE_ADDR, etc. Tiene que calcular las direcciones usted mismo y/o confiar en sizeof
.
Recuerde usar una suma de verificación, CRC o LRC al final de sus datos para verificar que realmente tenga sentido.
Jon
tubo
Ricardo el gato espacial
Ricardo el gato espacial
Pryda
Andy alias
Cisne y