ATMEL 24C02 EEPROM - Problemas para entender cómo funciona el direccionamiento

2

Actualmente estoy escribiendo una biblioteca para las EEPROM de la serie 24C de ATMEL (no es una pregunta de programación) . La biblioteca funciona bien con una sola EEPROM en este momento y estoy tratando de admitir varias EEPROM ahora, ya que de acuerdo con la hoja de datos, se pueden conectar hasta 8 EEPROM 24C02 al mismo tiempo. Sin embargo, no puedo entender cómo asignar una dirección a la EEPROM. Por lo que entiendo, puedo asignar una dirección entre 0x50 y 0x57 configurando los pines A0, A1 y A2 en ALTO o BAJO. Sin embargo, no importa lo que establezca estos pines. La EEPROM utiliza todas las 8 direcciones:

I2C scanner. Scanning ...
Found address: 80 (0x50)
Found address: 81 (0x51)
Found address: 82 (0x52)
Found address: 83 (0x53)
Found address: 84 (0x54)
Found address: 85 (0x55)
Found address: 86 (0x56)
Found address: 87 (0x57)
Done.
Found 8 device(s).

Esta salida es del escáner I2C. Puedo transmitir con todas las direcciones y la EEPROM individual lo recibe todo. ¿Hay algo más que deba hacer?

Aquí está la hoja de datos de la EEPROM: enlace

    
pregunta pixelomer

2 respuestas

2

¿Está confundido por el error común que muchas personas cometen cuando tratan la dirección de una I 2 C de manera incorrecta? Algunas partes se referirán a la dirección como una cantidad de 7 bits que no incluye el bit R / W. Otros se referirán a la dirección como una cantidad de 8 bits que incluye el bit R / W. Incluso la hoja de datos que ha vinculado puede llevar a confusión en este sentido. En la figura 4 se refieren a la dirección como una cantidad de 8 bits:

Yenlasiguientefigura5,serefierenaladireccióncomolacantidadde7bitsdeMSBaLSB:

TambiéntengaencuentaquelospinesA0aA2enelpaquetedeldispositivodebenpermanecerestáticosenundiseño.Siseusauntotaldeocho24C02eneldiseño,entoncescadaunodelosdispositivostendráestostrespinesunidosenunacombinacióndiferentedelconjuntode000b,001b,010b,011b,100b,101b,110by111b.Cuandodicequeestá"escribiendo" en los pines, esto no aclara exactamente lo que está haciendo. Normalmente no hay escritura en los pines 24C02. En su lugar, los tres bits que se suministran en la interfaz en el campo de dirección del dispositivo deben coincidir con los valores rígidos en los pines para que se seleccione el dispositivo.

Si por casualidad hubiera decidido agregar algunos otros GPIO de MCU que se ataban a los pines A0, A1 y A2 en un solo dispositivo que realmente no sería un escenario de uso válido. Además de eso, nunca he estado seguro de que sea posible cambiar dinámicamente el valor ajustado en los pines A0, A1 y A2 de un 24C02 después de que se haya encendido.

    
respondido por el Michael Karas
1

Los pines A0: A2 se utilizan para crear la dirección.

Por ejemplo, mantiene A0: Bajo, A1: Alto y A2: Bajo, su dirección será 1010010 + R / W.

El dispositivo no responderá a la dirección que se está configurando dinámicamente. Considera el valor de A0, A1 y A2 antes del encendido y se adhiere a él hasta que se reinicie.

    
respondido por el MaNyYaCk

Lea otras preguntas en las etiquetas