Salte la navegación


Para entender y aplicar el bus I2C de manera correcta se debe de leer la especificación del mismo. Esta información y más puede encontrarse en sitios tales como http://www.i2c-bus.org/.  En esta página se hará incapié en la aplicación y las características principales que llevaron a la decisión de utilizarlo en alguno de los proyectos.

El bus está compuesto por dos líneas: la línea de información (SDA) y la línea de clock o reloj (SCL). Se diferencia de un protocolo paralelo en que la cantidad de líneas para la comunicación se ve reducida a sólo dos. En un protocolo de comunicación paralelo, como por ejemplo el perteneciente al controlador de LCDs alfanuméricos hitachi 44780, cada línea contiene información la cual es interpretada por el chip de acuerdo al estado lógico de cada una de ellas. En un protocolo serie, los datos se ingresan por una sola línea (en cascada)  y para que el chip pueda interpretarlos será necesario brindarle algún tipo de sincronismo (el reloj) indicándosele mediante esta señal de sincronismo el número de bit a ingresar. Tanto la señal de clock como la de datos debe estar sincronizada ya que sino el chip interpretará datos no deseados o se produciran errores. En los casos de transmisión serie entran en juego los tiempos de crecimiento y caída de las señales ya que la lectura o escritura está basada en los flancos de las señales de clock y datos. La ventaja que ofrece el manejo de un bus serie es la posibilidad de incorporar al mismo más de un dispositivo (aunque no infinitos) ocupando siempre sólo dos pines del microcontrolador.

Para que dentro de una misma línea el sincronismo exista como tal, se deja en manos de un dispositivo maestro el manejo de la señal de clock y éste sede la línea de datos al dispositivo esclavo cuando requiere información del mismo. El maestro es el dispositivo que inicia una transferencia, genera la señal de reloj y finaliza la transferencia. El esclavo es aquel dispositivo direccionado por el maestro y sólo puede comandar la línea de datos cuando el maestro se lo indica. Existe además una posibilidad de implementar el protocolo MMI2C que se refiere a un bus multi-maestros donde puede haber más de un maestro por bus tomando el control de la línea (este tipo de bus no se va a especificar en esta sección sino que se hará en una nueva página de ser necesario cuando se utilice).

Cabe destacar que el largo de las palabras a utilizar para la comunicación es de 8-bits, lo que lo hace un protocolo adecuado para los microcontroladores de 8-bits ya que un espacio de memoria equivale a una palabra a enviar por el bus.

¿Cómo deben encontrarse las líneas de control para que los datos sean válidos?

En la siguiente figura puede apreciarse una imagen donde se muestra el estado de las líneas de control (SDA y SCL) para que los datos sean válidos. Es de observarse que los datos en la línea SDA deben de estar estables un tiempo anterior al pulso de clock que indicará al dispositivo el flanco de ingreso de datso válidos y que los cambios en la línea de datos deben realizarse mientras la línea de clock está en estado lógico bajo.

Validez de los datos

Validez de los datos

¿Cómo se le indica al dispositivo el comienzo o finalización del envío de datos?

Existen dos condiciones en las cuales la línea de datos se puede modificar mientras la línea de clock se encuentra en estado lógico alto: las condiciones de start y stop. Como bien el nombre lo indica, una condición de start permite iniciar la transferencia de datos válidos y una condición de stop permite finalizarla. La forma especial de estas señales es una transisción de estado alto a bajo cuando la línea de clock esta en estado alto para la señal de start y una transición de bajo a alto cuando se trata de la señal de stop, con la señal de clock en alto. La siguiente figura muestra ambos casos.

Condiciones de start y stop

Condiciones de start y stop

¿Cómo utilizar el bus I2C en un microcontrolador?

Si bien los microcontroladores poseen módulos que integran el bus I2C y lo único que debe hacerse es completar los registros necesarios para que la comunicación sea posible, no habiéndose que preocuparse generalmente por el sincronismo de las señales de clock y datos, en muchos casos puede ser necesario generar un código que permita mediante software implementar algo similar al módulo embebido. Esta técnica se la denomina bit-banging, en la cual cada bit es controlado e interpretado por software para su envío o recepción. Si bien no se mostrará un código de ejemplo, se pueden encontrar varios ejemplos en internet de los fabricantes de microcontroladores.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: