Story Transcript
Comunicación Serie RS 232
CONTENIDO: Comunicación Serial, Tipos, Historia, Descripción del Estándar, Características, Conexiones y Parametros
5° B – ELECTRÓNICA 2010
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
Puerto RS 232 o Puerto Serie ¿Qué es la comunicación serial? Existen dos formas de intercambiar información binaria: la paralela y la serie. La comunicación paralela transmite todos los bits de un dato de manera simultánea, por lo tanto la velocidad de transferencia es rápida, sin embargo tiene la desventaja de utilizar una gran cantidad de líneas, por lo tanto se vuelve mas costoso y tiene las desventaja de atenuarse a grandes distancias, por la capacitancía entre conductores así como sus parámetros La comunicación serial es un protocolo muy común (no hay que confundirlo con el Bus Serial de Comunicación, o USB) para comunicación entre dispositivos que se incluye de manera estándar en prácticamente cualquier computadora. La mayoría de las computadoras incluyen dos puertos seriales RS-232. La comunicación serial es también un protocolo común utilizado por varios dispositivos para instrumentación; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Además, la comunicación serial puede ser utilizada para adquisición de datos si se usa en conjunto con un dispositivo remoto de muestreo. El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes de información un bit a la vez. Aun y cuando esto es más lento que la comunicación en paralelo, que permite la transmisión de un byte completo por vez, este método de comunicación es más sencillo y puede alcanzar mayores distancias. Por ejemplo, la especificación IEEE 488 para la comunicación en paralelo determina que el largo del cable para el equipo no puede ser mayor a 20 metros, con no más de 2 metros entre cualesquier dos dispositivos; por el otro lado, utilizando comunicación serial el largo del cable puede llegar a los 1200 metros. Típicamente, la comunicación serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisión es asincrónica, es posible enviar datos por un línea mientras se reciben datos por otra. Existen otras líneas disponibles para realizar handshaking, o intercambio de pulsos de sincronización, pero no son requeridas. Las características más importantes de la comunicación serial son la velocidad de transmisión, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las características sean iguales.
Tipos de Comunicaciones Seriales: Existen dos tipos de comunicaciones seriales: La sincrona y asíncrona En la comunicación Serial sincrona, se necesitan 2 líneas, una línea sobre la cual se transmitirán los datos y otra la cual contendrá los pulsos de reloj que indicaran cuando un dato es valido. Ejemplos: de este tipo de comunicación son los protocolos: • I2C (Inter Integrated Circuit)
2010
5º B – Electrónica
2
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
• SPI (Serial Peripherical Interface) Serial asíncrona No son necesarios los pulsos de reloj. La duración de cada bit esta determinada por la velocidad con la cual se realiza la transferencia de datos. La siguiente figura muestra la estructura de una carácter que se trasmite en forma serial asíncrona
Normalmente cuando no se realiza ninguna transferencia de datos, la línea del transmisor se encuentra en estado de Idle, esto quiere decir en un estado alto. Para iniciar la transmisión de datos, el transmisor coloca esta línea en bajo durante un determinado tiempo, a lo cual se le conoce como bit de arranque (Start bit) y a continuación empieza a transmitir en un intervalo de tiempo fijo, los bits correspondientes al dato, empezando siempre por el BIT menos significativo (LSB), y terminando con el BIT mas significativo. Si el receptor no esta sincronizado con el transmisor, este desconoce cuando se van a recibir los datos. Por lo tanto el transmisor y el receptor deberán tener los mismos parámetros de velocidad, paridad, numero de bits del dato transmitido y de BIT de parada. En circuitos digitales, cuyas distancias son relativamente cortas, se puede manejar transmisiones en niveles lógicos TTL (0-5V), pero cuando las distancias aumentan, estas señales tienden a distorsionarse debido al efecto capacitivo de los conductores y su resistencia eléctrica. El efecto se incrementa a medida que se incrementa la velocidad de la transmisión. Todo esto origina que los datos recibidos no sean igual a los datos transmitidos, por lo que no se puede permitir la transferencia de datos. Una de las soluciones mas lógicas, es aumentar los márgenes de voltaje con que se transmiten los datos, de tal manera que las perturbaciones por causa de la línea se puedan corregir.
Un poco de Historia En los años 60, cada fabricante usaba una interfaz diferente para comunicar un DTE (Data Terminal Equipment) y un DCE (Data Communications Equipment). Cables, conectores y niveles de voltaje eran diferentes e incompatibles, por lo tanto, la interconexión
2010
5º B – Electrónica
3
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
entre equipos de diferentes fabricantes requería el uso de convertidores de los niveles de voltaje y la fabricación de cables y conectores especiales. En 1969, el EIA junto con Bell Laboratories y otros fabricantes establecieron un estándar para la interfaz entre DTE's y DCE´s. El objetivo de este estándar era simplificar la interconexión de equipos fabricados por diferentes firmas. Este estándar llegó a ser el RS-232-C (Recommended Standard number 232, revision C from the Electronic Industry Association). Un estándar similar fue desarrollado en Europa por el CCITT (Comite Consultatif Internatinale de Telegraphie et Telephonie) conocido como V.24 (descripción funcional) y V.28 (especificaciones eléctricas). El RS-232-C fue adoptado por la mayor parte de fabricantes de terminales y equipamiento. En 1980 la creciente industria de las PC encontró el estándar RS-232-C barato y apropiado para conectar periféricos a la PC. El RS-232-C llego a ser rápidamente un estándar para conectar a la PC: impresoras, cintas de backup, terminales y otras PC’s. Como el estándar solamente soporta velocidades de transmisión hasta 20 kbps y distancias hasta 16 metros, se adoptaron nuevos estándares por la EIA. El RS449 (descripción mecánica) y RS423 (descripción eléctrica) son compatibles con el RS-232-C y se puede operar a velocidades de hasta 10 Mbps y alcanzar distancias de hasta 1200 Universidad de las Américas, Puebla Apéndice B: Estándar RS-232 metros. Sin embargo, la adopción de un nuevo estándar es un proceso largo y costoso. El RS-232-C esta muy expandido y por lo tanto le queda bastante vida.
¿Qué es RS-232? RS-232 (Estándar ANSI/EIA-232) es el conector serial hallado en las PCs IBM y compatibles. Es utilizado para una gran variedad de propósitos, como conectar un ratón, impresora o modem, así como instrumentación industrial. Gracias a las mejoras que se han ido desarrollando en las líneas de transmisión y en los cables, existen aplicaciones en las que se aumenta el desempeño de RS-232 en lo que respecta a la distancia y velocidad del estándar. RS-232 está limitado a comunicaciones de punto a punto entre los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede utilizar para comunicaciones seriales en distancias de hasta 50 pies.
Descripción del estándar El estándar RS-232-C describe una interfaz entre un DTE y un DCE que emplea un intercambio en serie de datos binarios. En el se definen características eléctricas, mecánicas, funcionales de la interfaz y modos de conexión comunes. Las características eléctricas incluyen parámetros tales como niveles de voltaje e impedancia del cable. La sección mecánica describe los pines. La descripción funcional define las funciones de las señales eléctricas que se usan.
Características eléctricas Los niveles de voltaje descritos en el estándar son los siguientes:
2010
5º B – Electrónica
4
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
Puede verse que los voltajes del emisor y el receptor son diferentes. Esta definición de los niveles de voltaje compensa las perdidas de voltaje a través del cable. Las señales son atenuadas y distorsionadas a lo largo del cable. Este efecto es debido en gran parte a la capacidad del cable. En el estándar la capacidad máxima es de 2500 pf. La capacidad de un metro de cable es normalmente de 130 pf. Por lo tanto, la longitud máxima del cable esta limitada a unos 17 metros. Sin embargo, esta es una longitud nominal definida en el Universidad de las Américas, Puebla Apéndice B: Estándar RS-232 estándar y es posible llegar hasta los 30 metros con cables de baja capacidad o utilizando velocidades de transmisión bajas y mecanismos de corrección.
Conexiones (Desde el DTE) En la siguiente tabla se muestran las señales RS-232 más comunes según los pines asignados:
2010
5º B – Electrónica
5
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
1 -------------------------------Data Carrier Detect 2 -------------------------------Receive Data
CD RD or
3 -------------------------------Transmitted Data
TX or
RX TD 4 -------------------------------Data Terminal Ready DTR 5 ------------------------------ Signal Ground GND 6 ------------------------------ Data Set Ready DSR 7 ------------------------------ Request To Send RTS 8 ------------------------------ Clear To Send CTS 9 ------------------------------ Ring Indicator
RI
Donde:
Pin Función TXD (Transmitir Datos) RXD (Recibir Datos) DTR (Terminal de Datos Listo) DSR (Equipo de Datos Listo) RTS (Solicitud de Envío) CTS (Libre para Envío) DCD (Detección de Portadora)
Parametros de la transmicion RS232 Velocidad de transmisión (baud rate): Indica el número de bits por segundo que se transfieren, y se mide en baudios (bauds). Por ejemplo, 300 baudios representa 300 bits por segundo. Cuando se hace referencia a los ciclos de reloj se está hablando de la velocidad de transmisión. Por ejemplo, si el protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj está corriendo a 4800 Hz, lo que significa que el puerto serial está muestreando las líneas de transmisión a 4800 Hz. Las velocidades de transmisión más comunes para las lineas telefónicas son de 14400, 28800, y 33600. Es posible tener velocidades más altas, pero se reduciría la distancia máxima posible entre los dispositivos. Las altas velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro, como es el caso de dispositivos GPIB.
2010
5º B – Electrónica
6
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
Bits de datos: Se refiere a la cantidad de bits en la transmisión. Cuando la computadora envía un paquete de información, el tamaño de ese paquete no necesariamente será de 8 bits. Las cantidades más comunes de bits por paquete son 5, 7 y 8 bits. El número de bits que se envía depende en el tipo de información que se transfiere. Por ejemplo, el ASCII estándar tiene un rango de 0 a 127, es decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo que utiliza 8 bits. Si el tipo de datos que se está transfiriendo es texto simple (ASCII estándar), entonces es suficiente con utilizar 7 bits por paquete para la comunicación. Un paquete se refiere a una transferencia de byte, incluyendo los bits de inicio/parada, bits de datos, y paridad. Debido a que el número actual de bits depende en el protocolo que se seleccione, el término paquete se usar para referirse a todos los casos. Bits de parada: Usado para indicar el fin de la comunicación de un solo paquete. Los valores típicos son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la información a través de las líneas de comunicación y que cada dispositivo tiene su propio reloj, es posible que los dos dispositivos no estén sincronizados. Por lo tanto, los bits de parada no sólo indican el fin de la transmisión sino además dan un margen de tolerancia para esa diferencia de los relojes. Mientras más bits de parada se usen, mayor será la tolerancia a la sincronía de los relojes, sin embargo la transmisión será más lenta. Paridad: Es una forma sencilla de verificar si hay errores en la transmisión serial. Existen cuatro tipos de paridad: par, impar, marcada y espaciada. La opción de no usar paridad alguna también está disponible. Para paridad par e impar, el puerto serial fijará el bit de paridad (el último bit después de los bits de datos) a un valor para asegurarse que la transmisión tenga un número par o impar de bits en estado alto lógico. Por ejemplo, si la información a transmitir es 011 y la paridad es par, el bit de paridad sería 0 para mantener el número de bits en estado alto lógico como par. Si la paridad seleccionada fuera impar, entonces el bit de paridad sería 1, para tener 3 bits en estado alto lógico. La paridad marcada y espaciada en realidad no verifican el estado de los bits de datos; simplemente fija el bit de paridad en estado lógico alto para la marcada, y en estado lógico bajo para la espaciada. Esto permite al dispositivo receptor conocer de antemano el estado de un bit, lo que serviría para determinar si hay ruido que esté afectando de manera negativa la transmisión de los datos, o si los relojes de los dispositivos no están sincronizados.
Qué es handshaking (o intercambio de pulsos de sincronización) El método de comunicación usado por RS-232 requiere de una conexión muy simple, utilizando sólo tres líneas: Tx, Rx, y GND. Sin embargo, para que los datos puedan ser transmitidos correctamente ambos extremos deben estar sincronizados a la misma velocidad. Aun y cuando este método es más que suficiente para la mayoría de las aplicaciones, es limitado en su respuesta a posibles problemas que puedan surgir durante la comunicación; por ejemplo, si el receptor se comienza a sobrecargar de información. Es en estos casos cuando el intercambio de pulsos de sincronización, o handshaking, es útil. En esta sección se describirán brevemente las tres formas más populares de handshaking con RS-232: handshaking for software, handshaking por hardware, y XModem. Para entender un poco mejor podríamos decir que el handshaking (Apretón de manos) es la coordinación de operaciones entre la parte transmisor y la receptora Tipos de Handshaking Handshaking por software: Ésta será la primera forma de handshaking que discutiremos. Esta forma de sincronización utiliza bytes de datos como caracteres de control, de manera similar a como GPIB utiliza las cadenas de caracteres como comandos. Las líneas necesarias para la comunicación siguen siendo Tx, Rx, y GND, ya que los caracteres de control se envían a través de las líneas de transmisión como si fueran datos. La función SetXMode permite al usuario habilitar o deshabilitar el uso de dos caracteres de control: XON y XOFF. Estos caracteres son enviados por el receptor para pausar al transmisor durante la comunicación.
2010
5º B – Electrónica
7
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
A manera de ejemplo, asúmase que el transmisor comienza a enviar datos a alta velocidad. Durante la transmisión, el receptor se da cuenta que el búfer de entrada se está llenando debido a que el CPU está ocupado con otras tareas. Para pausar temporalmente la transmisión, el receptor envía XOFF (cuyo valor es típicamente 19 decimal, o 13 hexadecimal) hasta que el búfer se vacíe. Una vez que el receptor está preparado para recibir más datos envía XON (cuyo valor es típicamente 17 decimal, u 11 hexadecimal) para continuar la comunicación. LabWindows enviará un XOFF cuando el búfer de entrada se encuentre a la mitad de su capacidad. Además, en caso que la transmisión inicial de XOFF haya fallado, LabWindows enviará de nuevo un XOFF cuando el búfer alcance un 75% y 90% de su capacidad. Para que funcione correctamente, es necesario que el transmisor esté utilizando el mismo protocolo. La mayor desventaja de este método es además lo más importante a considerar: los números decimales 17 y 19 son ahora los límites para la transmisión. Cuando se transmite en ASCII, esto no importa mucho ya que estos valores no representan caracter alguno. Sin embargo, si la transmisión de datos es en binario, lo más probable es que estos valores sean transmitidos como datos regulares y falle la comunicación. Handshaking por hardware: El segundo método de handshaking utiliza líneas de hardware. De manera similar a las líneas Tx y Rx, las líneas RTS/CTS y DTR/DSR trabajan de manera conjunta siendo un par la entrada y el otro par la salida. El primer par de líneas es RTS (por sus siglas en inglés, Request to Send) y CTS (Clear to Send). Cuando el receptor está listo para recibir datos, cambia la línea RTS a estado alto; este valor será leído por el transmisor en la línea CTS, indicando que está libre para enviar datos. El siguiente par de líneas es DTR (por sus siglas en inglés, Data Terminal Ready) y DSR (Data Set Ready). Estas líneas se utilizan principalmente para comunicación por modem, permiten al puerto serial y modem indicarse mutuamente su estado. Por ejemplo, cuando el modem se encuentra preparado para que la PC envíe datos, cambia la línea DTR a estado alto indicando que se ha realizado una conexión por la línea de teléfono. Este valor se lee a través de la línea DSR y la PC comienza a enviar datos. Como regla general, las líneas DTR/DSR se utilizan para indicar que el sistema está listo para la comunicación, mientras que las líneas RTS/CTS se utilizan para paquetes individuales de datos.
Características eléctricas de cada circuito Los siguientes criterios son los que se aplican a las características eléctricas de cada una de las líneas:
A) La magnitud de un voltaje en circuito abierto no excederá los 25 V. B) El conductor será apto para soportar un corto con cualquier otra línea en el cable sin daño a sí mismo o a otro equipamiento, y la corriente de cortocircuito no excederá los 0,5 A. C) Las señales se considerarán en el estado de MARCA, (nivel lógico “1”), cuando el voltaje sea más negativo que - 3 V con respecto a la línea de Signal Ground. Las señales se considerarán en el estado de ESPACIO, (nivel lógico ”0”), cuando el voltaje sea más positivo que +3 V con respecto a la línea Signal Ground. La gama de voltajes entre -3 V y +3 V se define como la región de transición, donde la condición de señal no está definida. D) La impedancia de carga tendrá una resistencia a DC de menos de 7000 Ω al medir con un voltaje aplicado de entre 3 a 25 V pero mayor de 3000 O cuando se mida con un voltaje de menos de 25 V. F) Cuando la resistencia de carga del terminador encuentra los requerimientos de la regla 4 anteriormente dicha, y el voltaje del terminador de circuito abierto está a 0 V, la magnitud del potencial de ese circuito con respecto a Signal Ground estará en el rango de 5 a 15 V. G) El driver de la interfaz mantendrá un voltaje entre -5 a –15 V relativos a la señal de Signal Ground para representar una condición de MARCA. El mismo driver mantendrá un
2010
5º B – Electrónica
8
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
voltaje de entre 5 V a 15 V relativos a Signal Ground para simbolizar una señal de ESPACIO. Obsérvese que esta regla junto con la Regla 3, permite 2 V de margen de ruido. En la práctica, se utilizan –12 y 12 V respectivamente. H) El driver cambiará el voltaje de salida hasta que no se excedan 30 V/µs, pero el tiempo requerido a la señal para pasar de –3 V a +3 V de la región de transición no podrá exceder 1 ms, o el 4% del tiempo de un bit. I) La desviación de capacitancia del terminador no excederá los 2500 pF, incluyendo la capacitancia del cable. Obsérvese que cuando se está usando un cable normal con una capacitancia de 40 a 50 pF/Pie de longitud, esto limita la longitud de cable a un máximo de 50 Pies, (15 m). Una capacitancia del cable inferior permitiría recorridos de cable más largos. J) La impedancia del driver del circuito estando apagado deberá ser mayor que 300 Ω. Existen en el mercado dos circuitos integrados disponibles, (los chips 1488 y 1489) los cuales implementan dos drivers y receptores TTL, (4 por chip), para una RS-232 de forma compatible con las reglas anteriores
El puerto serie en el PC El ordenador controla el puerto serie mediante un circuito integrado especifico, llamado UART (Transmisor-Receptor-Asíncrono Universal). Normalmente se utilizan los siguientes modelos de este chip: 8250 (bastante antiguo, con fallos, solo llega a 9600 baudios), 16450 (versión corregida del 8250, llega hasta 115.200 baudios) y 16550A (con buffers de E/S). A partir de la gama Pentium, la circuiteria UART de las placa base son todas de alta velocidad, es decir UART 16550A. De hecho, la mayoría de los módems conectables a puerto serie necesitan dicho tipo de UART, incluso algunos juegos para jugar en red a través del puerto serie necesitan de este tipo de puerto serie. Por eso hay veces que un 486 no se comunica con la suficiente velocidad con un PC Pentium... Los portátiles suelen llevar otros chips: 82510 (con buffer especial, emula al 16450) o el 8251 (no es compatible). Para controlar al puerto serie, la CPU emplea direcciones de puertos de E/S y líneas de interrupción (IRQ). En el AT-286 se eligieron las direcciones 3F8h (o 0x3f8) e IRQ 4 para el COM1, y 2F8h e IRQ 3 para el COM2. El estándar del PC llega hasta aquí, por lo que al añadir posteriormente otros puertos serie, se eligieron las direcciones 3E8 y 2E8 para COM3-COM4, pero las IRQ no están especificadas. Cada usuario debe elegirlas de acuerdo a las que tenga libres o el uso que vaya a hacer de los puertos serie (por ejemplo, no importa compartir una misma IRQ en dos puertos siempre que no se usen conjuntamente, ya que en caso contrario puede haber problemas). Es por ello que últimamente, con el auge de las comunicaciones, los fabricantes de PCs incluyan un puerto especial PS/2 para el ratón, dejando así libre un puerto serie. Mediante los puertos de E/S se pueden intercambiar datos, mientras que las IRQ producen una interrupción para indicar a la CPU que ha ocurrido un evento (por ejemplo, que ha llegado un dato, o que ha cambiado el estado de algunas señales de entrada). La CPU debe responder a estas interrupciones lo mas rápido posible, para que de tiempo a recoger el dato antes de que el siguiente lo sobrescriba. Sin embargo, las
2010
5º B – Electrónica
9
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
UART 16550A incluyen unos buffers de tipo FIFO, dos de 16 bytes (para recepción y transmisión), donde se pueden guardar varios datos antes de que la CPU los recoja. Esto también disminuye el numero de interrupciones por segundo generadas por el puerto serie. El RS-232 puede transmitir los datos en grupos de 5, 6, 7 u 8 bits, a unas velocidades determinadas (normalmente, 9600 bits por segundo o mas). Después de la transmisión de los datos, le sigue un bit opcional de paridad (indica si el numero de bits transmitidos es par o impar, para detectar fallos), y después 1 o 2 bits de Stop. Normalmente, el protocolo utilizado ser 8N1 (que significa, 8 bits de datos, sin paridad y con 1 bit de Stop). Una vez que ha comenzado la transmisión de un dato, los bits tienen que llegar uno detrás de otro a una velocidad constante y en determinados instantes de tiempo. Por eso se dice que el RS-232 es asíncrono por caracter y sincrono por bit. Los pines que portan los datos son RXD y TXD. Las demás se encargan de otros trabajos: DTR indica que el ordenador esta encendido, DSR que el aparato conectado a dicho puerto esta encendido, RTS que el ordenador puede recibir datos (porque no esta ocupado), CTS que el aparato conectado puede recibir datos, y DCD detecta que existe una comunicación, presencia de datos. Tanto el aparato a conectar como el ordenador (o el programa terminal) tienen que usar el mismo protocolo serie para comunicarse entre si. Puesto que el estándar RS-232 no permite indicar en que modo se esta trabajando, es el usuario quien tiene que decidirlo y configurar ambas partes. Como ya se ha visto, los parámetros que hay que configurar son: protocolo serie (8N1), velocidad del puerto serie, y protocolo de control de flujo. Este ultimo puede ser por hardware (el que ya hemos visto, el handshaking RTS/CTS) o bien por software (XON/XOFF, el cual no es muy recomendable ya que no se pueden realizar transferencias binarias). La velocidad del puerto serie no tiene por que ser la misma que la de transmisión de los datos, de hecho debe ser superior. Por ejemplo, para transmisiones de 1200 baudios es recomendable usar 9600, y para 9600 baudios se pueden usar 38400 (o 19200). Este es el diagrama de transmisión de un dato con formato 8N1. El receptor indica al emisor que puede enviarle datos activando la salida RTS. El emisor envía un bit de START (nivel alto) antes de los datos, y un bit de STOP (nivel bajo) al final de estos. _____________________________________ Emisor ===== Receptor ____________________________________ CTS RXD START STOP _____________________________________
2010
5º B – Electrónica
10
E.E.T Nº 460 “Guillermo Lehmann” Departamento de Electrónica
HIMASE
2010
5º B – Electrónica
11