Puerto serial
En computación, un puerto serial es una interfaz de comunicación serial a través de la cual la información se transfiere hacia adentro o hacia afuera secuencialmente, un bit a la vez. Esto contrasta con un puerto paralelo, que comunica múltiples bits simultáneamente en paralelo. A lo largo de la mayor parte de la historia de las computadoras personales, los datos se han transferido a través de puertos seriales a dispositivos como módems, terminales, varios periféricos y directamente entre computadoras.
Si bien las interfaces como Ethernet, FireWire y USB también envían datos como un flujo en serie, el término puerto en serie generalmente denota hardware compatible con RS-232 o un estándar relacionado, como RS-485 o RS-422.
Las computadoras personales (PC) de consumo modernas han reemplazado en gran medida los puertos serie con estándares de mayor velocidad, principalmente USB. Sin embargo, los puertos seriales todavía se usan con frecuencia en aplicaciones que exigen interfaces simples y de baja velocidad, como sistemas de automatización industrial, instrumentos científicos, sistemas de punto de venta y algunos productos industriales y de consumo.
Los servidores pueden usar un puerto serie como consola de control para el diagnóstico, mientras que el hardware de red (como enrutadores y conmutadores) suele usar puertos de consola serie para la configuración, el diagnóstico y el acceso de mantenimiento de emergencia. Para interactuar con estos y otros dispositivos, los convertidores de USB a serie pueden agregar rápida y fácilmente un puerto serie a una PC moderna.
Hardware
Los dispositivos modernos usan un circuito integrado llamado UART para implementar un puerto serial. Este IC convierte los caracteres hacia y desde la forma en serie asíncrona, implementando la temporización y el encuadre de los datos especificados por el protocolo en serie en el hardware. La PC de IBM implementa sus puertos seriales, cuando están presentes, con uno o más UART.
Los sistemas de muy bajo costo, como algunas de las primeras computadoras domésticas, usaban la CPU para enviar los datos a través de un pin de salida, usando la técnica de golpes de bits. Estas primeras computadoras domésticas a menudo tenían puertos seriales propietarios con pines y niveles de voltaje incompatibles con RS-232.
Antes de que la integración a gran escala (LSI) hiciera que los UART fueran comunes, los puertos serie se usaban comúnmente en mainframes y minicomputadoras, que tenían múltiples circuitos integrados a pequeña escala para implementar registros de desplazamiento, puertas lógicas, contadores y toda la otra lógica necesaria. A medida que las PC evolucionaron, los puertos seriales se incluyeron en el chip Super I/O y luego en el conjunto de chips.
DTE y DCE
Las señales individuales en un puerto serie son unidireccionales y cuando se conectan dos dispositivos, las salidas de un dispositivo deben conectarse a las entradas del otro. Los dispositivos se dividen en dos categorías: equipo terminal de datos (DTE) y equipo de terminación de circuito de datos (DCE). Una línea que es una salida en un dispositivo DTE es una entrada en un dispositivo DCE y viceversa, por lo que un dispositivo DCE se puede conectar a un dispositivo DTE con un cable directo, en el que cada pin en un extremo va al mismo numerado. pasador en el otro extremo.
Convencionalmente, las computadoras y los terminales son DTE, mientras que los periféricos, como los módems, son DCE. Si es necesario conectar dos dispositivos DTE (o DCE) entre sí, se debe utilizar un cable con líneas TX y RX invertidas, conocido como cable de módem cruzado, transpuesto o nulo.
Género
Por lo general, los conectores de puerto serie tienen género, y solo permiten que los conectores se acoplen con un conector del género opuesto. Con conectores D-subminiatura, los conectores macho tienen pines que sobresalen y los conectores hembra tienen enchufes redondos correspondientes. Cualquier tipo de conector se puede montar en un equipo o en un panel; o terminar un cable.
Es probable que los conectores montados en DTE sean macho y los montados en DCE probablemente sean hembra (siendo los conectores de cable opuestos). Sin embargo, esto está lejos de ser universal; por ejemplo, la mayoría de las impresoras seriales tienen un conector DB25 hembra, pero son DTE. En esta circunstancia, se pueden usar los conectores de género apropiado en el cable o un cambiador de género para corregir la falta de coincidencia.
Conectores
El único conector especificado en el estándar RS-232 original era el D-subminiatura de 25 pines; sin embargo, se han utilizado muchos otros conectores para ahorrar dinero o espacio físico, entre otras razones. En particular, dado que muchos dispositivos no usan todas las 20 señales definidas por el estándar, a menudo se usan conectores con menos pines. Si bien a continuación se muestran ejemplos específicos, se han utilizado muchos otros conectores para las conexiones RS-232.
La mayoría de las PC compatibles con IBM han utilizado el conector DE-9 de 9 pines desde la opción del adaptador serie/paralelo para el PC-AT, donde el conector de 9 pines permitía que un puerto serie y paralelo encajaran en el mismo tarjeta. Este conector ha sido estandarizado para RS-232 como TIA-574.
Algunos dispositivos electrónicos miniaturizados, en particular las calculadoras gráficas y los equipos portátiles de radioaficionados y bidireccionales, tienen puertos serie que usan un conector telefónico, generalmente los conectores más pequeños de 2,5 o 3,5 mm y la interfaz más básica de 3 cables: transmisión, recepción y tierra
Los conectores 8P8C también se utilizan en muchos dispositivos. El estándar EIA/TIA-561 define un pinout usando este conector, mientras que el cable transpuesto (o estándar Yost) se usa comúnmente en computadoras Unix y dispositivos de red, como equipos de Cisco Systems.
Muchos modelos de Macintosh prefieren el estándar RS-422 relacionado, en su mayoría con conectores mini-DIN circulares. La Macintosh incluía un conjunto estándar de dos puertos para la conexión a una impresora y un módem, pero algunas computadoras portátiles PowerBook tenían solo un puerto combinado para ahorrar espacio.
Los conectores 10P10C se pueden encontrar en algunos dispositivos.
Otro conector común es un encabezado de clavija 10 × 2 común en placas base y tarjetas complementarias que generalmente se convierte a través de un cable plano en el conector DE-9 de 9 pines más estándar (y con frecuencia se monta en una placa de ranura libre u otra parte de la carcasa).
Abstracción de hardware
Los sistemas operativos suelen crear nombres simbólicos para los puertos serie de una computadora, en lugar de requerir que los programas se refieran a ellos por dirección de hardware.
Los sistemas operativos similares a Unix suelen etiquetar los dispositivos de puerto serie /dev/tty*. TTY es una abreviatura común libre de marca registrada para teletipo, un dispositivo comúnmente conectado a las primeras computadoras' puertos seriales, y * representa una cadena que identifica el puerto específico; la sintaxis de esa cadena depende del sistema operativo y del dispositivo. En Linux, los puertos seriales de hardware UART 8250/16550 se denominan /dev/ttyS*, los adaptadores USB aparecen como /dev/ttyUSB* y varios tipos de puertos serie virtuales no necesariamente tienen nombres que comiencen con tty.
Los entornos DOS y Windows se refieren a los puertos serie como puertos COM: COM1, COM2,..etc.
Aplicaciones comunes para puertos serie
Esta lista incluye algunos de los dispositivos más comunes que están conectados al puerto serie de una PC. Algunos de estos, como los módems y los ratones en serie, están cayendo en desuso, mientras que otros están fácilmente disponibles. Los puertos seriales son muy comunes en la mayoría de los tipos de microcontroladores, donde pueden usarse para comunicarse con una PC u otros dispositivos seriales.
- Modems de eliminación
- Configuración y gestión de equipos de redes como routers, interruptores, cortafuegos, balanceadores de carga
- Receptores GPS (típicamente NMEA 0183 a 4.800 bit/s)
- Escáneres de código de barras y otros dispositivos de punto de venta
- Pantallas de texto LED y LCD
- Teléfonos vía satélite, módems de satélite de baja velocidad y otros dispositivos de transceptor basados en satélites
- Pantallas planas para controlar las funciones de pantalla por computadora externa, otros componentes AV o mandos
- Equipos de ensayo y medición, como multimetros digitales y sistemas de pesaje
- Actualización de firmware en varios dispositivos de consumo
- Controladores CNC
- Gestión ininterrumpida de la oferta de energía y presentación de informes sobre la situación
- Máquinas de estenotipo o estenotipo
- Depuradores de software que funcionan en una segunda computadora
- Autobuses industriales
- Impresoras
- Terminal de ordenadores, teletipo
- Networking (Macintosh AppleTalk utilizando RS-422 en 230,4 kbit/s)
- Ratón serie
Dado que las señales de control de un puerto serie pueden ser impulsadas por cualquier señal digital, algunas aplicaciones usaron las líneas de control de un puerto serie para monitorear dispositivos externos, sin intercambiar datos en serie. Una aplicación comercial común de este principio fue para algunos modelos de fuente de alimentación ininterrumpida que usaban las líneas de control para señalar la pérdida de energía, batería baja y otra información de estado. Al menos algunos programas de capacitación en código Morse usaban una clave de código conectada al puerto serie para simular el uso real del código; los bits de estado del puerto serie se pueden muestrear muy rápidamente y en momentos predecibles, lo que hace posible que el software descifre el código Morse.
Configuración
Tasa de bits (bit/s) | Tiempo por bit (μs) | Windows predefinido velocidad del puerto serie | Aplicaciones comunes |
---|---|---|---|
75 | 13333.3 | Sí. | |
110 | 9090,9 | Sí. | Modo Bell 101 |
134,5 | 7434.9 | Sí. | |
150 | 6666.6 | Sí. | |
300 | 3333.3 | Sí. | módem Bell 103 o módem V.21 |
600 | 1666.7 | Sí. | |
1.200 | 833.3 | Sí. | Bell 202, Bell 212A o V.22 módem |
1.800 | 555.6 | Sí. | |
2.400 | 416.7 | Sí. | V.22bis modem |
4.800 | 208.3 | Sí. | V.27ter modem |
7.200 | 138,9 | Sí. | |
9.600 | 104.2 | Sí. | V.32 módem |
14.400 | 69.4 | Sí. | V.32bis modem |
19.200 | 52.1 | Sí. | |
31,250 | 32 | No | MIDI port |
38,400 | 26.0 | Sí. | |
56.000 | 17.9 | Sí. | V.90/V.92 módem |
57.600 | 17.4 | Sí. | V.32bis modem con compresión V.42bis |
76.800 | 13.0 | No | BACnet MS/TP networks |
115,200 | 8.68 | Sí. | módem V.34 con compresión V.42bis, módem serie V.90/V.92 de bajo coste con compresión V.42bis o V.44 |
128.000 | 7.81 | Sí. | Adaptador de terminales ISDN |
230.400 | 4.34 | No | LocalTalk, alto extremo serie V.90/V.92 módem con compresión V.42bis o V.44 |
250.000 | 4.0 | No | DMX512, red de iluminación y efectos |
256.000 | 3.91 | Sí. |
Los estándares de serie prevén muchas velocidades de funcionamiento diferentes, así como ajustes en el protocolo para tener en cuenta las diferentes condiciones de funcionamiento. Las opciones más conocidas son la velocidad, el número de bits de datos por carácter, la paridad y el número de bits de parada por carácter.
En los puertos serie modernos que utilizan un circuito integrado UART, todas estas configuraciones pueden controlarse mediante software. El hardware de la década de 1980 y anteriores puede requerir la configuración de interruptores o puentes en una placa de circuito.
La configuración de los puertos seriales diseñados para conectarse a una PC se ha convertido en un estándar de facto, generalmente indicado como 9600/8-N-1.
Velocidad
Los puertos serie utilizan señalización de dos niveles (binaria), por lo que la tasa de datos en bits por segundo es igual a la tasa de símbolos en baudios. La velocidad total incluye bits para tramas (bits de parada, paridad, etc.), por lo que la tasa de datos efectiva es menor que la tasa de transmisión de bits. Por ejemplo, con tramas de caracteres 8-N-1, solo el 80% de los bits están disponibles para datos; por cada ocho bits de datos, se envían dos bits de trama más.
Una serie estándar de tarifas se basa en múltiplos de las tarifas de los teleimpresores electromecánicos; algunos puertos serie permiten seleccionar muchas velocidades arbitrarias, pero las velocidades en ambos lados de la conexión deben coincidir para que los datos se reciban correctamente. Las velocidades de bits comúnmente admitidas incluyen 75, 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 y 115200 bit/s. Muchas de estas velocidades de transmisión de módem estándar son múltiplos de 0,9 kbps (p. ej., 19200, 38400, 76800) o 1,2 kbps (p. ej., 57600, 115200). Los osciladores de cristal con una frecuencia de 1,843200 MHz se venden específicamente para este fin. Esto es 16 veces la tasa de bits más rápida, y el circuito del puerto serie puede dividirla fácilmente en frecuencias más bajas según sea necesario.
La capacidad de establecer una tasa de bits no implica que se obtendrá una conexión que funcione. No todas las tasas de bits son posibles con todos los puertos serie. Algunos protocolos de propósito especial, como MIDI para el control de instrumentos musicales, utilizan velocidades de datos en serie distintas de los estándares de teleimpresora. Algunas implementaciones de puerto serie pueden elegir automáticamente una tasa de bits al observar lo que un dispositivo conectado está enviando y sincronizando con él.
Bits de datos
La cantidad de bits de datos en cada carácter puede ser 5 (para el código Baudot), 6 (rara vez se usa), 7 (para ASCII verdadero), 8 (para la mayoría de los tipos de datos, ya que este tamaño coincide con el tamaño de un byte), o 9 (rara vez se usa). 8 bits de datos se utilizan casi universalmente en las aplicaciones más nuevas. 5 o 7 bits generalmente solo tienen sentido con equipos más antiguos, como teleimpresoras.
La mayoría de los diseños de comunicaciones en serie envían primero los bits de datos dentro de cada byte menos significativo. También es posible, pero rara vez se usa, es el bit más significativo primero; esto fue utilizado, por ejemplo, por el terminal de impresión IBM 2741. El orden de los bits generalmente no se puede configurar dentro de la interfaz del puerto serie, pero lo define el sistema host. Para comunicarse con sistemas que requieren un orden de bits diferente al predeterminado local, el software local puede reordenar los bits dentro de cada byte justo antes de enviar y justo después de recibir.
Paridad
Paridad es un método de detección de errores en la transmisión. Cuando se utiliza la paridad con un puerto serie, se envía un bit de datos adicional con cada carácter de datos, dispuesto de modo que el número de bits 1 en cada carácter, incluido el bit de paridad, sea siempre par o impar. Si se recibe un byte con el número incorrecto de 1, entonces debe estar dañado. La paridad correcta no indica necesariamente la ausencia de corrupción, ya que una transmisión corrupta con un número par de errores pasará la verificación de paridad. Un solo bit de paridad no permite la implementación de la corrección de errores en cada carácter, y los protocolos de comunicación que funcionan a través de enlaces de datos en serie suelen tener mecanismos de nivel superior para garantizar la validez de los datos y solicitar la retransmisión de los datos que se han recibido incorrectamente.
El bit de paridad de cada carácter se puede establecer en uno de los siguientes:
- Ninguno (N) significa que no se envía bit de paridad y la transmisión se acorta.
- Odd (O) significa que el bit de paridad se establece para que el número de 1 bits sea extraño.
- Incluso (E) significa que el bit de paridad se establece para que el número de 1 bits sea uniforme.
- Mark (M) paridad significa que el bit de paridad siempre se establece en la condición de señal de marca (1 bit value).
- Espacio (S) la paridad siempre envía el bit de paridad en la condición de señal espacial (valor de 0 bits).
Aparte de las aplicaciones poco comunes que usan el último bit (generalmente el 9) para alguna forma de direccionamiento o señalización especial, la paridad de marcas o espacios es poco común, ya que no agrega información de detección de errores.
La paridad impar es más útil que la paridad par, ya que garantiza que se produzca al menos una transición de estado en cada carácter, lo que la hace más fiable a la hora de detectar errores como los que podrían ser causados por discrepancias en la velocidad del puerto serie. Sin embargo, la configuración de paridad más común es ninguna, con la detección de errores manejada por un protocolo de comunicación.
Para permitir la detección de mensajes dañados por el ruido de la línea, se dispusieron teleimpresores electromecánicos para imprimir un carácter especial cuando los datos recibidos contenían un error de paridad.
Pedazos de parada
Los bits de parada enviados al final de cada carácter permiten que el hardware de la señal receptora detecte el final de un carácter y lo vuelva a sincronizar con el flujo de caracteres. Los dispositivos electrónicos suelen utilizar un bit de parada. Si se utilizan teleimpresores electromecánicos lentos, es posible que se requieran uno y medio o dos bits de parada.
Notación convencional
La notación convencional de datos/paridad/parada (D/P/S) especifica el marco de una conexión en serie. El uso más común en microcomputadoras es 8/N/1 (8N1). Esto especifica 8 bits de datos, sin paridad, 1 bit de parada. En esta notación, el bit de paridad no está incluido en los bits de datos. 7/E/1 (7E1) significa que se agrega un bit de paridad par a los 7 bits de datos para un total de 8 bits entre los bits de inicio y parada.
Control de flujo
El control de flujo se usa en circunstancias en las que un transmisor puede enviar datos más rápido de lo que el receptor puede procesarlos. Para hacer frente a esto, las líneas seriales a menudo incorporan un método de apretón de manos. Hay métodos de protocolo de enlace de hardware y software.
El protocolo de enlace de hardware se realiza con señales adicionales, a menudo los circuitos de señal RS-232 RTS/CTS o DTR/DSR. RTS y CTS se utilizan para controlar el flujo de datos, señalando, por ejemplo, cuando un búfer está casi lleno. Según el estándar RS-232 y sus sucesores, DTR y DSR se utilizan para señalar que el equipo está presente y encendido, por lo que generalmente se afirman en todo momento. Sin embargo, existen implementaciones no estándar, por ejemplo, impresoras que usan DTR como control de flujo.
El protocolo de enlace de software se realiza, por ejemplo, con los caracteres de control ASCII XON/XOFF para controlar el flujo de datos. Los caracteres XON y XOFF son enviados por el receptor al remitente para controlar cuándo el remitente enviará datos, es decir, estos caracteres van en la dirección opuesta a los datos que se envían. El sistema se inicia en el estado envío permitido. Cuando los búferes del receptor se acercan a su capacidad, el receptor envía el carácter XOFF para indicarle al remitente que deje de enviar datos. Más tarde, después de que el receptor haya vaciado sus búferes, envía un carácter XON para indicarle al remitente que reanude la transmisión. Es un ejemplo de señalización en banda, donde la información de control se envía por el mismo canal que sus datos.
La ventaja del protocolo de enlace de hardware es que puede ser extremadamente rápido, funciona independientemente del significado impuesto como ASCII en los datos transferidos y no tiene estado. Su desventaja es que requiere más hardware y cableado, y ambos extremos de la conexión deben admitir el protocolo de protocolo de enlace de hardware utilizado.
La ventaja del protocolo de enlace de software es que se puede realizar con circuitos y cableado de protocolo de enlace de hardware ausentes o incompatibles. La desventaja, común a toda la señalización de control en banda, es que presenta complejidades para garantizar que los mensajes de control se transmitan incluso cuando los mensajes de datos están bloqueados, y los datos nunca pueden confundirse con las señales de control. El primero normalmente lo maneja el sistema operativo o el controlador del dispositivo; el último normalmente asegurándose de que los códigos de control se escapen (como en el protocolo Kermit) o se omitan por diseño (como en el control de terminal ANSI).
Si no se emplea protocolo de enlace, es posible que un receptor desbordado simplemente no pueda recibir datos del transmisor. Los enfoques para evitar esto incluyen reducir la velocidad de la conexión para que el receptor siempre pueda mantener el ritmo, aumentar el tamaño de los búfer para que pueda mantener el promedio durante un tiempo más largo, usar demoras después de operaciones que consumen mucho tiempo (por ejemplo, en termcap) o emplear un mecanismo para reenviar datos que no se han recibido correctamente (por ejemplo, TCP).
Contenido relacionado
Algoritmo de línea de Bresenham
Multivibrador
Evaluación perezosa