¿Cómo se puede interconectar la EEPROM I2C del AT24C256 con Arduino?

En este tutorial, interconectamos una EEPROM serial I2C IC AT24C256 con el Arduino. En primer lugar, vamos a ver un poco sobre las EEPROM secuenciales AT24, el esquema de pines y la descripción de pines de la AT24C256, escribir algunas capacidades de LECTURA y ESCRITURA a/desde la EEPROM y, finalmente, averiguar cómo funciona la interfaz de la EEPROM del Arduino AT24C256.

Introducción

La EEPROM, que es la abreviatura de Memoria de Aprendizaje Programable Borrada Eléctricamente, es un tipo de memoria no volátil que conserva su contenido incluso después de apagar la instalación.

Hay dos tipos de EEPROM con respecto a la ubicación del cuerpo. Una es la EEPROM interna, que está incorporada en el microcontrolador y la otra es la EEPROM externa, que está dentro del tipo de un CI y tiene que estar conectada a un microcontrolador a través de una interfaz serie (como I2C o SPI).

Ya mencioné en un tutorial anterior consejos para entrar en la EEPROM interna de Arduino. Para más detalles sobre la EEPROM (y su historia), la memoria inestable y no volátil, y el estudio y la escritura en la EEPROM interna de Arduino, echa un vistazo a «TUTORIAL DE LA EEPROM DE ARDUINO«.

Las EEPROMs tienen a veces una medida limitada (normalmente unos pocos kB), pero son considerablemente rápidas porque están en el mismo silicio que el procesador de la MCU. En el caso de Arduino UNO, por ejemplo, la MCU ATmega328P (que es el microcontrolador del UNO) sólo tiene un kB de EEPROM.

Aquí es donde entran en juego los CI de EEPROM externa. Tendrás capacidades de hasta 256 kB (o más) y se pueden interconectar de forma sencilla por I2C o SPI.

Una palabra transitoria del AT24C256

Si hablamos de circuitos integrados EEPROM en serie, se habla mucho de las secuencias AT24 y AT25 de Atmel (ahora Microchip). La secuencia AT24 es I2C, mientras que la secuencia AT25 son circuitos integrados EEPROM SPI.

Para este reto, he seleccionado el CI AT24C256, que es una EEPROM de 256 kbit. Esto interpreta 2.62.144 bits o 32.768 Bytes (32 kB).

Es un CI de 8 pines en paquetes SOIC de 8 carriles, TSSOP de 8 carriles, UDFN de 8 carriles o VFBGA de 8 bolas. El SOIC de 8 carriles está de moda en los módulos de Arduino.

Diagrama de pines

La siguiente imagen muestra el diagrama de pines del CI EEPROM AT24C256.

AT24C256-Pin-Diagrama

Descripción de la clavija

Cantidad

Pin

Haz

1

A0Tackle Enter
2A1

Tackle Enter

3

A2Tackle Enter
4GND

Piso

5

SDAConocimiento en serie
6SCL

Reloj de serie

7

WPEscudo de la escritura
8VCC

Fuente de alimentación

Interfaz EEPROM del Arduino AT24C256

Permítenos ahora proceder a la interfaz del CI EEPROM AT24C256 con Arduino UNO. Lo primero que hay que tener en cuenta es que la AT24C256 (o alguna otra EEPROM de secuencia AT24) se comunica a través de I2Interfaz C. Así que utiliza los pines analógicos A4 (SDA) y A5 (SCL) para la comunicación I2C.

Como se trata de una comunicación I2C, queremos resistencias pull-up para las trazas SDA y SCL. He utilizado unas resistencias de 10 kΩ como pull-ups. El resto de las conexiones son bastante sencillas y se demuestran en el esquema del circuito.

Lo siguiente es el cable de la máquina. En caso de que consultes la hoja de datos, obtendrás un diagrama con consejos sobre cómo utilizar los pines Tackle Enter para configurar el System Tackle del CI.

AT24C256-Device-Address

La secuencia «1010» para los 4 primeros MSB es obligatoria para todas las EEPROM I2C de Atmel. Los tres bits siguientes, es decir, A2, A1 y A0 te permiten unir hasta 8 unidades en el mismo Bus I2C.

Como sólo utilizamos un CI AT24C256, los tres pines A2, A1 y A0 de la entrada de la grúa están conectados a tierra para que sus valores correspondientes dentro de la grúa del sistema sean «000».

El último bit (LSB) es el bit de elección para la operación de aprendizaje o escritura. Si es «1», se elige la operación de Aprendizaje y si este bit es «0», se elige la operación de Escritura.

NOTA: Ignoraremos el LSB del mango de la máquina mientras escribimos el código, ya que Arduino Wire (y la biblioteca interna TwoWire) se encarga de ello, confiando en la operación. Así, declararemos el asa como «0x50».

NOTA: Mi CI de EEPROM AT24C256 se compró roto mientras lo enviaba. Puede que utilice un CI AT24C04 más antiguo, que tiene una capacidad de 4 kb (4096 bits o 512 B), para la demostración. El circuito sigue siendo idéntico, ya que cada uno de ellos es un EEPROMS I2C con pines similares y el código requiere muy pocas modificaciones.

AT24C04-EEPROM-IC

Piezas necesarias

  • Arduino UNO
  • AT24C256 EEPROM IC
  • 2 x 10 kΩ de resistencia
  • Cableado
  • Bandeja para el pan
  • Suministro de energía de la placa de pan (no es obligatorio)

Diagrama del circuito

La siguiente imagen muestra el diagrama del circuito de la interfaz EEPROM del Arduino AT24C256.

Diagrama del circuito Arduino-AT24C256-EEPROM

Código

Para escribir el código, no necesitas conseguir ninguna otra biblioteca, ya que sólo utilizaremos la biblioteca «Wire» (que viene con el IDE de Arduino). Como alternativa al uso de una biblioteca dedicada, tomé la decisión de poner por escrito dos capacidades para las operaciones de aprendizaje y escritura del AT24C256, utilizando la biblioteca «Wire».

Escribir un byte en la EEPROM

Arduino-AT24C256-EEPROM-escritura

Aprender un byte de la EEPROM

Arduino-AT24C256-EEPROM-Lectura

Código

Para revelar el funcionamiento del Arduino y de la interfaz externa de la EEPROM IC, escribí un pequeño código que almacena los valores ASCII del 33 (‘!’) al 126 (‘~’) utilizando el rendimiento de escritura.

Después de almacenarlos dentro de la EEPROM, los aprendo utilizando el rendimiento de aprendizaje e imprimo los caracteres en el Monitor Serial.

Arduino-AT24C256-Lectura en serie

Conclusión

Un sencillo tutorial sobre consejos para interconectar el CI EEPROM AT24C256 con Arduino. Si comprendes cómo funciona la interfaz EEPROM del Arduino AT24C256, podrás implementar cualquier función de adquisición de conocimientos.

Lee:  Solicitud fallida de descriptores de gadgets
Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.