Articles

Conceptos básicos del Protocolo de comunicación I2C

Posted by admin

hasta ahora, hemos hablado de los conceptos básicos de la comunicación SPI y la comunicación UART, así que ahora vamos a entrar en el protocolo final de esta serie, El circuito Interintegrado, o I2C.

probablemente se encontrará utilizando I2C si alguna vez construye proyectos que utilizan pantallas OLED, sensores de presión barométrica o módulos de giroscopio / acelerómetro.

Introducción a la comunicación I2C

I2C combina las mejores características de SPI y UARTs., Con I2C, puede conectar varios esclavos a un solo maestro (como SPI) y puede tener varios maestros controlando esclavos individuales o múltiples. Esto es realmente útil cuando desea tener más de un microcontrolador registrando datos en una sola tarjeta de memoria o mostrando texto en una sola LCD.

al igual que la comunicación UART, I2C solo utiliza dos cables para transmitir datos entre dispositivos:

SDA (Serial Data): la línea para que el maestro y el esclavo envíen y reciban datos.

SCL (Serial Clock) – la línea que lleva la señal del reloj.,

I2C es un protocolo de comunicación en serie, por lo que los datos se transfieren poco a poco a lo largo de un solo cable (la línea SDA).

al igual que SPI, I2C es síncrono, por lo que la salida de bits se sincroniza con el muestreo de bits por una señal de reloj compartida entre el maestro y el esclavo. La señal del reloj siempre es controlada por el maestro.

¿Cómo I2C Obras

Con I2C, los datos se transfieren en los mensajes. Los mensajes se dividen en marcos de datos., Cada mensaje tiene un marco de direcciones que contiene la dirección binaria del esclavo, y uno o más marcos de datos que contienen los datos que se transmiten. El mensaje también incluye Condiciones de inicio y parada, bits de lectura/escritura y bits ACK/NACK entre cada marco de datos:

condición de inicio: la línea SDA cambia de un nivel de alto voltaje a un nivel de bajo voltaje antes de que la línea SCL cambie de alto a bajo.

condición de parada: la línea SDA cambia de un nivel de bajo voltaje a un nivel de alto voltaje después de que la línea SCL cambia de bajo a alto.,

marco de direcciones: una secuencia de 7 o 10 bits única para cada esclavo que identifica al esclavo cuando el maestro quiere hablar con él.

Bit de lectura / escritura: un solo bit que especifica si el maestro está enviando datos al esclavo (nivel de baja tensión) o solicitando datos de él (nivel de alta tensión).

Bit ACK / NACK: cada fotograma en un mensaje es seguido por un bit acknowledge/no-acknowledge. Si se recibió correctamente un marco de direcciones o un marco de datos, se devuelve un bit ACK al remitente desde el dispositivo receptor.,

direccionamiento

I2C no tiene líneas de selección de esclavos como SPI, por lo que necesita otra forma de hacerle saber al esclavo que se le están enviando datos, y no otro esclavo. Lo hace dirigiéndose. El marco de dirección es siempre el primer marco después del bit de inicio en un mensaje nuevo.

El maestro envía la dirección del esclavo con el que quiere comunicarse a cada esclavo conectado a él. Cada esclavo luego compara la dirección enviada desde el maestro a su propia dirección. Si la dirección coincide, envía un bit ACK de bajo voltaje de vuelta al maestro., Si la dirección no coincide, el esclavo no hace nada y la línea SDA permanece alta.

Bit de lectura / escritura

el marco de direcciones incluye un único bit al final que informa al esclavo si el maestro desea escribir datos en él o recibir datos de él. Si el maestro quiere enviar datos al esclavo, el bit de lectura/escritura es un nivel de baja tensión. Si el maestro está solicitando datos del esclavo, el bit es un nivel de alto voltaje.

El marco de datos

después de que el maestro detecta el bit ACK del esclavo, el primer marco de datos está listo para ser enviado.,

el marco de datos es siempre de 8 bits de largo, y se envía con el bit más significativo primero. Cada marco de datos es inmediatamente seguido por un bit ACK / NACK para verificar que el marco se ha recibido correctamente. El bit ACK debe ser recibido por el maestro o el esclavo (dependiendo de quién esté enviando los datos) antes de que se pueda enviar el siguiente marco de datos.

después de que se hayan enviado todos los marcos de datos, el maestro puede enviar una condición de parada al esclavo para detener la transmisión., La condición de parada es una transición de voltaje de bajo a alto en la línea SDA después de una transición de bajo a alto en la línea SCL, con la línea SCL permaneciendo alta.

pasos de la transmisión de datos I2C

1. El maestro envía la condición de inicio a cada esclavo conectado cambiando la línea SDA de un nivel de alto voltaje a un nivel de bajo voltaje antes de cambiar la línea SCL de alto a bajo:

2., El maestro envía a cada esclavo la dirección de 7 o 10 bits del esclavo con el que desea comunicarse, junto con el bit de lectura/escritura:

3. Cada esclavo compara la dirección enviada desde el maestro con su propia dirección. Si la dirección coincide, el esclavo devuelve un bit ACK tirando de la línea SDA hacia abajo durante un bit. Si la dirección del maestro no coincide con la propia dirección del esclavo, el esclavo deja la línea SDA alta.

4. El maestro envía o recibe la trama de datos:

5., Después de transferir cada fotograma de datos, el dispositivo receptor devuelve otro bit ACK al remitente para confirmar la recepción correcta del fotograma:

6. Para detener la transmisión de datos, el maestro envía una condición de parada al esclavo cambiando SCL high antes de cambiar SDA high:

solo maestro con varios esclavos

debido a que I2C utiliza direccionamiento, se pueden controlar varios esclavos desde un solo maestro. Con una dirección de 7 bits, 128 (27) dirección única están disponibles., El uso de direcciones de 10 bits es poco común, pero proporciona 1.024 (210) direcciones únicas. Para conectar varios esclavos a un solo maestro, conéctelos de esta manera, con resistencias pull-up de 4.7 k Ohm conectando las líneas SDA y SCL a Vcc:

varios maestros con varios esclavos

Se pueden conectar varios maestros a un solo esclavo o varios esclavos. El problema con varios maestros en el mismo sistema se produce cuando dos maestros intentan enviar o recibir datos al mismo tiempo a través de la línea SDA., Para resolver este problema, cada maestro necesita detectar si la línea SDA es baja o alta antes de transmitir un mensaje. Si la línea SDA es baja, esto significa que otro maestro tiene el control del bus, y el maestro debe esperar para enviar el mensaje. Si la línea SDA es alta, entonces es Seguro transmitir el mensaje. Para conectar varios maestros a varios esclavos, utilice el siguiente diagrama, con 4.,use I2C para conectarse a un dispositivo en particular:

ventajas

  • solo utiliza dos cables
  • Soporta múltiples maestros y múltiples esclavos
  • ACK/Nack bit da confirmación de que cada marco se transfiere con éxito
  • El Hardware es menos complicado que con UARTs
  • /li>

desventajas

  • Velocidad de transferencia de datos más lenta que SPI
  • El tamaño del marco de datos está limitado a 8 bits
  • hardware más complicado necesario para implementar que SPI

¡Gracias por leer!, Espero que hayas aprendido algo de esta serie de artículos sobre protocolos de comunicación electrónica. En caso de que aún no los haya leído, la primera parte cubre el protocolo de comunicación SPI, y la segunda parte cubre la comunicación impulsada por UART.

Leave A Comment