¿Diferencia entre UART y RS-232?

La mayoría de las veces , RS-232 y UART se unen en las teorías de comunicación en serie. ¿Son los dos iguales? De mis lecturas, concluí que UART es una forma de hardware del protocolo RS-232. ¿Estoy en lo correcto?

Las respuestas anteriores han dado una idea de las diferencias. Pero me gustaría agregar a esas respuestas agregando un enlace de National Instruments que analiza este tema en detalle. El siguiente es el enlace: RS-232, RS-422, RS-485 Conceptos generales de comunicación en serie
Parece que tu enlace ya no existe. Aquí hay un archivo de la máquina Wayback de la última versión que pude encontrar: web.archive.org/web/20181225120315/http://www.ni.com:80/…

Respuestas (5)

No, UART y RS-232 no son lo mismo.

UART es responsable de enviar y recibir una secuencia de bits. A la salida de un UART, estos bits suelen estar representados por voltajes de nivel lógico. Estos bits pueden convertirse en RS-232, RS-422, RS-485 o quizás en alguna especificación propietaria.

RS-232 especifica los niveles de voltaje . Tenga en cuenta que algunos de estos niveles de voltaje son negativos y también pueden alcanzar ±15V. Una mayor oscilación de voltaje hace que el RS-232 sea más resistente a las interferencias (aunque solo hasta cierto punto).

Un microcontrolador UART no puede generar tales niveles de voltaje por sí mismo. Esto se hace con la ayuda de un componente adicional: el controlador de línea RS-232. Un ejemplo clásico de un controlador de línea RS-232 es MAX232 . Si revisa la hoja de datos, notará que este IC tiene una bomba de carga, que genera ±10V desde +5V.

ingrese la descripción de la imagen aquí( fuente )

La definición de RS-232 que he leído no habla en absoluto de una secuencia de bits o temporización. De hecho, nunca he encontrado un estándar oficial que describa el protocolo de arranque y parada NRZ asíncrono.
RS-232 no especifica la secuencia de bits.
Aparentemente, el desarrollo del formato de caracteres UART estuvo tan dominado por la compañía telefónica Bell que no surgieron variantes. Como resultado, el formato de bits de inicio/datos/paridad/detención nunca fue objeto de un estándar independiente. El uso en toda la industria era tan uniforme que no se requería una definición "oficial". Esto no ocurría con los enlaces físicos, por lo que se desarrolló RS-232.
Los formatos de caracteres UART son anteriores a los módems de Bell, estaban en hardware Teletype (ocho bits con paridad) en ASCII y Baudot antes de eso.

UART (o USART): receptor/transmisor asíncrono universal (sincrónico)

Esta es, esencialmente, una interfaz de comunicaciones en serie. La parte "universal" significa que se puede configurar para admitir muchos protocolos seriales específicos diferentes. El término es genérico y no representa un estándar específico. Como mínimo, significa que tiene una TXy una RXlínea, que envía un flujo de datos en serie y recibe un flujo de datos en serie.

RS-232 : un estándar que define las señales entre dos dispositivos, define los nombres de las señales, su propósito, los niveles de voltaje, los conectores y los pines.

Este es un estándar de interfaz específico que permite la interoperabilidad de los equipos. Si bien dos piezas de hardware pueden tener UART, no sabe si se conectarán sin daños o si se comunicarán correctamente a menos que sepa que tienen los mismos estándares de pinout y voltaje, o que incluyan un convertidor o un cable especialmente cableado específico para la interconexión de estos dos dispositivos específicos. Para evitar la necesidad de convertidores o cables especiales, los fabricantes pueden optar por seguir el estándar RS-232. Entonces, sabe que un cable estándar RS-232 conectará los dos.

Sin embargo, ni el UART ni el estándar RS-232 definen lo que se envía en las líneas TXy RX. Generalmente, cuando las personas usan RS-232, usan una codificación NRZ simple de 8 bits con un bit de inicio y un bit de parada. La mayoría de los equipos que se fabrican en la actualidad utilizan esta codificación, pero no es obligatorio hacerlo. Puede encontrar equipos más antiguos que incluyen bits de paridad o usan 7 o 9 bits. El UART se puede configurar para admitir estos diversos protocolos en sus líneas TXy RX.

Los UART no suelen interactuar directamente con RS-232. Deberá convertir la salida del UART al estándar de +/-12 V que requiere RS-232. Una interfaz RS-232 completa generalmente involucrará tanto un UART como un convertidor de nivel RS-232. Además, el estándar RS-232 incluye la definición de varios otros pines de señalización además de TXy RX, que puede necesitar usar según el equipo al que necesite conectarse. Estos también deberán ser convertidos a nivel, y su UART puede o no admitir estas señales. Si no es así, tendrá que controlarlos directamente con su software/firmware.

Entonces, si bien un UART puede ayudarlo a implementar una interfaz RS-232, no es una interfaz RS-232 en sí misma.

¿Cable estándar RS-232? No hay tal cosa. En mi bolsa de equipo llevo alrededor de una docena de adaptadores para RS-232. RS-232 especifica un conector DB-25, pero he visto DD-9, RJ45, din8 y otros conectores, y además de conectar un módem a una PC, nunca he podido usar un cable COTS para ningún proyecto rs232. Afortunadamente, el 90 % de las veces bastará con un par de adaptadores o un cable personalizado, son fáciles de fabricar.
Solo para que conste: creo que la 'S' en USART significa "Synchronous", no "Serial". Ver aquí _ Los USART son "extensiones" sobre los chips UART más antiguos que permiten también modos de comunicación sincrónicos.
El único conector RS-232 "estándar" es el conector D-shell de 25 pines, pero el cumplimiento de ese estándar es raro. Como escribió @hildred, las computadoras y los periféricos han usado una amplia variedad de conectores a lo largo de los años. En general, pretendo que no hay un conector estándar y solo asumo que RS-232 significa que los voltajes y las señales serán compatibles.

El UART funciona para convertir datos paralelos de líneas de bus de PC a datos en serie para la transmisión a través de controladores de línea a dispositivos RS-232, RS-422 y RS-485 . El pin de reloj del chip UART es alimentado por una fuente de reloj programable. La velocidad del reloj está determinada por la configuración de velocidad en baudios que utilizará el dispositivo. La velocidad del reloj es 16 X la tasa de baudios. Colocar una sonda de osciloscopio en el pin de reloj de un chip UART y determinar la frecuencia, luego dividirla por 16 es una forma de determinar una tasa de baudios desconocida.

+1 para "convertir datos paralelos a datos en serie", ninguna otra respuesta aquí menciona esto.

RS-232 es solo una especificación. Define los requisitos de señalización para la comunicación en serie, al establecer reglas y pautas con respecto a:

  • Cableado físico, las interconexiones entre dispositivos compatibles con RS-232. Algunas variantes de RS-232 también especifican qué tipos de conectores y cables debe usar.
  • Características eléctricas de las señales transportadas por esas interconexiones (niveles de voltaje, velocidades de respuesta, impedancia, etc.)
  • Propósito y significado de esas líneas físicas, como TX, RX, DCD, CTS, etc.

RS-232 no cubre nada que tenga que ver con el hardware electrónico digital que utiliza para implementar y cumplir con esas especificaciones y, lo que es más importante , no cubre la trama de datos o la corrección de errores ni ningún aspecto del tipo "capa de enlace de datos". En otras palabras, RS-232 es lo más cercano a una especificación de "capa física", en el modelo OSI .

A veces escucha el término "protocolo RS-232", pero no es un protocolo, es un estándar de señalización.

El hardware real que utiliza para implementar comunicaciones compatibles con RS-232 se divide en general en dos categorías, ninguna de las cuales forma parte de la especificación RS-232 (excepto en el sentido de que si hacen algo que viola RS-232, no puede legítimamente llame a su sistema "RS-232"):

  • Transceptores de línea . Estos son los dispositivos que se traducirán entre las señales compatibles con RS-232, que son robustas, bipolares (los voltajes van tanto negativos como positivos con respecto a tierra) y el circuito lógico digital sensible dentro del dispositivo de comunicación, que generalmente es un UART en funcionamientocon niveles lógicos estándar de 3,3 V o 5 V. Los transceptores de línea también caen bajo la "capa física" del modelo OSI.

  • UART . Esta es una lógica digital compleja, que generalmente opera con niveles lógicos estándar de 5 V o 3,3 V, y que es responsable de codificar y decodificar datos paralelos en y desde la forma en serie. Se ocupa del encuadre (bits de inicio y parada), la corrección de errores (bits de paridad), la velocidad de datos (velocidad en baudios), el control de flujo (control de señales como DCD, CTS, RTS, etc.) y muchos otros aspectos. Como tal, podría verse como parte de la "capa de enlace de datos" en el modelo OSI.

Sí, "capa física" y "capa de enlace de datos", esas son mejores palabras.
¿No cree que sería más exacto decir "RS-232 es una especificación que define los requisitos de señalización para la comunicación en serie..."? Es más que una simple especificación.

RS-232 está antes de UART.

UART es un dispositivo que puede definir un protocolo lógico para la comunicación, mientras que RS-232 es un dispositivo que sirve como medio físico para la comunicación.

Cuando decimos UART + RS232, en realidad significa a communication protocol runs on some media, con chips como MAX232 para adaptar los voltajes.

También podemos usarUART + USB (editar) También podemos usar chips basados ​​en USB para proporcionar alguna funcionalidad UART virtual (editar), con los chips de Prolific Technology, FTDI, Microchip, etc., donde reemplazamos el simple medio RS-232 con un más medios USB complejos/recientes. Ni siquiera necesitamos el hardware UART porque se puede implementar a través de USB de forma puramente software.

Vea la imagen de abajo. Tenga en cuenta que en el lado derecho no hay hardware UART sino solo hardware USB (editar) el hardware UART está integrado en dichos chips y se usa un nuevo controlador USB UART en el lado integrado (editar). Y con algunos conductores adicionales.

ingrese la descripción de la imagen aquíLa imagen es de aquí .

Hay varios problemas con esta respuesta. En primer lugar, UART es un circuito que implementa comunicaciones asíncronas, pero las comunicaciones asíncronas existían antes de RS-232, piense en dispositivos electromecánicos. Además, los chips USB FTDI no reemplazan los medios RS-232 con medios USB. Son chips USB UART que le permiten hacer un adaptador que permite que su PC tenga una interfaz de comunicación RS-232. El UART se implementa por hardware mediante el chip FTDI, no se implementa en el software. Y el diagrama no se relaciona con el uso de chips FTDI, pero la MCU implementa USB CDC y PC hablando CDC con él.
@Justme " ... para hacer un adaptador que permita que su PC tenga una interfaz de comunicación RS-232 " ¿Creo que se refiere a la interfaz de comunicación USB? Y gracias por señalar que el chip FTDI todavía tiene el UART como hardware. No conocía ese detalle. Pensé que debería ser posible implementar el protocolo UART en el software y aprovechar el USB como medio de transporte. La imagen pretende mostrar cómo se puede usar USB como si fuera un RS-232.
@smwikipedia No, realmente quise decir que puede usar el chip USB UART con el transceptor RS-232. Estás de nuevo confundiendo las cosas. La imagen muestra cómo se puede usar USB para proporcionar un UART virtual solo con el protocolo USB CDC. No hay UART o RS-232 en ninguna parte, e incluso entonces, la parte RS-232 no tendría sentido. Lea las respuestas existentes para averiguar qué significa cada término y cómo se relacionan entre sí.
@Solo yo Sí. La imagen muestra que el USB se usa como un UART virtual con algunos controladores de software adicionales tanto en el host como en el lado integrado. Reemplaza totalmente el hardware UART y RS-232.
El resto de los problemas siguen existiendo. RS-232 no es un "dispositivo" sino una especificación para una interfaz física. Y los chips tipo FTDI no proporcionan UART virtual, realmente proporcionan un UART físico real a través de la interfaz USB. Si coloca una MCU y usa CDC a través de USB, entonces es un puerto virtual porque no hay UART en ninguna parte. Entonces, la imagen del lado derecho tiene CDC, no UART.