Sep 012013

 

Para establecer la comunicación con los distintos periféricos que podríamos utilizar en conjunto con el microcontrolador (sensores, memorias externas, puertos, etc). En esta página daremos una pequeña introducción a los buses seriales más conocidos. Cuando hablemos de interfaces 2-wire o 3-wire nos referiremos al número de lineas de control. Adicionalmente a estas líneas de control generalmente necesitaremos una tierra común, la cual puede ser el plano de tierra del circuito impreso (PCB) o un cable distinto si comunicamos 2 tarjetas alimentadas en forma independiente.

Los buses seriales son ampliamente utilizados para comunicar microcontroladores con memorias EEPROM, conversores A/D y muchos otros periféricos. Los sistemas de buses seriales también son ampliamente utilizados para implementar buses de control dentro de equipos como televisores, equipos de música y teléfonos celulares.

La mayor ventaja de utilizar buses seriales es el pequeño número de cables necesarios para establecer la comunicación. La mayor desventaja es la compensación entre la velocidad de comunicación y el número de líneas que utilizaremos. Los procesadores puede gastar mucho tiempo en la comunicación con un dispositivo serial, en consecuencia es difícil encontrar dispositivos con tasas de transferencias mayores a 500kbps.

El Bus I2C

El I2C (Inter Integrated Circuits) es un bus de comunicaciones serial síncrono de dos líneas que fue originalmente desarrollado por Philips Semiconductors (ahora nxp semiconductors) desde los inicios de los ‘80. Hoy es un estándar aceptado y respaldado por los fabricantes de dispositivos semiconductores.

El bus I2C permite la comunicación entre múltiples dispositivos (en teoría más de 1000), todos conectados paralelamente a las dos líneas. Las transferencias de datos siempre se realizan entre dos dispositivos a la vez y en una relación maestro – esclavo.

La ventaja de este bus es que sólo necesita de 2 lineas (clock y data) para una comunicación full duplex entre multiples dispositivos. La interfaz típicamente corre a bajas velocidades (100kHz a 400khz) Con I2C, cada dispositivo en el bus tiene una dirección de memoria única. El dispositivo puede trabajar como receptor y/o transmisor dependiendo de como haya sido configurado.

El bus I2C fue implementado para maximizar la eficiencia del hardware y la simplicidad del circuito. La interfaz I2C es una simple interfaz maestro/esclavo. Como se mencionó anteriormente la simplicidad del bus radica en el diseño de 2 cables (SDA y SCL) y el formato del protocolo. La comunicación bidireccional se ve facilitada ya que las líneas tienen solo dos estados; active-low o passive-high. El protocolo del bus I2C soporta detección de colisiones, sincronización de reloj y hand-shaking para multiples dispositivos conectados en el bus. El reloj es siempre generado por la unidad maestra, pero el esclavo puede mantener la línea abajo para generar un estado de espera. En la mayoría de los sistemas en donde se utilizan microcontroladores, éste es el maestro y los dispositivos externos son los esclavos.

El máximo número de unidades que pueden conectarse en un bus I2C está definido por la máxima capacitancia de la línea; 400pF, y el límite de 16k para la dirección del dispositivo; la capacitancia típica de un dispositivo es de 10pF. El protocolo I2C tiene 127 direcciones disponibles. La visión original fue asignar direcciones de acuerdo a la funcionalidad del dispositivo, pero cuando Philips comenzó a vender microcontroladores con I2C, la dirección podía ser programada, eliminando la necesidad de que Philips asignara una dirección válida.

El dispositivo que controla la transferencia controlando el reloj es llamado maestro y el dispositivo que es controlado por el maestro es llamado esclavo. El maestro puede transmitir o recibir señales desde o hacia un esclavo o controlar el reloj para que dos esclavos puedan comunicarse entre si. El bus I2C soporta más de un maestro conectado al mismo bus.

Para comenzar la comunicación el dispositivo maestro (típicamente un microcontrolador) pone en el bus la dirección del dispositivo con el que se quiere comunicar. Todos los dispositivos monitorean el bus para determinar si el maestro esta enviando su dirección. Solo el dispositivo con la dirección correcta puede comunicarse con el maestro.

El dispositivo maestro I2C es generalmente implementado como un controlador independiente el cual está integrado en un microcontrolador (implementación por hardware). También se puede implementar por software programandolo en un microcontrolador. Ambas opciones son perfectamente posibles en un bus típico, pero los sistemas multi-master son generalmente implementados en hardware ya que es muy dificultoso controlar el timing del bus por software.

Los datos pueden ser transferidos a una velocidad que supera los 100kbps en el modo standard y sobre los 400kbps en el modo Fast, y sobre 3.4Mbps en el modo High Speed. En el modo Standard se utilizan 7-bit para la direccionar los dispositivos en los otros modos los dispositivos esclavos pueden utilizar 7 o 10bits.

Bus I2C

Bus I2C

Lo bueno de este bus como se aprecia en la imagen, es que requiere sólo 4 pines para hacer trabajar los periféricos:

  • Vcc (+5V)
  • GND
  • SDA (TX Data)
  • SCL (RX Data)

Bus SPI

El bus SPI es una interfaz serial 4-wire utilizada por muchos microprocesadores y chips perifericos. El Serial Peripheral Interface (SPI) es la forma standard de transmitir datos asincornos en microprocesadores Motorola. Provee soporte para redes de bajo y medio ancho de banda (1 Megabaud) entre aquellos dispositivos que soportan el protocolo.

El bus SPI es basicamente una interfaz asíncrona simple para conectar dispositivos externos de baja velocidad usando una cantidad mínima de cables. Este bus fue definido por Motorola en la línea de microcontroladores MC68HCxx. Un reloj asíncrono pone datos seriales desde y hacia el microcontrolador en bloques de 8 bits. El SPI es típicamente utilizado en dispositivos mobiles.

Este bus es también del tipo maestro/esclavo. Cuando dos dispositivos se comunican, uno será el maestro y el otro el esclavo. El maestro maneja el reloj. Cuando se utiliza SPI, los datos son simultaneamente transmitidos y recibidos esto establece una comunicación full-duplex.
Los nombres que Motorola asignó a las señales son los siguientes:

  • SCLK Para el reloj, el cual es siempre manejado por el dispositivo maestro
  • MISO Master In Slave Out data.
  • MOSI Master Out Slave In data.
  • CS Chip Select Permite seleccionar distintos dispositivos conectados a un mismo bus. Cada dispositivo conectado al bus necesita su propia señal CS. Por ejemplo si se tienen 10 dispositivos conectados al mismo bus, entonces es necesario utilizar 10 líneas de CS distintas, además de las líneas compartidas del reloj SCLK y las de datos MISO y MOSI.
Bus SPI

Bus SPI

 

 

 

 

 

 

Microwire

Microwire es una interfaz serial standard definida por National Instruments. El protocolo Microwire es esencialmente un subconjunto del bus SPI

Maxim 3-Wire

La interfaz Maxim 3-wire se puede encontrar en dispositivos como el DS1620 y algunos otros IC’s de Maxim. Los datos que fluyen desde y hacia el DS1620 son multiplexados en solo una línea (DQ) mientras que en SPI se utilizan 2 líneas distintas(MISO y MOSI).

Maxim/Dallas 1-Wire

El bus 1-wire fue desarrollado por Dallas/Maxim. Este permite utilizar solo 1 cable con la señal la cual lleva tanto los datos como la alimentación esto permite reducir los costos de los dispositivos y simplificar la transferencia de datos. Un solo cable es necesario adicionalmente de la tierra del circuito. Una red típica es construida utilizando un cable para alimentación y datos y una línea de tierra. El sistema es sensible al timing de las señales para su correcta operación.



Contenido relacionado




 Deja un Comentario

(Requerido)

(Requerido)