¿Cómo se ve un mapa de memoria de una EEPROM de 1K? [cerrado]

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'?

No estoy muy seguro de lo que estás preguntando. Tenga en cuenta que la última dirección será 0x7F (127) no 128.
Realmente no entiendo lo que estás preguntando aquí. ¿Está preguntando cómo se organizan físicamente los datos en el chip? Porque puede parecerse a cualquier cosa en un archivo.
La cosa es que puedes organizarlo como quieras, lo más probable. :)
En caso de que esté almacenando algunos datos de longitud variable, como cadenas de texto, es posible que desee incluir alguna forma para que el dispositivo de lectura indique la longitud de las cadenas almacenadas, ya sea prefijándolas con un byte que almacena la longitud o agregando el sufijo la cadena con un byte nulo, la forma C.
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.
Lea la maldita hoja de datos del dispositivo.
Lo que mencionas en la pregunta es correcto. ¡Tenga en cuenta lo que dijo @RichardtheSpacecat!

Respuestas (1)

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_tun 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.