I2C : Muchos sistemas electrónicos utilizan un bus I 2 C para las comunicaciones internas entre los dispositivos, tales como microprocesadores, microcontroladores, memorias, convertidores y otros dispositivos de control digital. Esta topología de bus depende de un valor correcto de la resistencia pull-ups para lograr comunicaciones fiables. Un valor incorrecto de estas resistencias puede provocar condiciones erróneas en el bus y fallas de transmisión también causados por el ruido o los cambios en la temperatura y voltajes de funcionamiento y por las variaciones entre dispositivos, estos valores también dependen de la longitud las líneas SDA -SCL y la velocidad de transmisión. I2 C es un bus síncrono de dos hilos con la línea SCL usada como un reloj de sincronismo, producido por el dispositivo maestro. La línea SDA se utiliza para la transferencia de datos bidireccional. La línea de datos se modifica mientras el reloj se encuentra en estados específicos, para indicar el inicio y el final de las transmisiones, y evitar las líneas adicionales.El bus I 2 C está construido alrededor de salidas de colector abierto, esto significa que solo puede dar valores en niveles bajos a través de un transistor a GND, como se muestra en la Figura 1. Esto permite una fácil administración sobre el control del bus, lo que permite la implementación de las comunicaciones bi-direccionales en una sola línea de datos y soporte de multi-master.
Como se muestra en la Figura 1, cada línea tiene una resistencia externa a Vdd, que proporciona el nivel lógico alto cuando la linea es liberada o inactiva.
Figura 1. Topología de bus I 2 C
Compatibilidad de voltaje en el bus I2C
Considerando lo anterior y teniendo en cuenta la figura 1, vemos que la limitante existente a la hora de usar el bus I2C radica en que el voltaje Vdd al cual están definidas las resistencias pull-ups debe ser compatible con todos los dispositivos a los cuales se desea comunicar, por lo tanto existen soluciones para ello consistente en la implementan de un circuito intermediario llamado «traductores de voltaje» como se observa en la figura 2. El cual permite usar un dispositivo que opere a un voltaje menor que los demás dispositivos, es necesario que los dispositivos ubicados del lado de la fuente «S» de los FET’s sean a menor voltaje que los del lado de drenaje puesto que debe existir un diferencial de potencial para que estos operen correctamente.
Figura 2. Traducción de voltaje con FET’s
También existen traductores de voltaje encapsulados como el TCA9406 Figura 3, que posee las lineas SDA-A/B y SCL-A/B, sus respectivos voltajes de operación VccA y VccB y un pin de habilitación «OE» .
Figura3. Traductor de voltaje TCA9406
Voltaje de alimentación indicado para pull-ups (Vdd)
El bus I 2 C requiere especificaciones lógicas que a modo general se define para un voltaje por debajo de V IL , o 30% de la tensión de alimentación, como un lógico bajo «0» y, del mismo modo, por encima de V IH o 70% de la tensión de alimentación, como un alto lógico, como se muestra en la Figura 4.
Un voltaje entre estos dos niveles conduce a un nivel lógico indefinido. En realidad puede variar entre los dispositivos, con temperaturas, voltajes, las fuentes de ruido y otros factores ambientales que influyen en los niveles lógicos.
Figura 4: niveles de tensión lógica de alta y baja.
Para no caer en la zona de incertidumbre se recomienda verificar en la hoja de datos del dispositivo los valores V IL y VHL. Por ejemplo analicemos un microcontrolador empleado como dispositivo maestro, Atmega32U4 (ver datasheet) operando con una alimentación de 5Vcc, como podemos ver en la figura 5, podemos observar sus características en cuanto a niveles lógicos, para el caso VIL el valor mínimo es de -0.5V y máximo de 0.2v Vcc-0.1v= 0.9ViL, y para VHL será minino de 0.2Vcc+0.9v= 1.9V y máximo de Vcc+0.5V= 5.5VHL.
Figura 5. Caracteristicas DC Atmega 32U4
Ahora vemos que aunque el dispositivo opere a un voltaje igual al de los dispositivos a comunicar, las resistencias pull-up’s pueden definirse a un voltaje menor tal como se aprecia en la figura 6. Puesto que xisten casos especiales en los que los dispositivos operan al mismo voltaje pero uno de ellos (generalmente el maestro) podría ser intercambiado, para ello es necesario tener en cuenta los niveles de voltaje aceptados por los dispositivos.
Figura 6, Adecuación de voltaje con traductor intermedio
UART: es un sistema de comunicacion de transmisión y recepción de datos de forma asincrona, es decir que tiene una linea de transmisión TX y otra linea de recepción RX figura 7 . El controlador del UART es el componente clave del subsistema de comunicaciones series de una computadora. El UART toma bytes de datos y transmite los bits individuales de forma secuencial. En el destino, un segundo UART reensambla los bits en bytes completos. La transmisión serie de la información digital (bits) a través de un cable único u otros medios es mucho más efectiva en cuanto a costo que la transmisión en paralelo a través de múltiples cables. Se utiliza un UART para convertir la información transmitida entre su forma secuencial y paralela en cada terminal de enlace. Cada UART contiene un registro de desplazamiento que es el método fundamental de conversión entre las forma serie y paralelo.
figura 7, esquema general UART
Adaptación de niveles de voltaje UART
existen diversas maneras de adaptar los niveles de voltajes adecuados entre dispositivos, acá algunos de ellos:
En la figura 8, podemos ver un arreglo de diodos y resistencia, Básicamente, las entrada RX tiene una resistencia de pull-up al voltaje de operación del dispositivo que brindará en nivel lógico adecuado, como el diodo esta polarizado inversamente el nivel logico «1» (5v) del dispositivo que transmite TX no se verá reflejado del lado RX, pero si el nivel lógico es «0» solo se flejara la cida de tensión del diodo es decir 0,7 V puesto que se polariza directamente.
En ambos dispositivos, las tensiones están en el rango adecuado para ser traducido como la lógica de alta y baja de las entradas MCU.
figura8, Usando diodos y resistencias pull-ups
También al igual que en la comunicación I2C es posible implementar un traductor integrado como en la figura 9.
Figura 9, usando traductor para UART
Finalmente en vista que la linea de transmisión no es de colector abierto, esto permite el uso de optoacopladores como en la figura 10. Donde el TX de cada dispositivo activa el led del acople que bien puede o no poseer referencia común (GND) según la aplicación.
Figura 10, Sistema optoaislado UART
Por : Mario García
Debe estar conectado para enviar un comentario.