Tutorial de protocolo de bus I2C, interfaz con aplicaciones

Hoy en día, los protocolos juegan un papel fundamental en el diseño de sistemas embebidos. Sin pasar por los protocolos, si desea extender la funcionalidad periférica del microcontrolador, la complejidad y el consumo de energía aumentarán. Hay diferentes tipos de protocolos de bus disponibles, como USART, SPI, CAN, protocolo de bus I2C, etc., que se utilizan para transferir datos entre dos sistemas.


Índice de Contenido
  1. protocolo I2C
    1. comunicaciones I2C
    2. Tutorial I2C
    3. Condición de acuse de recibo (ACK) y sin acuse de recibo (NCK)

protocolo I2C

¿Qué es el bus I2C?

La transmisión y recepción de información entre dos o más dispositivos requiere una ruta de comunicación llamada sistema de bus. Un bus I2C es un bus serie bidireccional de dos hilos que se utiliza para transportar datos entre circuitos integrados. I2C significa "Circuito Inter Integrado". Fue introducido por primera vez por semiconductores Philips en 1982. El bus I2C consta de tres velocidades de transferencia de datos, como el modo estándar, el modo rápido y el modo de alta velocidad. El bus I2C admite dispositivos de espacio de direcciones de 7 y 10 bits y su funcionamiento difiere con voltajes más bajos.

Protocolo de bus I2c

Líneas de señal I2C

Líneas de señal I2C
Líneas de señal I2C

I2C es un protocolo de bus serie que consta de dos líneas de señal, como las líneas SCL y SDL, que se utilizan para comunicarse con los dispositivos. El SCL significa "línea de reloj en serie" y esta señal siempre es impulsada por el "dispositivo maestro". SDL significa "línea de datos en serie", y esta señal es impulsada por el maestro o por los dispositivos I2C. Estas dos líneas SCL y SDL están en estado de drenaje abierto cuando no hay transferencia entre dispositivos I2C.

Salidas de drenaje abierto

El drenaje abierto es el concepto del transistor FET en el que el terminal de drenaje del transistor está en estado abierto. Los pines SDL y SCL del dispositivo maestro están diseñados con los transistores abiertos, por lo que la transferencia de datos solo es posible cuando estos transistores están encendidos. Por lo tanto, estas líneas o terminales de drenaje se conectan mediante resistencias pull-up a VCC para el modo de conducción.

interfaces I2C

Muchos dispositivos esclavos se interconectan con el microcontrolador mediante el bus I2C a través del CI de cambio de nivel I2C para transferir información entre ellos. El protocolo I2C permite conectar un máximo de 128 dispositivos, todos ellos conectados para comunicarse con las líneas SCL y SDL de la unidad maestra, así como con los dispositivos esclavos. Es compatible con la comunicación multimaestro, lo que significa que se utilizan dos maestros para comunicarse con los dispositivos externos.

Tasa de transferencia de datos I2C

El protocolo I2C explota tres modos tales como: modo rápido, modo de alta velocidad y modo estándar en el que la velocidad de datos en modo estándar varía de 0 Hz a 100 Hz, y los datos en modo rápido se pueden transferir con una velocidad de 0 Hz a 400 KHz. y modo de alta velocidad con 10 Hz. KHz a 100 KHz. Se envían datos de 9 bits para cada transferencia en la que el transmisor MSB a LSB envía 8 bits, y el noveno bit es un bit de reconocimiento enviado por el receptor.

Tasa de transferencia de datos I2C
Tasa de transferencia de datos I2C

comunicaciones I2C

El protocolo de bus I2C se usa más comúnmente en la comunicación maestro y esclavo en la que el maestro se denomina "microcontrolador" y el esclavo se conoce como otros dispositivos como ADC, EEPROM, DAC y dispositivos similares en el sistema integrado. La cantidad de dispositivos esclavos se conectan al dispositivo maestro mediante el bus I2C, en el que cada esclavo consta de una dirección única para comunicarlo. Los siguientes pasos se utilizan para comunicar el dispositivo maestro al esclavo:

Etapa 1: Primero, el dispositivo maestro emite una condición de inicio para informar a todos los dispositivos esclavos que escuchen en la línea de datos en serie.

2do paso: El dispositivo maestro envía la dirección del dispositivo esclavo de destino que se compara con todas las direcciones de los dispositivos esclavos conectados a las líneas SCL y SDL. Si una dirección coincide, se selecciona ese dispositivo y todos los dispositivos restantes se desconectan de las líneas SCL y SDL.

Paso 3: El dispositivo esclavo con una dirección correspondiente recibida del maestro, responde con un reconocimiento al maestro, después de lo cual se establece la comunicación entre el maestro y los dispositivos esclavos a través del bus de datos.

Paso 4: El maestro y el esclavo reciben y transmiten los datos dependiendo de si la comunicación es de lectura o escritura.

Paso 5: Luego, el maestro puede transmitir 8 bits de datos al receptor, que responde con un reconocimiento de 1 bit.

Tutorial I2C

La transmisión y recepción de información paso a paso en serie con respecto a los pulsos de reloj se denomina protocolo I2C. Es un protocolo entre sistemas y de corta distancia, lo que significa que se utiliza en la placa de circuito para comunicar los dispositivos maestro y esclavo.

Conceptos básicos del protocolo I2C

En general, el sistema de bus I2C consta de dos cables que se utilizan fácilmente para ampliar la funcionalidad periférica de entrada y salida, como ADC, EEROM y RTC, y otros componentes básicos para crear un sistema cuya complejidad es muy inferior.

Ejemplo: Dado que el microcontrolador 8051 no tiene ADC incorporado, por lo que si queremos conectar sensores analógicos con el microcontrolador 8051, debemos usar dispositivos ADC como ADC0804-1 canal ADC, ADC0808-8 canales ADC, etc. Usando estos ADC podemos conectar los sensores analógicos al microcontrolador.

Sin utilizar el protocolo para ampliar la funcionalidad de E/S de ningún microcontrolador o procesador, podemos cambiar al dispositivo 8255 ICit de 8 pines. El microcontrolador 8051 es un microcontrolador de 40 pines; Usando el IC 8255, podemos expandir los 3 puertos de E/S con 8 pines en cada puerto. Usando todos los dispositivos como RTC, ADC, EEPROM, temporizadores, etc. - para expandir los circuitos periféricos - también aumentan la complejidad, el costo, el consumo de energía y el tamaño del producto.

Para superar este problema, entra en juego el concepto de protocolo para reducir la complejidad del hardware y el consumo de energía. Podemos ampliar más funciones, como dispositivos de E/S, ADC, T/C y dispositivos de memoria hasta 128 dispositivos con este protocolo I2C.
Terminología utilizada en los protocolos I2C

Transmisor: El dispositivo que envía datos al bus se llama transmisor.

Beneficiario: El dispositivo que recibe datos del bus se llama receptor.

Maestro: El dispositivo que inicia las transferencias para generar señales de reloj y completar una transferencia se denomina maestro.

Recortar: El dispositivo direccionado por un maestro se llama esclavo.

Multimaestro: Varios maestros pueden intentar controlar el bus al mismo tiempo sin corromper el mensaje, esto se denomina multimaestro.

Arbitraje: Procedimiento para garantizar que, si varios maestros intentan controlar el bus simultáneamente, solo uno está autorizado para hacerlo; el mensaje ganador no está dañado.

Sincronización: El procedimiento para sincronizar los relojes de dos o más dispositivos se denomina sincronización.

Secuencia de comando básica I2C

  1. Estado del bit de inicio
  2. Estado del bit de parada
  3. Condición de reconocimiento
  4. Operación de escritura de maestro a esclavo
  5. Leer operación de esclavo a maestro

Estado de los bits de inicio y parada

Cuando el maestro (microcontrolador) quiere hablar con un dispositivo esclavo (por ejemplo, ADC), inicia la comunicación emitiendo una condición de inicio en el bus I2C y luego emite una condición de parada. Los niveles lógicos de inicio y parada de I2C se muestran en la figura.

La condición de inicio I2C se define como una transición alta a baja de la línea SDA mientras que la línea SCL es alta. Se produce una condición de apagado de I2C cuando la línea SDA cambia de baja a alta mientras la línea SCL está alta.

El maestro I2C siempre genera condiciones S y P. Una vez que el maestro I2C inicia una condición de INICIO, se considera que el bus I2c está ocupado.

Estado de los bits de inicio y parada
Estado de los bits de inicio y parada

Programación:

Condición de INICIO:

sbit SDA=P1^7; // inicializa los pines SDA y SCL del microcontrolador //
sbit SCL=P1^6;
período de cancelación (entero sin signo);
vacío principal()
{
SDA=1; //tratamiento de datos//
SCL=1; //el reloj esta alto//
demora();
SDA=0; //enviar los datos//
demora();
SCL=0; //la señal del reloj es débil //
}
Plazo de cancelación (int p)
{
unsignedinta,b;
Para(a=0;a<255;a++); //función de temporizador//
Para(b=0;b
}

Estado de PARADA:

vacío principal()
{
SDA=0; // Dejar de procesar datos //
SCL=1; //el reloj esta alto//
demora();
SDA=1; //Detenido//
demora();
SCL=0; //la señal del reloj es débil //
}
Plazo de cancelación (int p)
{
unsignedinta,b;
Para(a=0;a<255;a++); //función de temporizador//
Para(b=0;b
}

Condición de acuse de recibo (ACK) y sin acuse de recibo (NCK)

Cada byte transmitido en el bus I2C es seguido por una condición de reconocimiento del receptor, lo que significa que después de que el maestro baja el SCL para completar la transmisión de 8 bits, el receptor bajará el SDA al maestro. Si después de la transmisión el receptor no tira, la línea SDA LOW se considera una condición NCK.

Reconocimiento (ACK)
Reconocimiento (ACK)

Programación

Reconocimiento
vacío principal()
{
SDA=0; //La línea SDA baja //
SCL=1; //el reloj sube y baja//
retraso (100);
SCL=0;
}
Sin reconocimiento:
vacío principal()
{
SDA=1; //La línea SDA sube //
SCL=1; //el reloj sube y baja//
retraso (100);
SCL=0;
}

Operación de escritura de maestro a esclavo

El protocolo I2C transfiere datos en forma de paquetes o bytes. Cada byte va seguido de un bit de reconocimiento.

Formato de transferencia de datos

Formato de transferencia de datos
Formato de transferencia de datos

Comenzar: Principalmente, la secuencia de transferencia de datos iniciada por el maestro que genera la condición de inicio.

Dirección de 7 bits: Después de eso, el maestro envía la dirección del esclavo en dos formatos de 8 bits en lugar de una sola dirección de 16 bits.

LA : Si el bit de lectura y escritura es alto, se realiza la operación de escritura.

RECONOCIMIENTO: Si la operación de escritura se realiza en el dispositivo esclavo, el receptor envía el ACK de 1 bit al microcontrolador.

Deténgase: Una vez que se completa la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de apagado al dispositivo esclavo.

Programación

operación de escritura

voidwrite (carácter sin firmar d)
{
Carácter sin signo k, j=0x80;
Para(k=0;k<8;k++)
{
SDA=(d&j);
J=j>>1;
SCL=1;
retraso (4);
SCL=0;
}
SDA=1;
SCL=1;
retraso (2);
c = ASD;
retraso (2);
SCL=0;
}

Operación de lectura de maestro a esclavo

Los datos se leen del dispositivo esclavo en forma de bits o bytes: lea primero el bit más significativo y lea el bit menos significativo al final.

El formato de lectura de datos

formato de lectura de datos
formato de lectura de datos

Comenzar: Principalmente, la secuencia de transferencia de datos es iniciada por el maestro que genera la condición de inicio.

Dirección de 7 bits: Después de eso, el maestro envía la dirección del esclavo en dos formatos de 8 bits en lugar de una sola dirección de 16 bits.

LA : Si el bit de lectura y escritura es bajo, se ejecuta la operación de lectura.

RECONOCIMIENTO: Si la operación de escritura se realiza en el dispositivo esclavo, el receptor envía el ACK de 1 bit al microcontrolador.

Deténgase: Una vez que se completa la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de apagado al dispositivo esclavo.

Programación

Volcado de lectura()
{
Carácter sin signo j, z=0x00, q=0x80;
SDA=1;
para(j=0;j<8;j++)
{
SCL=1;
retraso (100);
bandera=SDA;
si (bandera == 1)
{
z=(z|q);
q=q>>1;
retraso (100);
SCL=0;
}

Ejemplo práctico de interfaz ADC con el microcontrolador 8051

ADC es un dispositivo que se utiliza para convertir datos analógicos a formato digital y digital a analógico. El microcontrolador 8051 no tiene un ADC incorporado, por lo que debemos agregarlo externamente a través del protocolo I2C. El PCF8591 es el convertidor de analógico a digital y de digital a analógico basado en I2C. Este dispositivo puede admitir un máximo de 4 canales de entrada analógica con voltajes de 2,5 a 6 V.

Salidas analógicas

Las salidas analógicas están en forma de voltajes. Por ejemplo, un sensor analógico de 5v da una salida lógica de 0,01v a 5v.
El valor numérico máximo de 5v es = 256.
El valor de 2.5v es =123 según el valor de voltaje máximo.

La fórmula de la salida analógica es:

La fórmula para las salidas digitales:

Interfaz ADC con el microcontrolador 8051
Interfaz ADC con el microcontrolador 8051

La figura anterior muestra la transferencia de datos usando el protocolo I2C desde el dispositivo ADC al microcontrolador 8051. Los pines ADC de SCL y SDA están conectados a los pines 1.7 y 1.6 del microcontrolador para establecer comunicación entre ellos. Cuando el sensor le da valores analógicos al ADC, se convierte a digital y transfiere los datos al microcontrolador a través del protocolo I2C.

Este es el tutorial del protocolo de bus I2C con los programas apropiados. Esperamos que el contenido proporcionado le brinde un concepto práctico de interconexión de múltiples dispositivos con microcontroladores mediante comunicación I2C. Si tiene alguna duda sobre el procedimiento de interfaz de este protocolo, puede comunicarse con nosotros comentando a continuación.

Si quieres conocer otros artículos parecidos a Tutorial de protocolo de bus I2C, interfaz con aplicaciones puedes visitar la categoría Generalidades.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir