I2C significa Circuito Interintegrado. Es un protocolo de conexión de interfaz de bus incorporado en dispositivos para comunicación serial. Fue diseñado originalmente por Philips Semiconductor en 1982. Recientemente, es un protocolo ampliamente utilizado para comunicaciones de corta distancia. También se conoce como interfaz de dos cables (TWI).
Funcionamiento del protocolo de comunicación I2C:
utiliza solo 2 líneas bidireccionales de drenaje abierto para la comunicación de datos llamadas SDA y SCL. Ambas líneas se tiran alto.
Datos en serie (SDA): la transferencia de datos se realiza a través de este pin.
Reloj Serial (SCL) – Lleva la señal del reloj.
I2C funciona en 2 modos:
- modo maestro
- Modo esclavo
Cada bit de datos transferido en la línea SDA se sincroniza mediante un pulso de alto a bajo de cada reloj en la línea SCL.
De acuerdo con los protocolos I2C, la línea de datos no puede cambiar cuando la línea del reloj es alta, solo puede cambiar cuando la línea del reloj es baja. Las 2 líneas son de drenaje abierto, por lo tanto, se requiere una resistencia pull-up para que las líneas estén altas ya que los dispositivos en el bus I2C están activos bajos. Los datos se transmiten en forma de paquetes que comprenden 9 bits. La secuencia de estos bits es:
- Condición de inicio : 1 bit
- Dirección esclava – 8 bits
- Reconocer – 1 bit
Condiciones de inicio y parada:
START y STOP se pueden generar manteniendo la línea SCL alta y cambiando el nivel de SDA. Para generar la condición de INICIO, el SDA se cambia de alto a bajo mientras se mantiene alto el SCL. Para generar la condición de STOP, SDA va de bajo a alto mientras mantiene el SCL alto, como se muestra en la figura a continuación.
Condición de inicio repetido:
Entre cada par de condiciones de arranque y parada, el bus se considera ocupado y ningún maestro puede tomar el control del bus. Si el maestro intenta iniciar una nueva transferencia y no quiere liberar el bus antes de iniciar la nueva transferencia, emite una nueva condición de INICIO. Se llama condición de INICIO REPETIDO.
Bit de lectura/escritura:
Un bit de lectura/escritura alto indica que el maestro está enviando datos al esclavo, mientras que un bit de lectura/escritura bajo indica que el maestro está recibiendo datos del esclavo.
Bit ACK/NACK:
Después de cada cuadro de datos, sigue un bit ACK/NACK. Si la trama de datos se recibe con éxito, el receptor envía el bit ACK al remitente.
Direccionamiento:
El cuadro de dirección es el primer cuadro después del bit de inicio. La dirección del esclavo con el que el maestro quiere comunicarse es enviada por el maestro a todos los esclavos conectados con él. El esclavo luego compara su propia dirección con esta dirección y envía ACK.
Formato de paquete I2C:
En el protocolo de comunicación I2C, los datos se transmiten en forma de paquetes. Estos paquetes tienen una longitud de 9 bits, de los cuales los primeros 8 bits se colocan en la línea SDA y el noveno bit se reserva para ACK/NACK, es decir, reconocimiento o no reconocimiento por parte del receptor.
La condición de INICIO más el paquete de dirección más un paquete de datos adicional más la condición de DETENCIÓN forman colectivamente una transferencia de datos completa.
Características del protocolo de comunicación I2C:
- Protocolo de comunicación semidúplex
: la comunicación bidireccional es posible pero no simultánea. - Comunicación síncrona :
los datos se transfieren en forma de tramas o bloques. - Se puede configurar en una configuración multimaestro.
- Ampliación del reloj:
el reloj se amplía cuando el dispositivo esclavo no está listo para aceptar más datos al mantener baja la línea SCL, lo que impide que el maestro aumente la línea del reloj. El maestro no podrá subir la línea del reloj porque los cables están conectados con Y y esperar hasta que el esclavo libere la línea SCL para mostrar que está listo para transferir el siguiente bit. - Arbitraje :
el protocolo I2C admite el sistema de bus multimaestro, pero no se puede usar más de un bus simultáneamente. El SDA y SCL son monitoreados por los maestros. Si el SDA se encuentra alto cuando se suponía que era bajo, se inferirá que otro maestro está activo y, por lo tanto, detiene la transferencia de datos. - Transmisión en serie :
I2C utiliza la transmisión en serie para la transmisión de datos. - Se utiliza para comunicaciones de baja velocidad.
ventajas :
- Se puede configurar en modo multimaestro.
- La complejidad se reduce porque utiliza solo 2 líneas bidireccionales (a diferencia de SPI Communication).
- Rentable.
- Utiliza la función ACK/NACK debido a que ha mejorado las capacidades de manejo de errores.
Limitaciones:
- Velocidad más lenta.
- La comunicación semidúplex se utiliza en el protocolo de comunicación I2C.
Publicación traducida automáticamente
Artículo escrito por prernaajitgupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA