MeccaNoids  
   

Introducción al Protocolo de comunicación I2c


Última modificación: 17 de septiembre de 2017

El Protocolo I2c

El protocolo de Circuito Inter-Intégrate (I2C) es un protocolo diseñado para permitir conectar y gestionar con un mismo cable de 2 hilos, múltiples componentes "esclavos” para comunicarse con uno o más “maestros”. Sólo requiere dos cables de señal (SCL y SDA) para el intercambio bidireccional de información. Esta norma o protocolo se llama Inter Integrated Circuits bus, o IIC o I2c. Sus principales características son: 

Para montar un sistema electrónico funcionando con un microprocesador (o Tarjeta con microprocesador como lo es una Tarjeta Arduino), existen  muchos componentes comerciales disponibles (sensores, pantallas, teclados, …), los cuales pueden asociarse al sistema bajo  3 principales tipos de conexiones y protocolo de comunicación: UART, SPI, I2c

  • En la concepción / diseño de nuestro sistema MeccaNano, hemos incluido la posibilidad de conectar componentes con estos 3 protocolos de conexiones / comunicaciones más difundidos, privilegiado el protocolo I2c que presenta muchas ventajas.  Sus principales características son: 

  • Protocolo de dos hilos de control, uno para transmitir los datos: SDA (Datos line), y otro, el reloj asíncrono que indica cuando leer los datos: SCL (Clock line). Con estos dos hilos, podemos manejar muchos componentes diseñados para comunicación I2c.

  • Cada componente I2C tiene su dirección exclusiva de 7 bits, permitiendo en teoría conectar 27 = 128 dispositivos en estos 2 hilos.

  • Puede ser multi-master, el master puede cambiar, pero solo uno puede estar activo a la vez.

  • Permite la comunicación entre componentes incluidos en un mismo sistema I2c.

  • En Arduino, una librería I2C llamada Wire, facilita y simplifica la gestión y programación del protocolo de comunicaciones I2c. Esta Librería esta incluida e instalada con el I.D.E. de Arduino, no es necesario tener que instalarla.

  • Por ejemplo insertar / Conectar una pantalla LCD de 16x2 con I2c reduce el número de pines / cables a 2 (SDA + SCL) + 2 (alimentación 5v y tierra) en lugar de 16 sin el protocolo I2c

Conocer la dirección I2c de un componente:

Cada componente que conectamos al un sistema I2C tiene una dirección única, y cada mensaje y orden que transmitimos, lleva anexa esta dirección, indicando cuál de los muchos posibles, es el receptor del mensaje.

Esto implica que debemos saber la dirección del componente. Lo normal es comprobar la información técnica del fabricante del componente, que proporciona la dirección por defecto.

En caso de duda sobre una dirección I2c de un componente, podemos interrogarla median un programa de interrogación de dirección de un componente I2c, damos este programa de interrogación de dirección I2c para interrogar la dirección de un Módulo Interfase I2c PCF8574 utilizado para la Tarjeta MeccaNano

Ejemplo de mensaje que da este programa:

 

Los diferentes protocolos de comunicación en Arduino:

UART Universal Asinchronous Receiver-Transmitter (recepción-transmisión asíncrona universal). En este protocolo, se utilizan dos líneas (pines / cables): una línea para transmitir los datos y otra para recibir los datos. 8 bits de datos son transmitidos de la siguiente forma: un bit de inicio, a nivel bajo, 8 bits de datos y un bit de parada a nivel alto. UART se diferencia de SPI y I2C en que es asíncrono a contrario de los otros que son sincronizados con señal de reloj. La velocidad de datos UART está limitado a 2Mbps

SPI Serial Peripheral Interface (interfaz de serial Periférico). Es otro protocolo serie muy simple. Un maestro envia la señal de reloj, y tras cada pulso de reloj envía un bit al esclavo y recibe un bit de éste. Los nombres de las señales son:

  • SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía un bit. También llamado TAKT (en alemán).
  • MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al Slave. También llamada SIMO.
  • MISO (Master Input Slave Output): Salida de datos del Slave y entrada al Master. También conocida por SOMI.
  • SS/Select: Para seleccionar un Slave, o para que el Master le diga al Slave que se active. También llamada SSTE.

I2C es un protocolo síncrono. I2C usa solo 2 cables, uno para el reloj (SCL) y otro para el dato (SDA). Esto significa que el maestro y el esclavo envían datos por el mismo cable, el cuál es controlado por el maestro, que crea la señal de reloj. I2C no utiliza selección de esclavo, sino que cada esclavo tiene una dirección única que permite diferenciarlo de los demás esclavos. La velocidad es de 100 kbit/s en el modo estándar, aunque también permite velocidades de 3.4 Mbit/s

Buenas referencias:

https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino-4/

 




 Copyright o cualquier otra instrucción del propietario aquí.
Si tiene problemas o preguntas relacionadas con este sitio Web, póngase en contacto con [CorreoElectronicoProyecto].
Última actualización: 17 de septiembre de 2017.