Go Down

Topic: Módulos EEPROM AT24C1024 (Read 326 times) previous topic - next topic

arkarash

Saludos compañeros.

Estoy usando un módulo de AT24C256 I2C para guardar información ahora pero se me ha quedado un poco corto y me gustaría aumentar como mínimo a 2 o 3 Mb por lo que tendría que poner 2 o 3 módulos de 1024 en paralelo cambiándoles la dirección (creo que el máximo son 4 módulos no?)

Mi pregunta es la siguiente, el AT24C256 viene en un socket, ese mismo socket puedo usarlo para poner el 1024 que sólo lo he encontrado suelto??


Lucario448

#1
Aug 01, 2018, 05:03 pm Last Edit: Aug 01, 2018, 05:04 pm by Lucario448
por lo que tendría que poner 2 o 3 módulos de 1024 en paralelo cambiándoles la dirección (creo que el máximo son 4 módulos no?)
Al ser tres bits los que pueden alterar la dirección de "escucha", el máximo es de 2^3 = 8 dispositivos conectados al mismo bus.


Mi pregunta es la siguiente, el AT24C256 viene en un socket, ese mismo socket puedo usarlo para poner el 1024 que sólo lo he encontrado suelto??
Sí y solo si el "pinout" es exactamente el mismo en ambos. Consulta las hojas de datos para estar seguro.

arkarash

Sí y solo si el "pinout" es exactamente el mismo en ambos. Consulta las hojas de datos para estar seguro.
Me miraré los pinouts, mi duda era porque en el mismo socket venden todos los ATXXC hasta el 256 pero el 512 y el 1024 los venden sólo por separado. De ahí mi duda por si alguien había trasteado con ellos.

Gracias por la respuesta

arkarash

#3
Aug 01, 2018, 07:48 pm Last Edit: Aug 01, 2018, 08:05 pm by arkarash
Acabo de mirar los pinouts y probablemente el socket sirva igual porque los pins son los mismos o bueno, por lo menos los que se usan ya que hay un pin de dirección menos en la versión de 512 y dos menos en la de 1024. Normalmente tienen 3 (A0,A1,A2) pero la de 512 sólo tiene 2 (A0,A1) y la de 1024 sólo A1 por lo que había leído de máximo 4 dispositivos cobra más sentido incluso sólo 2 en la de 1024.  De todas maneras pone que los pines quitados A0 y A2 no se conectan así que probaré a ponerlo en el mismo socket ya que este socket sólo sirve para alimentación y coloca resistencias y tal. Así que no creo que afecte al micro. De todas maneras informaré cuando pruebe.
Edito: lo que no sé si el resto de direcciones se pueden llenar con otros dispositivos o es que la EEPROM las ocupa de alguna forma.

Lucario448

De todas maneras pone que los pines quitados A0 y A2 no se conectan así que probaré a ponerlo en el mismo socket ya que este socket sólo sirve para alimentación y coloca resistencias y tal. Así que no creo que afecte al micro.
Es correcto; el problema hubiera sido que variaran la ubicación de Vcc, GND, SDA, SCL y WP. Si reemplezan los Ax por N.C., tampoco habría problema; sólo que no surtiría efecto el cambiar de posición los jumpers.


lo que no sé si el resto de direcciones se pueden llenar con otros dispositivos o es que la EEPROM las ocupa de alguna forma.
I2C puede direccionar hasta 120 "esclavos", pero aún así no he visto un solo dispositivo que acapare múltiples direcciones.
¿Se pueden llenar con otros dispositivos? Siempre y cuando no se repitan (sean distintos), o se repiten pero su dirección es alterable. Estas EEPROM aplican en eso último.
No es usual que dos dispositivos I2C con funciones completamente distintas, "escuchen" exactamente la misma dirección.

arkarash

Ante todo gracias por la respuesta.

Quote
I2C puede direccionar hasta 120 "esclavos", pero aún así no he visto un solo dispositivo que acapare múltiples direcciones.
¿Se pueden llenar con otros dispositivos? Siempre y cuando no se repitan (sean distintos), o se repiten pero su dirección es alterable. Estas EEPROM aplican en eso último.
No es usual que dos dispositivos I2C con funciones completamente distintas, "escuchen" exactamente la misma dirección.
Mi duda viene dada porque al sólo tener un bit configurable y los otros tres, ya me dicen en la hoja de características que sólo se le pueden añadir 2 al bus I2C por lo que yo entiendo (o sospecho) que ocupan todas las direcciones que cuelgan de ahí.

000, 001, 010, 011, 100, 101, 110, 111 para los módulos pequeños
00, 01, 10, 11 para los de 512
0 o 1 para los de 1024

En total máximo son 2Mbits.

Por lo que he investigado a la hora de programar los read y write la dirección es larga y direcciona primero al módulo y luego a memoria superior, inferior, etc, por lo que sospecho que internamente se queda todas las direcciones posibles I2C que empiecen por.... para su direccionamiento interno.

Lucario448

En total máximo son 2Mbits.

Por lo que he investigado a la hora de programar los read y write la dirección es larga y direcciona primero al módulo y luego a memoria superior, inferior, etc, por lo que sospecho que internamente se queda todas las direcciones posibles I2C que empiecen por.... para su direccionamiento interno.
Es para crear lo que se llama un "mapa de memoria" que justamente abarca 2 Mbits (256 KB) de memoria. Se supone que se utiliza con la finalidad de crear un espacio contiguo de direccionamiento.

Existe el prefijo, que es la dirección base o del primer dispositivo. Es la que se usa cuando todos los Ax se conectan a tierra.
Para direccionar 256 KB (2 Mbit), se requieren de 18 bits. En el caso puntual de dos AT24C1024, 16 bits se colocan en la "palabra dirección" (los dos bytes posteriores a la dirección del dispositivo, y la transacción configurada para escritura).

Aquí es donde viene lo interesante:
pero aún así no he visto un solo dispositivo que acapare múltiples direcciones.
Este será mi primer caso, ya que la EEPROM de hecho acapara dos direcciones I2C: ambas son para acceder a una mitad de los 128 KB de memoria total que posee. He ahí el 17mo bit que la hoja de datos llama P0.

El 18vo bit es justamente el A1; ya que 128 es la mitad de 256, entonces directamente determina cuál EEPROM (mitad de 256 KB) acceder.



Viéndolo así, las EEPROM más pequeñas cuentan una historia parecida:
  • La que tiene A0 y A1 debe de ser de 64 KB (512 Kbit), siendo A0 el 17mo bit de la dirección. A diferencia del antes mencionado, el dispositivo individual no acapara dos direcciones I2C.
  • El que tiene de las tres supongo que es de 32 KB (256 Kbit). Aquí hay otro caso peculiar: en la "palabra dirección", el 16to bit es ignorado; por lo tanto pasa a ser el A0 de la dirección I2C. A3 sería efectivamente el 18vo bit.


Con el último es donde hay que tener cuidado al programar, acceder más allá de 32767 bytes ya implica modificar la dirección de dispositivo a utilizar; mientras que con los más grandes esto ocurre después de los 65535 bytes.

arkarash

 :smiley-eek:  :smiley-eek:

Explicación para quitarse el sombrero, un placer coincidir con gente así.

En breve tendré los chips en casa y postearé resultados, gracias de nuevo.

Go Up