I2C: Cómo dirigir la segunda página de un eeprom

0

Tengo un eeprom y no puedo dirigir todo correctamente fuera del rango 0x00-0x1f. Usando la frambuesa, envío el siguiente comando I2C a la eeprom:

"sudo i2cset -y 1 0x50 0x00 0x10 0x29"

Este comando escribe el byte 0x29 en la dirección 0x10 en el eeprom. Puedo ver si funcionó usando el comando "sudo i2cdump -y 1 0x50 i"

Pero si uso el mismo comando que el anterior pero con un segundo valor de dirección más alto (por ejemplo, sudo i2cset -y 1 0x50 0x00 0x80 0x29) y luego intento ver si funcionó con i2cdump no veo ningún cambio. Si cambio el primer valor de dirección de byte (por ejemplo, sudo i2cset -y 1 0x50 0x01 0x10 0x29), el cambio de valor se muestra a 90/0 en la salida de i2cdump.

Aquí hay un ejemplo de salida de i2cdump para que puedas entender mejor lo que quiero decir (no mi salida de i2cdump):

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
20: 8a 8b de bb c9 d8 d0 1d ff ff aa c1 9e c1 9e e3 
30: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00 
40: 01 c3 00 00 00 00 40 50 2d 01 01 40 01 95 00 a3 
50: 10 01 80 ff ff ff 00 00 11 ff ff ff ff ff ff ff 
60: 8a 8b de bb c9 d6 d1 1d ff ff aa c1 9e c1 9e e3 
70: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00 
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
a0: 8b 8b de bb c8 d9 d1 1d ff ff ab c1 9e c1 9e e3 
b0: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00 
c0: 01 c3 00 00 00 00 40 50 2d 01 01 40 01 95 00 a3 
d0: 10 01 80 ff ff ff 00 00 11 ff ff ff ff ff ff ff 
e0: 8a 8a de bb c9 d8 d1 1d ff ff aa c1 9e c1 9e e3 
f0: ba cc a8 d8 b2 ed c2 e4 bb 3c 32 e1 e1 e1 00 00  

Aquí hay un enlace a la hoja de datos de mi eeprom, dice que una página tiene un tamaño de 32 bytes, creo que eso explica por qué no puedo dirigir nada más grande que 0x1f. ¿Pero no entiendo cómo puedo dirigir la siguiente dirección de byte después de 0x1f?

¿Estoy interpretando mal el i2cdump o tengo que usar otras direcciones de bytes?

enlace

    
pregunta Tim

1 respuesta

2

Es necesario echar un vistazo más de cerca a la hoja de datos de la memoria. La Figura 6 en la página 7 muestra las secuencias necesarias para escribir en la matriz de memoria.

Esto no es compatible con lo que hace el comando i2cset . Este comando asume que el dispositivo I2C está organizado como hasta 256 registros de 8 bits, donde la dirección del registro es el segundo byte transmitido, y los datos que se escriben son el tercer byte.

El dispositivo de memoria no está organizado de esta manera. Debe encontrar o escribir un comando diferente que envíe las secuencias correctas en el bus I2C.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas