Estándar de comunicaciones RS-232C (O Cómo funciona un puerto serie...)
El
estándar RS-232C
El puerto serie RS-232C, presente en todos los ordenadores actuales, es la forma mas
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, mas barato e incluso mas extendido
para cierto tipo de periféricos (como el ratón serie del PC). En cualquier caso, los PCs no suelen emplear mas 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 especifica cada uno de ellos. Las mas
importantes son:
| 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) |
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 Llamada), y otras poco comunes que no se explican en este artículo por rebasar el alcance del mismo.
| Numero | de Pin | Señal | Descripción | E/S |
| En DB-25 | En DB-9 | |||
| 1 | 1 | - | Masa chasis | - |
| 2 | 3 | TxD | Transmit Data | S |
| 3 | 2 | RxD | Receive Data | E |
| 4 | 7 | RTS | Request To Send | S |
| 5 | 8 | CTS | Clear To Send | E |
| 6 | 6 | DSR | Data Set Ready | E |
| 7 | 5 | SG | Signal Ground | - |
| 8 | 1 | CD/DCD | (Data) Carrier Detect | E |
| 15 | - | TxC(*) | Transmit Clock | S |
| 17 | - | RxC(*) | Receive Clock | E |
| 20 | 4 | DTR | Data Terminal Ready | S |
| 22 | 9 | RI | Ring Indicator | E |
| 24 | - | RTxC(*) | Transmit/Receive Clock | S |
(*) = Normalmente no conectados en el DB-25
| Conector DB 25 |
Conector DB 9 |
![]() |
![]() |
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 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.
|
_____________________________________ ____________________________________ |
Bueno, espero que con esto te quede claro como funciona un puerto serie. He creído necesario exponer esta información ya que tanto para interconectar PCs por el puerto serie como para construir el cable del Nokia 5110 al PC es muy útil conocer el tipo de señales que maneja un puerto serie.