I2C - El bus de circuitos integrados

Todo sobre I2C Título Imagen

El bus I2C es muy utilizado en el ámbito de los sistemas embebidos. Explicamos cómo funciona y cómo configurarlo en la Raspberry Pi con un ejemplo.

Características de I2C

El bus de circuitos integrados es un bus de comunicación serie síncrono. Philips Semiconductors fue el responsable de la invención en 1982, pero la interfaz ganó rápidamente popularidad.

Características de I2C
Características de I2C

Los sinónimos más utilizados son I2C, I2C o IIC. La interfaz utiliza una arquitectura Controlador-Objetivo y permite al controlador comunicarse con hasta 112 dispositivos con sólo dos cables.

El controlador puede adaptar la tasa de bits para satisfacer las necesidades específicas del objetivo. Por lo tanto, I2C es compatible con una gran cantidad de dispositivos como sensores, dispositivos EEPROM, relojes, controladores de motor y más.

Cableado

El cableado del bus I2C no podría ser más sencillo, ya que sólo necesitas dos cables. Conecta el pin de reloj serie (SCL) del controlador a los pines de reloj serie de los objetivos y conecta también sus pines de datos serie (SDA). El software I2C hará el resto.

Cableado I2C
Cableado

Si necesitas alimentar tu dispositivo I2C puedes utilizar los pines 3V3, 5V y GROUND de tu Raspberry Pi.

Algunos dispositivos como nuestro Placa de interconexión BME688 tienen una cabecera I2C para que no necesites ningún cable para conectarlos.

Comunicación I2C

El bus de circuito integrado puede conectar 128 dispositivos con sólo dos cables. Esto es posible gracias al ingenioso principio de comunicación.

Los cables (SDA y SCL) nunca se ponen activamente en alto. Si un dispositivo quiere enviar un 1 lógico, deja el cable flotando. Para enviar un cero lógico lleva el cable a tierra.

El controlador inicia la comunicación. Cualquier dispositivo de la red puede actuar como controlador y objetivo.

El gráfico siguiente muestra los bits individuales.

Comunicación I2C
Comunicación I2C

Para iniciar la comunicación, el controlador envía un bit de inicio seguido de la dirección I2C del objetivo y el modo de operación deseado (R - Lectura o W - Escritura).

En la comunicación I2C el objetivo tiene que devolver un ACK-bit cada 8 bits (después de cada byte). Como el espacio de direcciones suele ser de 7 bits, hay 128 (0 a 127) direcciones. 16 de ellas están reservadas. Esto deja 112 direcciones posibles para los dispositivos.

La dirección del objetivo y el modo de operación son un byte, por lo que el objetivo tiene que devolver un bit ACK. A continuación, el controlador envía la dirección de registro (de 8 bits), que el objetivo vuelve a confirmar. A partir de ahí, la comunicación de lectura y escritura es diferente.

Para escribir, el controlador sólo envía los datos en bloques de 8 bits. El objetivo reconoce cada bloque. Una vez que el controlador ha terminado de escribir, envía el bit de parada.

Para la lectura, el controlador envía de nuevo el bit de inicio, seguido de la dirección del objetivo. El objetivo acusa recibo y comienza a enviar los datos en bloques de 8 bits. Esta vez el controlador tiene que confirmar cada byte. Para detener la lectura el controlador envía el bit NACK y finalmente el bit Stop.

Ventajas, desventajas y aplicaciones

Ventajas

Las ventajas del bus I2C son bastante claras. Puedes conectar 128 dispositivos con sólo dos cables y dos pines cada uno. Eso es realmente poderoso. Además tienes velocidades flexibles. La configuración del hardware apenas podría ser más fácil. A diferencia de SPI, el controlador sabe si el objetivo recibió los datos correctamente.

Ventajas
Ventajas

Desventajas

El bus de circuito integrado requiere más espacio y energía porque utiliza resistencias de pull-up. Es más lento en comparación con SPI. Puede tener problemas si dos dispositivos utilizan la misma dirección I2C. La dirección se almacena directamente en el dispositivo. Algunos dispositivos permiten elegir entre dos direcciones posibles soldando un puente en un punto específico del dispositivo.

Desventajas
Desventajas

Aplicaciones

Si busca Sensor en nuestra tienda notará que casi todos los sensores que no son analógicos utilizan la interfaz I2C. Es muy común en el espacio embebido. Hay cosas como la memoria I2C. A menudo los microcontroladores utilizan el bus para la comunicación. Además de eso, muchos DACs (Digital Analog Convertidor) y ADCs (Analog Digital Convertidor) son compatibles con la interfaz.

I2C en la Raspberry Pi

Nuestro video muestra cómo configurar el bus de circuitos integrados en su Raspberry Pi.

6 Comentarios

  1. [...] Además, si estás interesado en aprender más sobre I2C, echa un vistazo a este artículo. [...]

  2. [...] ¿Quieres saber más sobre I2C? Consulte nuestro artículo al respecto aquí. [...]

  3. [...] I2C: el bus de circuitos integrados [...]

  4. [...] I2C - El bus de circuitos integrados [...]

  5. [...] Como explica Naveen, la conexión entre el Nano y la pantalla TFT se basa en la interfaz de periféricos en serie (SPI). Por su parte, el joystick y los botones se conectan a través del bus de circuitos integrados (I2C). [...]

Deja un comentario