GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué es I2C (Inter-Integrated-Circuit)?

Público objetivo

Este artículo asume que el lector está familiarizado con la terminología y los circuitos electrónicos básicos.

Introducción

El propósito de este artículo es familiarizar al lector con los conceptos básicos del bus de comunicaciones I2C, incluido cómo se configura, sus propiedades físicas y dónde y por qué se usa a menudo.


.

I2C

I2C normalmente se pronuncia "I-dos-C", aunque a veces también se escribe como IIC (y se pronuncia "I-I-C") o IC (se pronuncia "I-squared-C"). El acrónimo significa Inter-Integrated-Circuit. Es un tipo de bus de computadora en serie y protocolo de comunicaciones que Philips Semiconductor introdujo por primera vez en el mercado en 1982.

I2C es una forma de permitir que múltiples dispositivos electrónicos (la mayoría de las veces, circuitos integrados periféricos de baja velocidad) se comuniquen entre sí a través de un solo par de cables. Estos cables también se denominan líneas de datos o buses. El primero de estos buses es el de línea de datos y se denomina SDA (S serie DA ta) línea, y el otro bus es el reloj, o SCL (S serie CL ock) línea. Dado que todos los dispositivos en cualquier circuito I2C están conectados a estas dos líneas para comunicarse, la mayoría de los dispositivos compatibles con I2C tienen pines etiquetados como SDA y SCL, así como pines VIN y GND para conexiones positivas y a tierra.
.

Esquema I2C típico/con licencia bajo CC BY-SA 3.0

.
Tanto el bus de reloj como el de datos son líneas abiertas. Se debe conectar una resistencia entre cada línea y el suministro de voltaje positivo del circuito (también conocido como Vcc) para que el bus funcione correctamente. El tamaño de estas resistencias puede variar, desde 1 kΩ hasta 47 kΩ, pero deben estar presentes entre la barra y el voltaje ALTO del sistema. Si no están presentes, todas las líneas se reducirán y el bus I2C no funcionará. Afortunadamente, solo se necesita un par de resistencias (una para cada línea) para todo el sistema, no un par para cada dispositivo; eso podría complicarse rápidamente con muchos dispositivos.

Se pueden conectar bastantes dispositivos (también llamados nodos) a estos buses. De hecho, la cantidad de dispositivos que prácticamente se pueden conectar a cualquier circuito I2C normalmente está limitada solo por el espacio, la capacitancia inherente de las líneas y las direcciones de los dispositivos conectados. La mayoría de los expertos coinciden en que este límite se sitúa en torno a los 1008 dispositivos.

Hay dos tipos de dispositivos en las comunicaciones I2C:maestros y esclavos. En la mayoría de las implementaciones del protocolo hay un dispositivo maestro conectado a muchos esclavos. Es posible tener más de un maestro comunicándose con varios dispositivos esclavos así como con otros maestros, pero esta forma es menos común y está un poco más allá del alcance de esta introducción. Muchos dispositivos I2C se pueden configurar como maestros o esclavos, según los resultados deseados del sistema. El nodo maestro es el único dispositivo que controla la línea del reloj (SCL) y es el único dispositivo que puede iniciar una transferencia de datos. Los nodos esclavos están limitados a escuchar y responder llamadas del nodo maestro. Cada nodo, incluido el maestro, tiene una dirección única (normalmente de 7 bits) que lo identifica en la red I2C. En algunos casos, la dirección puede tener una longitud de 10 bits, lo que permite más de 128 dispositivos diferentes, pero esta no es una configuración normal.

Durante la operación de un sistema I2C, el nodo maestro envía comandos y solicitudes en la línea de datos. Estas señales tienen una longitud de 8 bits, solo se inician cuando la línea de reloj está en ALTO y se inician con una secuencia particular de "inicio" y finalizan con una secuencia particular de "parada". La secuencia de inicio alerta a todos los nodos esclavos conectados que una solicitud de transferencia de datos es inminente. La siguiente secuencia que envía el maestro es la dirección del esclavo con el que quiere comunicarse. El nodo esclavo nombrado luego responde al maestro, comenzando en la siguiente señal de reloj ALTA, y los otros esclavos vuelven a escuchar para que se llame a su dirección.

El octavo bit que se envía con el comando, después de la dirección del dispositivo de 7 bits, es un simple bit de lectura/escritura. Le dice al dispositivo direccionado si el dispositivo maestro leerá o escribirá en él. Esto permite que el dispositivo receptor prepare datos para enviar o recibir datos a lo largo de la línea SDA en la siguiente señal ALTA del reloj.

La velocidad del reloj (y las transferencias de señal asociadas) en la mayoría de los circuitos I2C normalmente se encuentra entre las comunicaciones en serie y las velocidades SPI, entre 100 kHz y 400 kHz. I2C se usa comúnmente en sistemas donde la simplicidad, el bajo costo y la baja potencia son más importantes que la velocidad. Algunas de estas aplicaciones incluyen convertidores de analógico a digital, pantallas LCD, relojes en tiempo real y muchos sensores diferentes, como barómetros, brújulas e incluso receptores GPS.

I2C es un protocolo de comunicaciones muy útil, aunque puede que solo sea aplicable a una pequeña cantidad de aplicaciones. Es ideal para configuraciones pequeñas de bajo consumo de energía y, como resultado, ha encontrado seguidores entre muchos aficionados, que lo usan para conectar sensores y controles con dispositivos integrados y microcontroladores como Arduino y Raspberry Pi. Dos de los pines GPIO de Pi están preestablecidos para interactuar con dispositivos que usan el protocolo, y la biblioteca de cables Arduino permite la comunicación con dispositivos I2C. Aprender y usar I2C puede ampliar significativamente el conjunto de herramientas de un aficionado cuando se trata de construir proyectos.

Atlantic.Net

Atlantic.net ofrece alojamiento VPS, así como servicios de alojamiento gestionados que incluyen una capa de servicios gestionados esenciales para el negocio en sus paquetes de alojamiento. Contáctenos hoy para obtener más información.


Linux
  1. ¿Qué es un usuario de Linux?

  2. Que hace ?

  3. ¿Qué hace Echo $? ¿¿Hacer??

  4. ¿Qué es ioremap()?

  5. Que es :-!! en código C?

¿Qué es SFTP?

Cómo encontrar qué dispositivos están conectados a la red en Linux

¿Qué viene en GNOME 42?

¿Qué es el analfabetismo digital?

¿Qué es Termux en Android?

¿Qué es un archivo .sh?