ENTRADAS

15 dic 2016

BUSES DE COMUNICACIÓN DE DATOS

Chips usando buses de comunicación

En esta nueva entrada del blog de FdeT hablaremos sobre algunos de los principales buses de comunicación que existen. En cualquier aparato electrónico convencional es común encontrarse varios chips cada uno realizando una función determinada. No obstante, los distintos chips necesitan comunicarse entre ellos. Con este propósito surgieron los buses de comunicación.

buses de comunicacion

Buses de comunicación: puerto combo bus paralelo (derecha) y bus serie (izquierda). Img Startech.

A día de hoy existen una gran variedad de este tipo de buses aunque los podemos clasificar principalmente en dos tipos: serie y paralelo. Los buses de tipo serie se caracterizan por enviar los bits de uno en uno mientras que los buses paralelo son capaces de enviar varios bits de forma simultánea.

Contrariamente a lo que pueda parecer, los buses más extendidos son los buses serie. Algunos ejemplos de este tipo de buses son: USB (Universal Serial Bus), Thunderbolt, RS-232, I2C, CAN (Controller Area Network), …

RS 232

Buses de comunicación serie: RS 232

 

thunderbolt

Buses de comunicación: Thunderbolt

 

 USB

Buses de comunicación: USB

Como ejemplo de buses paralelo tenemos ATA (Advance Technology Attachment), IDE (Integrated Drive Electronics) y Centronics.

bus-ide

Buses de comunicación: IDE

bus-centronic

Buses de comunicación: Centronics

Algunas de las ventajas de los puertos serie que han hecho que se extiendan tanto son que necesitan menos cables y procesadores más pequeños para poder funcionar por lo que su coste es inferior y su manejo más sencillo. Además, aunque los bits se envíen de uno en uno, se han llegado a alcanzar velocidades mucho mayores que con los buses paralelos.

 

El bus I2C (Inter-Integrated Circuit)

Uno de los primeros buses serie desarrollados fue el bus Inter-Integrated Circuit (abreviado como I2C). La primera aparición de este bus fue en la década de los 80 y a pesar del tiempo, a día de hoy sigue siendo muy utilizado (en multitud de ocasiones como base para otros sistemas de comunicación).

Este bus utiliza dos hilos (cables) para la comunicación. Cada uno de estos hilos se encuentra conectado a una línea de alimentación (denominada V­dd) a través de una resistencia conocida como resistencia de pull-up. De forma interna, cada equipo que se conecta al bus tiene un transistor conectado a cada una de estas líneas en configuración de drenador o colector abierto. Esta configuración se comporta de la siguiente forma: si no hay activo ningún transistor, la línea se encuentra a una tensión igual a la tensión de alimentación. No obstante, si se activa un transistor en la línea, ésta queda conectada a 0 voltios.

 

conexión de un bus I2C con una Raspberry Pi

Buses de comunicación: conexión de un bus I2C con una Raspberry Pi como máster y varios esclavos (entre ellos un Arduino)

 

En este bus, uno de los dispositivos hace de máster mientras que el resto hacen de esclavos. El bus máster se encarga de generar la señal de reloj en una de las líneas (conocida como SCL) mientras que la otra línea se utiliza para el envío de datos (y recibe el nombre de SDA).

Cuando comienza una transmisión por parte del máster, se envía la señal de inicio (S) que consiste en una transición del nivel alto al nivel bajo en la línea SDA mientras que SCL está en el nivel alto.

A continuación se envía un byte de datos de tal forma que mientras que la señal SCL está en el nivel bajo se cambia el estado de SDA según se trate de un 1 (nivel alto) o un 0 (nivel bajo). El esclavo leerá cada bit mientras SCL está en nivel alto. Una vez enviados 8 bits (es decir, 1 Byte) el esclavo deberá confirmar la recepción manteniendo la línea SDA en el nivel bajo durante el siguiente pulso de reloj. Tras ello, el máster podrá enviar un nuevo byte o bien enviar la señal de parada para indicar que ha finalizado la transmisión. La señal de parada consiste en una transición en SDA del nivel bajo al nivel alto mientras que SCL se encuentra en el nivel alto.

Ejemplo de transmisión a través de I2C

Ejemplo de transmisión a través de I2C

CAN (Controller Area Network) bus

Una vez visto el bus I2C veremos otro bus serie completamente distinto: el bus CAN. Este bus es el utilizado principalmente dentro de un vehículo para conectar las distintas centralitas y permitir el intercambio de mensajes entre ellas. Un ejemplo de esto es, que cuando la centralita que controla el sistema de frenado detecta que el freno se acciona de forma brusca informa a la centralita encargada del airbag para que se prepare puesto que es posible que en breve haya un golpe y deba activarse el airbag.

El bus CAN utiliza dos líneas al igual que en el caso anterior. No obstante, se usan de forma muy distinta. En esta ocasión no se presta atención al valor de tensión en cada hilo sino a la diferencia de tensión entre un hilo y otro.

El utilizar la diferencia de tensión entre las líneas permite que en caso de que haya algún tipo de interferencia electromagnética, su efecto sea mínimo ya que al afectar a ambos hilos por igual, la diferencia de tensión va a ser constante.

Además, en el bus CAN no se define un nivel alto o un nivel bajo sino un estado dominante y un estado recesivo de tal forma, que en caso de que se den los dos estados de forma simultánea (porque haya dos equipos que quieran transmitir a la vez) el estado dominante tendrá preferencia sobre el recesivo.

Esta característica permite que no haya un único máster en el bus sino que puede haber varios. Además, los equipos conectados al bus pueden tener distintas preferencias. Esto es muy útil especialmente aplicado al caso del coche que veíamos anteriormente ya que si la radio quiere enviar un mensaje a otra centralita a la vez que se acciona el freno ambas usarán el mismo bus de comunicación pero el mensaje de la radio se enviará más tarde ya que el freno tiene mayor preferencia.

 

Buses de comunicación

Transmisión de un bit recesivo seguido de uno dominante y otro recesivo en un bus CAN

 

Autor: ALEJANDRO MARTÍNEZ LÓPEZ.

Más artículos del autor para el blog de FdeT

Si quieres participar en el blog como colaborador en alguna de las secciones, envíanos un mail a info@fdet.es 

Grupo FdeT

 

 

Compartir:
Facebooktwittergoogle_pluslinkedin

Leave a Reply

A %d blogueros les gusta esto: