¿Hay 3 bytes por minuto para direccionar un registro en una EEPROM de 256 K?

4

Soy realmente nuevo en electrónica e incrustaciones y estoy luchando con algunas nociones probablemente básicas. (Tengo un fondo de software.)

Tengo una EEPROM ( 24LC256 ) conectada a un MBED microcontrolador y quiero escribirle. El dispositivo EEPROM utiliza el protocolo I2C. Tengo un ejemplo práctico de que obtuve aquí .

Sin embargo, estoy confundido acerca de muchas cosas y la primera es acerca de los registros / memoria y el mínimo de bytes necesarios para enviar para una operación.

Mi razonamiento

Este dispositivo es 256K == 256000 bits. Esto implica que para acceder a un solo registro en la memoria necesitamos 18 bits ya que el primer registro es 00000000 00000000 00000000 y el último es 11111111 11111111 11111111 .

Mis preguntas

  • En primer lugar, ¿mi razonamiento es correcto?
  • ¿Significa todo esto que cada vez que quiero leer o escribir tengo que enviar un mínimo de 3 bytes?
  • ¿Esto es algo que se aplica generalmente a todos los dispositivos?
pregunta Pithikos

1 respuesta

11

No, tu razonamiento no es correcto.

En primer lugar, echemos un vistazo a sus matemáticas.

El dispositivo es de 256kbits. Eso significa que contiene una matriz de 32 kbytes, que equivale a 32768 bytes.

32768 es 2 15 , por lo que una dirección puede representarse usando 15 bits, o redondearse, solo 2 bytes.

Es decir, tiene las direcciones 00000000 00000000 a 01111111 11111111.

Puede ver todo esto observando la figura 5-2 en la hoja de datos a la que vinculó:

Entonces,despuésdeenviarelbytedecontrol,envías2bytesdedirección.Cualquierbytededatossigueesasecuencia.Entoncessí,esoestresbytesentotal,perosolodosdeellossonladirección.

Laconfiguracióndeesadirecciónsolodebehacerseunavezporsecuenciadeescritura.Noestáslimitadoasoloescribirunbyte.

Unavezquehayaestablecidoladirección,puedeescribirhasta64bytes(ohastaelfinaldelapáginaactualde64bytes)sintenerqueenviarunanuevadirección.Entonces,podríaestablecerladirecciónen23yluegoescribirlosbytes23,24,25,26,27.Esoseríauntotalde3bytesparaladireccióndecontrol+,luego5bytesparalosdatosquesuman8bytes.Sicalcula8/5,obtiene1.6,loquepodríadecirsequeesla"eficiencia" de la transacción. Por cada byte de EEPROM que escribas así, necesitas 1.6 bytes para hacerlo. Escribir más bytes a la vez mejora esa eficiencia.

La mejor eficiencia es escribir una página entera a la vez, lo que sería \ $ \ frac {3 + 64} {64} = 1.046875 \ $.

Cuando se trata de leer, las cosas son ligeramente diferentes. Esto se debe a que el chip mantiene su propio puntero de dirección interno para la lectura. Una vez que haya establecido la dirección, se incrementará automáticamente a la siguiente dirección después de leerla.

La configuración de la dirección toma 3 bytes como antes: el byte de control más los dos bytes de dirección. Pero luego, para leer realmente, debe realizar otra transacción con otro byte de control. Así que para leer un byte toma 1 + 2 + 1 + 1 bytes. Eso sería una eficiencia de \ $ \ frac {1 + 2 + 1 + 1} {1} = 5 \ $ que no es tan eficiente en absoluto. Sin embargo, las cosas se vuelven mucho más eficientes si haces uso de ese puntero de dirección interno y lees varios bytes. Para tomar las direcciones de ejemplo que usamos para escribir, la eficiencia para la lectura sería \ $ \ frac {1 + 2 + 1 + 5} {5} = 1.8 \ $ - un gran aumento en la eficiencia.

Así que hay otros pequeños trucos que puedes usar. Si desea leer dos bytes cercanos entre sí en la EEPROM, puede ser más eficiente hacer una lectura secuencial de toda la memoria entre los dos bytes de interés y eliminar los bytes en los que no está interesado.

Y sí, esto es bastante típico de todos los dispositivos EEPROM en esta clase. Pero en realidad no pretenden ser particularmente rápidos, sino que contienen pequeñas cantidades de información de configuración para un sistema que se lee una vez durante el inicio y no se hace referencia a él desde ese momento. Para un rendimiento más rápido y pesado, normalmente usaría un dispositivo Flash en serie en lugar de EEPROM. Tienen una mayor capacidad y un acceso más eficiente, pero escribir en ellos es más complicado ya que tiene que borrar una página completa antes de escribirla. A menudo se usan en estos días como los chips de BIOS en las computadoras, especialmente en las computadoras portátiles, donde hay mucha lectura y poca escritura.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas