Universidad de Guanajuato. Balderas Corrales José Alberto.
1
Taller De Macatrónica II Enero-Abril 2014
Protocolos I2C, RS -232, RS-485, UART, CAN Balderas Corrales José Alberto DICIS División De Ingenierías Campus Irapuato-Salamanca Correo-e:
[email protected] Resumen-El presente trabajo trata de explicar varios puntos, entre los cuales se encuentran los protocolos I2C, RS232, RS-485, UART y CAN, además de su uso y aplicaciones en el ámbito cotidiano e industrial, los cuales tienen un conjunto de normas usadas por las computadoras y algunas reglas usadas para las redes inalámbricas. Palabras clave —Protocolo, conexiones, Puerto, I2C, Master, Esclavo, RS-232, comunicación, RS-485, UART, CAN
I.
INTRODUCCIÓN
En informática y telecomunicación, un protocolo de comunicaciones es un conjunto de reglas y normas que permiten que dos o más entidades de un sistema de comunicación se comuniquen entre ellos para transmitir información por medio de cualquier tipo de variación de una magnitud física. Se trata de las reglas o el estándar que define la sintaxis, semántica y sincronización de la comunicación, así como posibles métodos de recuperación de errores. Los protocolos pueden ser implementados por hardware, software, o una combinación de ambos. En el caso concreto de las computadoras, un protocolo de comunicación, también llamado en este caso protocolo de red, define la forma en la que los distintos mensajes o tramas de bit circulan en una red de computadoras. Los elementos básicos de un protocolo de comunicaciones son: un conjunto de símbolos llamados conjunto de caracteres, un conjunto de reglas para la secuencia y sincronización de los mensajes construidos a partir del conjunto de caracteres y los procedimientos para determinar cuándo ha ocurrido un error en la transmisión y como corregir el error. El conjunto de caracteres se formará de un subconjunto con significado para las personas (usualmente denominado como caracteres Optimización de ancho de banda para sistemas GSM. imprimibles) y otro subconjunto que transmite información de control (usualmente denominado caracteres de control). Hay una correspondencia entre cada carácter y los grupos de símbolos usados en el canal de transmisión, que es determinado por el código. Muchos códigos estándar con sus respectivas equivalencias de grupos de unos y ceros (bits) han sido definidos con el paso de los años. El conjunto de reglas a seguir por el emisor y el receptor propicia: que haya un significado con secuencias secuencias permitidas y a tiempo, entre los caracteres de control y los mensajes formados a partir de los símbolos. La detección de error y los procedimientos de corrección errores causados por factores fuera del control de la terminal en cada extremo.
División de Ingenierías Ca mpus Irapuato-Salamanca.
El protocolo de bajo nivel es básicamente la forma en que las señales se transmiten, transportando tanto datos como información y los procedimientos de control de uso del medio por los diferentes nodos. El protocolo de red determina el modo y organización de la información (tanto los datos como los controles) para su transmisión por el medio físico con el protocolo de bajo nivel.
II. DESARROLLO DE CONTENIDOS II.1. Protocolo I2C
I2C es un protocolo de comunicación serie diseñado por Philips que se utiliza esencialmente entre dispositivos que pertenecen al mismo circuito, por ejemplo, sensores con un microcontrolador. EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80’s. Su propósito
original fue el de proporcionar una manera fácil de conectar co nectar un CPU a los chips periféricos en un equipo de TV. Aunque las patentes de I2C ya han expirado, algunos vendedores utilizan los nombres TWI y TWSI para referirse a I2C. Es exactamente lo mismo.
II.1.1. Las características del bus I2C
Velocidad standard de 100Kbit/s (100kbaudios). Se puede cambiar al modo de alta velocidad (400Kbit/s) Configuración maestro/esclavo. La dirección del esclavo se configura con software Se necesitan solamente dos líneas, la de datos (SDA) y la de reloj (SCL). Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediante software. Habiendo permanentemente una relación Master/ Slave entre el micro y los dispositivos conectados
Universidad de Guanajuato. Balderas Corrales José Alberto.
El bus permite la conexión de varios Masters, ya que incluye un detector de colisiones. El protocolo de transferencia de datos y direcciones posibilita diseñar sistemas completamente definidos por software. Los comunicación siempre tiene la estructura siguiente: Transmisor: Byte de datos (8 Bits) o Receptor: Bit llamado ACK de o confirmación. SDA y SCL van a su pin correspondiente en cada dispositivo, de manera que todos quedan en paralelo. Las lineas SDA y SCL estan independientemente conectadas a dos resistores Pull-Up que se encargaran de que el valor lógico siempre sea alto a no ser que un dispositivo lo ponga a valor lógico bajo. Es una comunicación de tipo half duplex. Comunicación bidireccional por la misma linea pero no simultáneamente bidireccional.
II.1.2. Funcionamiento I2C: Como dijimos, las líneas SDA y SCL transportan información entre los dispositivos conectados al bus (ver: Figura 1). Cada dispositivo es reconocido por su código (dirección) y puede operar como transmisor o receptor de datos. Además, cada dispositivo puede ser considerado como Master o Slave. El Master es el dispositivo que inicia la transferencia en el bus y genera la señal de Clock. El Slave (esclavo) es el dispositivo direccionado. Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales, conectadas al positivo de la alimentación a través de las resistencias de pull-up. Cuando el bus está libre, ambas líneas están en nivel alto. La cantidad de dispositivos que se pueden conectar al bus está limitada, solamente, por la máxima capacidad permitida: 400 pF
2
II.1.3. Condiciones de START y STOP Antes de que se establezca un intercambio de datos entre el circuito Master y los Esclavos, el Master debe informar el comienzo de la comunicación (condición de Start): la línea SDA cae a cero mientras SCL permanece en nivel alto. A partir de este momento comienza la transferencia de datos. Una vez finalizada la comunicación se debe informar de esta situación (condición de Stop). La línea SDA pasa a nivel alto mientras SCL permanece en estado alto. Ver Figura 2.
II.1.4 Transferencia De Datos Cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra transferida contiene la dirección del Esclavo seleccionado. Luego el Master lee el estado de la línea SDA, si vale 0 (impuesto por el esclavo), el proceso de transferencia continúa. Si vale 1, indica que el circuito direccionado no valida la comunicación, entonces, el Maestro genera un bit de stop para liberar el bus I2C. Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2C. Al final de la transmisión, el Maestro genera la condición de Stop y libera el bus I2C, las líneas SDA y SCL pasan a estado alto.
II.1.5. Fallas En El Bus Ante un falla en el funcionamiento de alguno de los integrados conectados al bus y antes de probar cambiando CIs, tenemos que hacer algunas verificaciones. Como primera medida comprobamos el estado de las resistencias de pull up. Luego con una punta lógica verificamos que cuando el bus está inactivo, las dos líneas se encuentren en estado alto. A continuación, chequeamos que el Máster direccione alguno de los integrados, esta verificación también podemos hacerla con la punta lógica, pero tengamos en cuenta dos cosas: con la punta lógica solamente estamos detectando actividad en el bus, pero no podemos saber si se lleva a cabo satisfactoriamente. En segundo lugar, si hay más de un integrado conectado al bus, no podremos determinar cuál de ellos está siendo solicitado. II.2 Protocolo RS-232
Historia División de Ingenierías Ca mpus Irapuato-Salamanca.
Universidad de Guanajuato. Balderas Corrales José Alberto.
RS-232 fue definido en 1962 por la Asociación de la Industria Electrónica (conocida hoy como la Alianza de la Industria Electrónica). El control de la definición de estándares fue entregado a la Asociación de la Industria de Telecomunicaciones en 1988. Desde entonces, los documentos de normas relativas a la RS-232 se hace referencia por el código "TIA." El estándar actualmente se conoce como TIA-232-F. RS-432 es una versión más rápida de RS-232, pero no fue adoptado ampliamente.
Función Los estándares especifican el tipo de cable, el formato de conector y la frecuencia del pulso y los niveles de tensión para las comunicaciones entre las computadoras y los periféricos. Los módems e impresoras son ejemplos típicos de implementación de conexiones RS-232. El puerto serie RS-232C, presente en todos los ordenadores actuales, es la forma más comúnmente usada para realizar transmisiones de datos entre ordenadores. El RS-232C es un estándar que constituye la tercera revisión de la antigua norma RS-232, propuesta por la EIA (Asociaci¢n de Industrias Electrónicas), realizándose posteriormente un versión internacional por el CCITT, conocida como V.24. Las diferencias entre ambas son mínimas, por lo que a veces se habla indistintamente de V.24 y de RS-232C (incluso sin el sufijo "C"), refiriéndose siempre al mismo estándar. El RS-232C consiste en un conector tipo DB-25 de 25 pines, aunque es normal encontrar la versión de 9 pines DB-9, más barato e incluso más extendido para cierto tipo de periféricos (como el ratón serie del PC). En cualquier caso, los PCs no suelen emplear más de 9 pines en el conector DB-25. Las señales con las que trabaja este puerto serie son digitales, de +12V (0 lógico) y -12V (1 lógico), para la entrada y salida de datos, y a la inversa en las señales de control. El estado de reposo en la entrada y salida de datos es -12V. Dependiendo de la velocidad de transmisión empleada, es posible tener cables de hasta 15 metros. Cada pin puede ser de entrada o de salida, teniendo una función específica cada uno de ellos. Las más importantes son: Pin
Función
TXD RXD DTR DSR RTS CTS DCD
(Transmitir Datos) (Recibir Datos) (Terminal de Datos Listo) (Equipo de Datos Listo) (Solicitud de Envío) (Libre para Envío) (Detección de Portadora)
Las señales TXD, DTR y RTS son de salida, mientras que RXD, DSR, CTS y DCD son de entrada. La masa de referencia para todas las señales es SG (Tierra de Señal). Finalmente, existen otras señales como RI (Indicador de División de Ingenierías Ca mpus Irapuato-Salamanca.
3
Llamada), y otras poco comunes que no se explican en este artículo por rebasar el alcance del mismo. Numero
de Pin
En DB-25
En DB-9
1 2 3 4 5 6 7 8 15 17 20 22 24
1 3 2 7 8 6 5 1 4 9 -
Señal
TxD RxD RTS CTS DSR SG CD/DCD TxC(*) RxC(*) DTR RI RTxC(*)
Descripción
Masa chasis Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Signal Ground (Data) Carrier Detect Transmit Clock Receive Clock Data Terminal Ready Ring Indicator Transmit/Receive Clock
E/S
S E S E E E S E S E S
(*) = Normalmente no conectados en el DB-25
Conector DB 25
Conector DB 9
Figura 3. Tipos de conectores de 25 y 9
II.3. Pr otocolo RS-485
RS-485 o también conocido como EIA-485, que lleva el nombre del comité que lo convirtió en estándar en 1983. Es un estándar de comunicaciones en bus de la capa física del Modelo OSI. La interfaz RS485 ha sido desarrollada, de un modo análogo a la interfaz RS422, para la transmisión serial de datos a altas velocidades y a distancias grandes. En el sector de la automatización industrial la interfaz RS485 aún está muy extendida, pero está siendo desplazada lentamente por interfaces basadas en Ethernet. Mientras la RS422 sólo permite la conexión unidireccional de hasta 10 receptores en un emisor, la RS485 ha sido
Universidad de Guanajuato. Balderas Corrales José Alberto.
concebida como sistema de bus bidireccional con hasta 32 usuarios. Con los modernos Transceiver-ICs es posible conectar hasta 128 usuarios a un sistema de bus mediante la reducción de la carga que generan los nodos de bus. Físicamente las interfaces RS422 y RS485 varían poco, de modo que se puede utilizar los mismos módulos Transceiver para las dos interfaces. Dado que varios transmisores trabajan en una línea común, tiene que garantizarse con un protocolo que en todo momento esté activo como máximo un transmisor de datos. Los otros transmisores tienen que encontrarse en ese momento en estado ultraohmio.
4
Aunque RS-485 se puede transmitir con éxito el uso de varios tipos de medios de comunicación, que debe ser usado con el cableado comúnmente llamado "par trenzado". ¿Qué es el par trenzado, y por qué se usa? Como su nombre lo indica, un par trenzado es más que un par de hilos de igual longitud y trenzados entre sí. El uso de un transmisor RS-485 compatible con el alambre de par trenzado reduce dos principales fuentes de problemas para los diseñadores de alta velocidad de redes de larga distancia: radiado EMI y recibió EMI. II.3. 1. Características
Alambre
RS-485 está diseñado para ser un sistema equilibrado. En pocas palabras, esto significa que hay dos cables, que no sean de tierra, que se utilizan para transmitir la señal.
Interfaz diferencial Conexión multipunto Alimentación única de +5V Hasta 32 estaciones (ya existen interfaces que permiten conectar 256 estaciones) Velocidad máxima de 10 Mbit/s (a 12 metros) Longitud máxima de alcance de 1200 metros (a 100 kbit/s) Rango de bus de -7V a +12V II.3. 2. Aplicaciones
Figura 4. Un sistema de equilibrado utiliza dos cables, distintos de suelo, para transmitir datos.
El sistema se llama equilibrio, debido a que la señal en un cable es ideal exactamente lo contrario de la señal en el segundo alambre. En otras palabras, si un cable está transmitiendo un alto, el otro cable se transmite un bajo, y viceversa. Ver Figura 5.
Figura 5. Las señales de los dos cables de un sistema equilibrado son idealmente opuestas.
División de Ingenierías Ca mpus Irapuato-Salamanca.
SCSI -2 y SCSI-3 usan esta especificación para ejecutar la capa física. RS-485 se usa con frecuencia en las UARTs para comunicaciones de datos de poca velocidad en las cabinas de los aviones. Por ejemplo, algunas unidades de control del pasajero lo utilizan, equipos de monitoreo de sistemas fotovoltaicos. Requiere el cableado mínimo, y puede compartir el cableado entre varios asientos. Por lo tanto reduce el peso del sistema. RS-485 se utiliza en sistemas grandes de sonido, como los conciertos de música y las producciones de teatro, se usa software especial para controlar remotamente el equipo de sonido de una computadora, es utilizado más generalmente para los micrófonos. RS-485 también se utiliza en la automatización de los edificios pues el cableado simple del bus y la longitud de cable es larga por lo que son ideales para ensamblar los dispositivos que se encuentran alejados. RS-485 Tiene la mayor parte de su aplicación en las plantas de producción automatizadas.
Universidad de Guanajuato. Balderas Corrales José Alberto.
II.4. Protocolo UART
UART son las siglas de "Universal Asynchronous Receiver-Transmitter" (en español, Transmisor-Receptor Asíncrono Universal). Éste controla los puertos y dispositivos serie. Se encuentra integrado en la placa base o en la tarjeta adaptadora del dispositivo. Un UART dual, o DUART, combina dos UARTs en un solo chip. Existe un dispositivo electrónico encargado de generar la UART en cada puerto serie. La mayoría de los ordenadores modernos utilizan el chip UART 16550, que soporta velocidades de transmisión de hasta 921,6 Kbps (Kilobits por segundo). Las funciones principales de chip UART son de manejar las interrupciones de los dispositivos conectados al puerto serie y de convertir los datos en formato paralelo, transmitidos al bus de sistema, a datos en formato serie, para que puedan ser transmitidos a través de los puertos y viceversa. Transmisión y recepción de datos serie 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. El UART normalmente no genera directamente o recibe las señales externas entre los diferentes módulos del equipo. Usualmente se usan dispositivos de interfaz separados para convertir las señales de nivel lógico del UART hacia y desde los niveles de señalización externos.
5
Señaliza detección y supresión de errores (flags) y detección de direcciones Capacidad independiente de interrupciones para transmisión y recepción II.4.2. Inicialización y Reinicio
La inicialización o el reinicio ocurre cuando el bit SWRT=1 o cuando se produce PUC (Power Up Clear) que viene a ser al aplicarle energía a la tarjeta de desarrollo Ocurre luego que se setean los bits UTXIFGX, TXEFT Es importante destacar que los flags de transmisión y recepción URXEX y UTXEX no son alterados con SWRST=0, y liberan la USART de la operación II.4.3. Formato de caracteres
Los caracteres están agrupados de acuerdo al siguiente esquema
ST representa al bit de partida D0 a D6 son losbit de información D7 es 8vo bit de información que se habilita al setear CHAR=1 AD es el bit de direccion que se utiliza en el formato adress bit seteando MM=1 PA es el bit de paridad, se ocupa seteando PENA=1 SP es el 1er bit de stop SP es el 2do bit de stop se usa para SP=1 II.5. Protocolo CAN
II.4.1. Características De La UART
Datos de 7 u 8 bits con paridad par impar o sin paridad Registros de desplazamiento (“Shift register”) de
recepción y transmisión independientes Buffer de transmisión y recepción separados El bit menos significativo es el primero en transmitirse y recibirse Protocolos de comunicación definidos para sistemas multiprocesadores (address bit, built in, idle line) Capacidad para salir del modo de bajo consumo (dormido) a través de la recepción de un cambio de estado (detección de canto de partida) Tasa de transmisión de bits(baudios) programable
División de Ingenierías Ca mpus Irapuato-Salamanca.
II.5.1. Cómo Trabaja la Comunicación CAN
CAN es una red uno a uno. Esto significa que no hay un maestro que controle el acceso de lectura o escritura de datos en el bus por parte de los nodos individuales. Cuando un nodo CAN está listo para transmitir datos, verifica si el bus se encuentra ocupado, y después simplemente escribe un marco de CAN en la red. Los marcos de CAN transmitidos no contienen direcciones del nodo transmisor o de ninguno de los probables nodos receptores. Sólo se cuenta con un número de identificación único. Todos los nodos en la red reciben el marco, y dependiendo del número de ID cada nodo decide si aceptar o no el marco. Si varios nodos intentan transmitir un mensaje al bus al mismo tiempo, el nodo con la mayor prioridad (número de ID menor) automáticamente tendrá acceso al bus. Los nodos con menor prioridad deben esperar hasta que el bus vuelva a estar disponible antes de iniciar nuevamente su transmisión. De esta manera, es posible implementar redes CAN con comunicación determinística.
Universidad de Guanajuato. Balderas Corrales José Alberto.
CAN es un protocolo de comunicaciones serie que soporta control distribuido en tiempo real con un alto nivel de seguridad y multiplexación. El establecimiento de una red CAN para interconectar los dispositivos electrónicos internos de un vehículo tiene la finalidad de sustituir o eliminar el cableado. Las ECU, sensores, sistemas antideslizantes, etc. se conectan mediante una red CAN a velocidades de transferencia de datos de hasta 1 Mbps. De acuerdo al modelo de referencia OSI (Open Systems Interconnection, Modelo de interconexión de sistemas abiertos), la arquitectura de protocolos CAN incluye tres capas: física, de enlace de datos y aplicación, además de una capa especial para gestión y control del nodo llamada capa de supervisor.
Capa física: define los aspectos del medio físico para la transmisión de datos entre nodos de una red CAN, los más importantes son niveles de señal, representación, sincronización y tiempos en los que los bits se transfieren al bus. La especificación del protocolo CAN no define una capa física, sin embargo, los estándares ISO 11898 establecen las características que deben cumplir las aplicaciones para la transferencia en alta y baja velocidad. Capa de enlace de datos: define las tareas independientes del método de acceso al medio, además debido a que una red CAN brinda soporte para procesamiento en tiempo real a todos los sistemas que la integran, el intercambio de mensajes que demanda dicho procesamiento requiere de un sistema de transmisión a frecuencias altas y retrasos mínimos. En redes multimaestro, la técnica de acceso al medio es muy importante ya que todo nodo activo tiene los derechos para controlar la red y acaparar los recursos. Por lo tanto la capa de enlace de datos define el método de acceso al medio así como los tipos de tramas para el envío de mensajes
Cuando un nodo necesita enviar información a través de una red CAN, puede ocurrir que varios nodos intenten transmitir simultáneamente. CAN resuelve lo anterior al asignar prioridades mediante el identificador de cada mensaje, donde dicha asignación se realiza durante el diseño del sistema en forma de números binarios y no puede modificarse dinámicamente. El identificador con el menor número binario es el que tiene mayor prioridad. II.5.1. Aplicaciones de CAN
Es un bus de comunicaciones serial para aplicaciones de control en tiempo real, con una velocidad de comunicación de hasta 1 Mbit por segundo, y tiene excelente capacidad de detección y aislamiento de errores. Es decir, esta es la mejor y más nueva tecnología actual en los vehículos. De hecho, varios fabricantes de vehículos desde el 2003, División de Ingenierías Ca mpus Irapuato-Salamanca.
6
incluidos Toyota, Ford, Mazda, Mercedes Benz, BMW y otros ya tienen instalado este sistema. Del mismo modo que OBD 2 fue obligatorio para todos los vehículos desde 1996, el CAN Bus será de instalación obligatoria en todos los vehículos a partir de 2008 Este sistema emplea dos cables en los cuales viajan dos señales exactamente iguales en amplitud y frecuencia pero completamente inversas en voltaje los módulos con estos dos pulsos identifica el mensaje, pero también tiene opciones de mantener la red activa aunque falle uno de los cables de comunicación. REFERENCIAS [0]http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/1 32.248.52.100/734/A6.pdf?sequence=6 [1] http://www.comunidadelectronicos.com/articulos/i2c.htm [2] http://www.quadruino.com/guia-2/sensores/protocolo-i2c-twi [3] http://www.euskalnet.net/shizuka/rs232.htm [4] http://es.wikipedia.org/wiki/RS-485 [5]http://www.maximintegrated.com/app-notes/index.mvp/id/763 [6]http://es.wikipedia.org/wiki/Universal_Asynchronous_Receive r-Transmitter [7]http://www.ni.com/white-paper/2732/es/