Si bien las interfaces como Ethernet , FireWire y USB también envían datos como un flujo serial , el término puerto serial generalmente denota hardware compatible con RS-232 o un estándar relacionado, como RS-485 o RS-422 .
Los ordenadores personales (PC) modernos han sustituido en gran medida los puertos serie por estándares de mayor velocidad, principalmente USB. Sin embargo, los puertos serie siguen utilizándose con frecuencia en aplicaciones que exigen interfaces simples y de baja velocidad, como sistemas de automatización industrial, instrumentos científicos, sistemas de puntos de venta y algunos productos industriales y de consumo.
Los servidores pueden utilizar un puerto serial como consola de control para diagnósticos, mientras que el hardware de red (como enrutadores y conmutadores ) suele utilizar puertos de consola serial para configuración, diagnóstico y acceso de mantenimiento de emergencia. Para interactuar con estos y otros dispositivos, los convertidores USB a serial pueden agregar de manera rápida y sencilla un puerto serial a una PC moderna.
Hardware
Los dispositivos modernos utilizan un circuito integrado llamado UART para implementar un puerto serial. Este CI convierte caracteres a y desde formato serial asíncrono , implementando la sincronización y el encuadre de datos especificados por el protocolo serial en hardware. La IBM PC implementa sus puertos seriales, cuando están presentes, con uno o más UART.
Los sistemas de muy bajo costo, como algunos de los primeros ordenadores domésticos , utilizaban la CPU para enviar los datos a través de un pin de salida , utilizando la técnica de bit banging . Estos primeros ordenadores domésticos solían tener puertos serie propietarios con asignaciones de 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 seriales se usaban comúnmente en mainframes y minicomputadoras , que tenían múltiples circuitos integrados de 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 chipset .
Una tarjeta serie IBM PC con un conector de 25 pines ( tarjeta ISA de 8 bits obsoleta )
Una tarjeta de expansión PCI Express ×1 de cuatro puertos seriales (RS-232) con un cable pulpo que divide el conector DC-37 de la tarjeta en cuatro conectores DE-9 estándar
Un convertidor de USB a un puerto serial compatible con RS-232: más que una transición física, requiere un controlador en el software del sistema host y un procesador integrado para emular las funciones del hardware del puerto serial compatible con IBM XT .
Adaptador UART a USB
DTE y DCE
Las señales individuales en un puerto serial son unidireccionales y al conectar dos dispositivos, las salidas de un dispositivo deben estar conectadas a las entradas del otro. Los dispositivos se dividen en dos categorías: equipos terminales de datos (DTE) y equipos de terminación de circuitos 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 de cableado recto, en el que cada pin en un extremo va al pin con el mismo número en el otro extremo.
Tradicionalmente, los ordenadores y 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 cross-over , roll-over o null modem .
Género
En general, los conectores de puerto serie tienen género definido , lo que permite que solo se acoplen con un conector del género opuesto. En el caso de los conectores D-sub , los conectores macho tienen pines salientes y los conectores hembra tienen conectores redondos correspondientes. [2] Cualquiera de los dos tipos de conectores se puede montar en un equipo o en un panel, o bien se puede utilizar para terminar un cable.
Es probable que los conectores montados en el DTE sean machos, y los montados en el DCE, hembras (y los conectores del cable sean lo opuesto). 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. [3] En esta circunstancia, se pueden utilizar los conectores con el género adecuado 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-sub 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 utilizan todas las 20 señales definidas por el estándar, a menudo se utilizan conectores con menos pines. Si bien a continuación se presentan ejemplos específicos, se han utilizado innumerables otros conectores para conexiones RS-232.
El conector DE- 9 de 9 pines ha sido utilizado por la mayoría de las PC compatibles con IBM desde la opción de adaptador serie/paralelo para PC-AT , donde el conector de 9 pines permitía que un puerto serie y paralelo encajaran en la misma tarjeta. [4] Este conector ha sido estandarizado para RS-232 como TIA-574 .
Los conectores 8P8C también se utilizan en muchos dispositivos. El estándar EIA/TIA-561 define un pinout utilizando este conector, mientras que el cable rollover (o estándar Yost) se utiliza comúnmente en computadoras Unix y dispositivos de red, como equipos de Cisco Systems . [7]
Muchos modelos de Macintosh prefieren el estándar RS-422, en su mayoría utilizando conectores mini-DIN circulares . El 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 solo tenían un puerto combinado para ahorrar espacio. [8]
Otro conector común es un cabezal de 10 × 2 pines común en placas base y tarjetas complementarias que generalmente se convierte a través de un cable plano al 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). [10]
Distribución de pines
La siguiente tabla enumera las señales RS-232 y las asignaciones de pines más utilizadas: [11]
La conexión a tierra de la señal es un retorno común para las demás conexiones; aparece en dos pines en el estándar Yost, pero es la misma señal. El conector DB-25 incluye una segunda conexión a tierra de protección en el pin 1, que está destinada a ser conectada por cada dispositivo a su propia conexión a tierra de bastidor o similar. Conectar la conexión a tierra de protección a la conexión a tierra de la señal es una práctica común, pero no se recomienda.
Tenga en cuenta que EIA/TIA 561 combina DSR y RI, [13] [14] y el estándar Yost combina DSR y DCD.
Abstracción de hardware
Los sistemas operativos generalmente crean nombres simbólicos para los puertos seriales de una computadora, en lugar de requerir que los programas se refieran a ellos por dirección de hardware.
Los sistemas operativos tipo Unix suelen etiquetar los dispositivos de puerto serie como /dev/tty* . TTY es una abreviatura común sin marca registrada para teletipo , un dispositivo que se adjuntaba comúnmente a los puertos serie de las primeras computadoras, 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 serie 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. [15]
Aplicaciones comunes para puertos seriales
Esta lista incluye algunos de los dispositivos más comunes que se conectan al puerto serie de una PC. Algunos de ellos, como los módems y los ratones serie, están en desuso, mientras que otros están disponibles. Los puertos serie son muy comunes en la mayoría de los tipos de microcontroladores , donde se pueden utilizar para comunicarse con una PC u otros dispositivos serie.
Redes (Macintosh AppleTalk utilizando RS-422 a 230,4 kbit/s )
Ratón serial
Dado que las señales de control de un puerto serie pueden ser controladas por cualquier señal digital , algunas aplicaciones utilizaban las líneas de control de un puerto serie para supervisar dispositivos externos, sin intercambiar datos en serie. Una aplicación comercial común de este principio era para algunos modelos de sistemas de alimentación ininterrumpida que utilizaban las líneas de control para señalar la pérdida de energía, la batería baja y otra información de estado. Al menos algunos programas de entrenamiento de código Morse utilizaban una clave de código conectada al puerto serie para simular el uso real del código; los bits de estado del puerto serie podían muestrearse muy rápidamente y en tiempos predecibles, lo que hacía posible que el software descifrara el código Morse.
Los ratones de ordenador en serie pueden obtener su potencia de funcionamiento de los datos recibidos o de las señales de control. [16] [17]
Ajustes
Los estándares seriales permiten distintas velocidades de funcionamiento, así como ajustes del protocolo para tener en cuenta distintas condiciones de funcionamiento. Las opciones más conocidas son la velocidad, la cantidad de bits de datos por carácter, la paridad y la cantidad de bits de parada por carácter.
En los puertos seriales modernos que utilizan un circuito integrado UART, todas estas configuraciones se pueden controlar 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 ser conectados a una PC se ha convertido en un estándar de facto, generalmente denominado 9600/8-N-1 .
Velocidad
Los puertos seriales utilizan señalización de dos niveles (binaria), por lo que la velocidad de datos en bits por segundo es igual a la velocidad de símbolos en baudios . La velocidad total incluye bits para la trama (bits de parada, paridad, etc.) y, por lo tanto, la velocidad de datos efectiva es menor que la velocidad de transmisión de bits. Por ejemplo, con la trama 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 velocidades se basa en múltiplos de las velocidades 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. [19] Muchas de estas velocidades de transmisión estándar de módem son múltiplos de 1,2 kbps (p. ej., 19200, 38400, 76800) o 0,9 kbps (p. ej., 57600, 115200). [23] Los osciladores de cristal con una frecuencia de 1,843200 MHz se venden específicamente para este propósito. Esta 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 en funcionamiento. No todas las tasas de bits son posibles con todos los puertos seriales. Algunos protocolos especiales, como MIDI para el control de instrumentos musicales, utilizan tasas de datos seriales distintas a las de los estándares de teleimpresora. Algunas implementaciones de puertos seriales pueden elegir automáticamente una tasa de bits observando lo que está enviando un dispositivo conectado y sincronizándose con él.
Bits de datos
La cantidad de bits de datos en cada carácter puede ser 5 (para código Baudot ), 6 (raramente usado), 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 (raramente usado). 8 bits de datos se usan casi universalmente en 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 los bits de datos dentro de cada byte comenzando por el bit menos significativo . También es posible, pero rara vez se utiliza, comenzar por el bit más significativo ; esto se utilizó, por ejemplo, en la terminal de impresión IBM 2741. El orden de los bits no suele ser configurable dentro de la interfaz del puerto serie, sino que 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
La paridad es un método para detectar 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, organizado de modo que la cantidad de bits 1 en cada carácter, incluido el bit de paridad, sea siempre par o impar. Si se recibe un byte con una cantidad incorrecta de 1, entonces debe estar dañado. La paridad correcta no indica necesariamente la ausencia de daños, ya que una transmisión dañada con una cantidad 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 normalmente tendrán 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 configurar en uno de los siguientes:
Ninguno (N) significa que no se envía ningún bit de paridad y se acorta la transmisión.
Impar (O) significa que el bit de paridad está configurado de modo que el número de bits 1 es impar.
Par (E) significa que el bit de paridad está configurado de modo que el número de bits 1 es par.
La paridad de marca (M) significa que el bit de paridad siempre se establece en la condición de señal de marca (valor de 1 bit).
La paridad espacial (S) siempre envía el bit de paridad en la condición de señal de espacio (valor de bit 0).
Aparte de las aplicaciones poco comunes que utilizan el último bit (normalmente el noveno) para alguna forma de direccionamiento o señalización especial, la paridad de marca o espacio 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 producirse por desajustes en la velocidad del puerto serie. Sin embargo, la configuración de paridad más común es ninguna , y la detección de errores se realiza mediante un protocolo de comunicación.
Para permitir la detección de mensajes dañados por ruido en la línea , se diseñaron teleimpresoras electromecánicas para imprimir un carácter especial cuando los datos recibidos contenían un error de paridad.
Bits de parada
Los bits de parada que se envían al final de cada carácter permiten que el hardware receptor detecte el final de un carácter y se resincronice con el flujo de caracteres. Los dispositivos electrónicos suelen utilizar un bit de parada. Si se utilizan teleimpresoras electromecánicas lentas , 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 la estructura 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 de parada.
Control de flujo
El control de flujo se utiliza en circunstancias en las que un transmisor puede enviar datos a una velocidad mayor que la que el receptor puede procesar. Para hacer frente a esto, las líneas seriales suelen incorporar un método de enlace . Existen métodos 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 indicar que el equipo está presente y encendido, por lo que generalmente se activan en todo momento. Sin embargo, existen implementaciones no estándar, por ejemplo, impresoras que utilizan DTR como control de flujo.
El protocolo de enlace de software se realiza, por ejemplo, con caracteres de control ASCII XON/XOFF para controlar el flujo de datos. Los caracteres XON y XOFF son enviados por el receptor al emisor para controlar cuándo el emisor enviará datos, es decir, estos caracteres van en la dirección opuesta a los datos que se están enviando. El sistema comienza en el estado de envío permitido . Cuando los búferes del receptor se acercan a la capacidad, el receptor envía el carácter XOFF para indicar al emisor 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 indicar al emisor 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 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 introduce complejidades para garantizar que los mensajes de control se transmitan incluso cuando los mensajes de datos están bloqueados, y los datos nunca se pueden confundir con señales de control. El primer problema normalmente lo soluciona el sistema operativo o el controlador del dispositivo; el segundo normalmente garantizando 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 utiliza un protocolo de enlace, un receptor desbordado podría simplemente no recibir datos del transmisor. Los enfoques para evitar esto incluyen reducir la velocidad de la conexión para que el receptor siempre pueda seguir el ritmo, aumentar el tamaño de los búferes para que pueda seguir el ritmo promediado 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 ).
^ Beal, Vangie (septiembre de 1996). "Serial Port Definition & Meaning". Webopedia . Consultado el 8 de marzo de 2021 .
^ "Guía de conexión de cable serial". CISCO. 2006-08-01 . Consultado el 2016-01-31 .
^ "Conectores RS232 - DTE y DCE". Lantronix. 29 de marzo de 2006. Archivado desde el original el 14 de diciembre de 2015. Consultado el 31 de enero de 2016 .
^ "Adaptador serial/paralelo IBM PC AT" (PDF) . Archivado desde el original (PDF) el 24 de febrero de 2020.
^ "Guía de enlace TI-73...92+/V200 TI". merthsoft.com . Consultado el 14 de agosto de 2020 .
^ "Sección técnica". Miklor.com . Consultado el 14 de agosto de 2020 .
^ "Guía de cableado para puertos de consola y auxiliares". Cisco . Consultado el 14 de agosto de 2020 .
^ "Puertos clásicos de Mac". WhiteFiles.org . Consultado el 14 de agosto de 2020 .
^ ab "Guía de referencia rápida de serie" (PDF) . NI.com . National Instruments. Julio de 2013 . Consultado el 18 de junio de 2021 .
^ Especificación técnica del producto Intel Server Board S5000PAL/S5000XAL (PDF) . pág. 38.
^ Ögren, Joakim. «Serial (PC 9)». Archivado desde el original el 11 de agosto de 2010. Consultado el 7 de julio de 2010 .
^ ab "Estándar de cableado de dispositivos seriales de Yost". Archivado desde el original el 17 de junio de 2020. Consultado el 10 de mayo de 2020 .
^ "Libro de hardware RS-232D".
^ "Distribución de pines RS-232D EIA/TIA-561 RJ45".
^ Stephen Byron Cooper. "¿Qué es un puerto COM1?". Techwalla . Consultado el 30 de septiembre de 2021 .
^ Chan, Alvin (1990). "Implementación del mouse para PC AN-681 con COP800" (PDF) . National Semiconductor . Consultado el 29 de julio de 2023 .
^ "AN519 Implementación de un controlador de ratón serial simple" (PDF) . Microchip Technology Inc. 1997 . Consultado el 29 de julio de 2023 .
^ "Estructura SERIAL_COMMPROP". Microsoft . 2018-04-22. Archivado desde el original el 2019-09-28 . Consultado el 2019-09-28 .
^ ab "Estructura DCB". Centro de desarrollo de Windows . Microsoft . 2018-12-04. Archivado desde el original el 2019-09-28 . Consultado el 2019-09-28 .
^ "Manual de descripción general de BACnet MS/TP" (PDF) . Neptronic. Archivado (PDF) del original el 10 de enero de 2020 . Consultado el 26 de septiembre de 2019 .
^ "MultiModem ZBA" (PDF) . Multi-Tech Systems, Inc. Enero de 2019. Archivado desde el original (PDF) el 3 de marzo de 2019 . Consultado el 26 de septiembre de 2019 .
^ "Módem empresarial Courier 56K: Guía del usuario: Control de la velocidad de datos". USRobotics . 2007. Archivado desde el original el 4 de agosto de 2017 . Consultado el 26 de septiembre de 2019 .
^ "Hoja de datos del transceptor de largo alcance y baja potencia SX1272/73 de 860 MHz a 1020 MHz" (PDF) . Semtech . Enero de 2019.
Lectura adicional
Puerto serie completo: puertos COM, puertos COM virtuales USB y puertos para sistemas integrados ; 2.ª edición; Jan Axelson; Lakeview Research; 380 páginas; 2007; ISBN 978-1-931-44806-2 .
Enlaces externos
Wikilibros tiene un libro sobre el tema: Programación: comunicaciones de datos en serie
Medios relacionados con Puerto serie en Wikimedia Commons