Tutorial de protocolo de bus I2C, interfaz con aplicaciones

Pruebe Nuestro Instrumento Para Eliminar Los Problemas





Hoy en día los protocolos juegan un papel fundamental en la diseño de sistema integrado . Sin ir a los protocolos, si desea ampliar las características periféricas 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 los datos entre dos sistemas.

Protocolo I2C

¿Qué es el bus I2C?




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

Protocolo de bus I2c

Protocolo de bus I2c



Líneas de señal I2C

Líneas de señal I2C

Líneas de señal I2C

El I2C es un protocolo de bus en serie que consta de dos líneas de señal, como líneas SCL y SDL, que se utilizan para comunicarse con los dispositivos. El SCL significa una '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 los periféricos I2C. Ambas líneas SCL y SDL están en estado de drenaje abierto cuando no hay transferencia entre periféricos I2C.

Salidas de drenaje abierto


El drenaje abierto es el concepto para 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 en estado abierto, por lo que la transferencia de datos solo es posible cuando se realizan estos transistores. Por lo tanto, estas líneas o terminales de drenaje están conectados a través de resistencias pull-up a VCC para el modo de conducción.

Interfaces I2C

Muchos los dispositivos esclavos están interconectados con el microcontrolador con la ayuda del bus I2C a través del IC del cambiador de nivel I2C para transferir la información entre ellos. El protocolo I2C se utiliza para conectar un máximo de 128 dispositivos que están todos 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 Multimaster, lo que significa que se utilizan dos maestros para comunicar los dispositivos externos.

Tasas de transferencia de datos I2C

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

Tasas de transferencia de datos I2C

Tasas de transferencia de datos I2C

Comunicación I2C

El protocolo de bus I2C se usa más comúnmente en la comunicación maestro y esclavo, donde el maestro se llama 'microcontrolador' y el esclavo se llama otros dispositivos como ADC, EEPROM, DAC y dispositivos similares en el sistema integrado. El número de dispositivos esclavos se conecta al dispositivo maestro con la ayuda del bus I2C, donde cada esclavo consta de una dirección única para comunicarlo. Los siguientes pasos se utilizan para comunicar el dispositivo maestro al esclavo:

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

Paso 2: 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 alguna 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 coincidente recibida del maestro responde con un acuse de recibo al maestro, a partir de entonces se establece la comunicación entre los dispositivos maestro y esclavo en el bus de datos.

Paso 4: Tanto el maestro como 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 acuse de recibo de 1 bit.

I2C Tutorial

La transmisión y recepción de la información paso a paso en serie con respecto a los pulsos del reloj se denomina protocolo I2C. Es un protocolo entre sistemas y de corta distancia, lo que significa que se utiliza dentro de 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 expandir las características periféricas de entrada y salida como ADC, EEROM y RTC, y otros componentes básicos para hacer un sistema cuya complejidad sea muy menor.

Ejemplo: Dado que el microcontrolador 8051 no tiene ADC incorporado, por lo tanto, si queremos conectar algún sensor analógico al microcontrolador 8051, tenemos que usar dispositivos ADC como ADC0804-1 canal ADC, ADC0808- 8 canales ADC, etc. Al usar estos ADC, podemos conectar los sensores analógicos al microcontrolador.

Sin usar el protocolo para expandir las características de E / S de ningún microcontrolador o procesador, podemos pasar al dispositivo 8255 ICit de 8 pines. los El microcontrolador 8051 es un microcontrolador de 40 pines Al usar el 8255 IC, podemos expandir los 3 puertos de E / S con 8 pines en cada puerto. Al utilizar 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, el concepto de protocolo entra en escena para reducir la complejidad del hardware y el consumo de energía. Podemos ampliar una mayor cantidad de funciones, como periféricos de E / 0, ADC, T / C y dispositivos de memoria hasta 128 dispositivos utilizando este protocolo I2C.
Terminología utilizada en protocolos I2C

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

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

Maestría: El dispositivo que inicia transferencias para generar señales de reloj y finalizar una transferencia se denomina maestro.

Esclavo: El dispositivo al que se dirige un maestro se denomina esclavo.

Maestro múltiple: Más de un maestro puede intentar controlar el bus al mismo tiempo sin dañar el mensaje se llama Multimaster.

Arbitraje: Procedimiento para garantizar que, si más de un maestro intenta controlar el bus simultáneamente, solo uno puede hacerlo, por lo que el mensaje ganador no se corrompe.

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

Secuencia de comandos básicos I2C

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

Condición de bit de inicio y parada

Cuando el maestro (microcontrolador) desea hablar con un dispositivo esclavo (por ejemplo, ADC), comienza 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 arranque y parada I2C se muestran en la figura.

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

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

Condición de bit de inicio y parada

Condición de bit de inicio y parada

Programación:

Condición de INICIO:

sbit SDA = P1 ^ 7 // inicializar los pines SDA y SCL del microcontrolador //
sbit SCL = P1 ^ 6
demora nula (int sin firmar)
vacío principal ()
{
SDA = 1 // procesando los datos //
SCL = 1 // reloj alto //
demora()
SDA = 0 // envió los datos //
demora()
SCL = 0 // la señal del reloj es baja //
}
Retraso vacío (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}

STOP Condición:

vacío principal ()
{
SDA = 0 // Dejar de procesar los datos //
SCL = 1 // reloj alto //
demora()
SDA = 1 // Detenido //
demora()
SCL = 0 // la señal del reloj es baja //
}
Retraso vacío (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}

Condición de reconocimiento (ACK) y sin reconocimiento (NCK)

Cada byte transmitido a través del 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 que la transmisión del receptor no tira, la línea SDA BAJA 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 va de mayor a menor //
retraso (100)
SCL = 0
}
Sin reconocimiento:
vacío principal()
{
SDA = 1 // La línea SDA se eleva //
SCL = 1 // el reloj va de mayor a menor //
retraso (100)
SCL = 0
}

Operación de escritura de maestro a esclavo

El protocolo I2C transfiere los 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

Comienzo: 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 única dirección de 16 bits.

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

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

Detener: Una vez completada la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de parada al dispositivo esclavo.

Programación

Operación de escritura

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

Operación de lectura de maestro a esclavo

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

El formato de lectura de datos

Formato de lectura de datos

Formato de lectura de datos

Comienzo: 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 única dirección de 16 bits.

R / W: Si el bit de lectura y escritura es bajo, se realiza la operación de lectura.

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

Detener: Una vez completada la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de parada al dispositivo esclavo.

Programación

Lectura nula ()
{
Carácter sin signo j, z = 0x00, q = 0x80
SDA = 1
para (j = 0j<8j++)
{
SCL = 1
retraso (100)
bandera = SDA
si (bandera == 1)
q)
q = q >> 1
retraso (100)
SCL = 0

Ejemplo práctico de interfaz de ADC con el microcontrolador 8051

El ADC es un dispositivo que se utiliza para convertir los datos analógicos en 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 está basado en I2C analógico a digital y convertidor de digital a analógico. Este dispositivo puede admitir un máximo de 4 canales de entrada analógicos junto con voltajes de 2.5 a 6v.

Salidas Analógicas

Las salidas analógicas vienen en forma de tensiones. Por ejemplo, el sensor analógico de 5v proporciona una lógica de salida de 0.01v a 5v.
El valor digital 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 de las salidas digitales:

Interfaz de ADC con el microcontrolador 8051

Interfaz de ADC con el microcontrolador 8051

La figura anterior muestra la transferencia de datos utilizando 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 proporciona valores analógicos al ADC, se convierte en digital y transfiere datos al microcontrolador a través del protocolo I2C.

Se trata del tutorial del protocolo de bus I2C con los programas adecuados. Esperamos que el contenido proporcionado le brinde un concepto práctico de interconexión de varios dispositivos con microcontroladores utilizando la comunicación I2C. Si tiene alguna duda sobre el procedimiento de interfaz de este protocolo, puede comunicarse con nosotros comentando a continuación.