¿Cuál es la diferencia entre RS-232 y TTL UART? [duplicar]

2

Siempre necesito comunicarme con el puerto UART TTL de la MCU con una computadora. Cuando hablé de eso, la gente siempre refiere el puerto UART como un puerto RS-232. ¿Son correctas? Si no, ¿cuál es la diferencia entre ellos?

Además, ¿puedo usar un convertidor RS-232 a USB para un puerto TTL UART?

    
pregunta eepty

3 respuestas

5

El puerto en su convertidor USB < - > RS-232 emitirá algo así como +/- 9V y puede aceptar +/- 25V o cortocircuito sin daños.

El UART en su MCU usa el nivel lógico (típicamente 0V / 3.3V o 0V / 5V). La aplicación de menos de 0 V o más de Vcc puede destruir el chip MCU.

También los niveles lógicos están invertidos entre los dos tipos (excepto una opción en muy pocas MCU).

Para invertir y convertir bidireccionalmente entre los niveles de UART y los niveles de RS-232, normalmente se usa un chip como MAX232 (para lógica de 5 V). El MAX232 también genera sus propios suministros de +/- 9V a partir de un solo suministro de + 5V utilizando un duplicador de voltaje de la bomba de carga.

TL; DR:

No, no puede usar el cable USB-RS-232 (también conocido como USB-serie) para conectar los dos. Hay convertidores serie USB-TTL disponibles a bajo precio. Hay algunas trampas con las más baratas de China en cuanto a la operación de 3.3 V, asegúrese de investigar un poco. Adafruit transporta s uch dispositivos por $ 10. Creo que también puedes encontrarlos en Digikey y en otras fuentes.

DadoquelainterfazdehardwarenoestádefinidaporningúnestándarenelextremodelaMCU,normalmentesesuministranconcablesvoladoresnocomprometidosconterminaleshembrasparaacoplarseconpinescuadradosde0.025"como lo encontraría en un encabezado de tono de 0.1". Compré media docena de dispositivos similares para mi programador de firmware y los ha estado utilizando para hablar con varias placas de desarrollo.

    
respondido por el Spehro Pefhany
6

UART = Receptor / transmisor asíncrono universal. Es el chip básico (o función virtual en un microcontrolador) el que codifica en serie los bits de datos en un formato estándar con un bit de inicio, bit (s) de parada, velocidad, etc. Pero "UART" es solo una PARTE de lo que "RS- 232 "es.

RS-232 agrega los valores de voltaje heredados a los valores binarios (0/1 o hi / lo, o "marca" y "espacio" en la conversación RS-232). Un UART TTL emitirá (e ingresará) solo niveles TTL, esencialmente 0 bit = 0V y 1 bit = 5V. Y muchos dispositivos modernos (Arduino, et.al.) simplemente usan niveles de voltaje TTL para la comunicación en serie. Pero la definición "correcta" de RS-232 usaba voltajes MÁS ALTOS y BIPOLARES para definir cero y uno. Específicamente:

  • 0 bit="espacio" = + 3V ~ + 15V
  • 1 bit="marca" = -15V ~ -3V

Esos voltajes se remontan a los viejos días de las máquinas electromecánicas de Teletype, que eran una monstruosidad milagrosa de maravilla mecánica. Y esos voltajes bastante altos fueron necesarios para controlar las brocas electromecánicas.

Pero en los días modernos, el antiguo protocolo RS-232 sigue siendo un estándar útil, pero esos viejos voltajes bipolares altos son más bien una cosa del pasado. Y parece bastante probable que crezca una nueva generación que nunca recordará nada sobre esos niveles de voltaje antiguos y pensará que el RS-232 es un antiguo protocolo heredado de 5V. Especialmente cuando todos los voltajes de potencia están migrando hacia niveles lógicos de 3.3V.

Ref: enlace

    
respondido por el Richard Crowley
1
  

Siempre necesito comunicarme con el puerto UART TTL en la MCU con un   computadora. Cuando hablé de eso, la gente siempre refiere el puerto UART   como un puerto RS-232. ¿Son correctas? Sí no, Cuál es la diferencia   entre ellos?

Leyendo entre líneas, puede estar hablando del caso en el que tiene una placa con una MCU a la que se puede acceder (código de descarga, depuración, etc.) a través del puerto USB de su computadora. Ahora es bastante común operar de esa manera.

Si es así, es probable que su sistema operativo esté configurando un puerto "RS-232 virtual" para su dispositivo. Esto no es realmente un puerto RS-232, en absoluto. En su lugar, es un software que se ejecuta como un controlador en su sistema operativo que emula los detalles de un controlador de "puerto serie" antiguo. Este software se comunica con una MCU separada (una que también está también en la placa con su MCU) a través de un chip convertidor de USB a serie (también hay varios fabricantes para ellos). MCU independiente es lo que realmente está conectado a los pines del puerto UART de su MCU. Probablemente, también está conectado a los pines JTAG de su MCU, para que se pueda realizar la depuración. Existe un software adicional en esta MCU independiente que maneja los detalles de la depuración Y las comunicaciones UART con el sistema operativo de su computadora.

Entonces. Sí. La gente se refiere a eso como un puerto RS-232, cuando están pensando en esto desde el punto de vista de cómo el sistema operativo + el controlador del software hace que aparezca en un programa de aplicación que se ejecuta en ese sistema operativo . Luego, puede usar cualquier aplicación estándar que sepa cómo abrir un puerto RS-232 mediante las llamadas de función estándar que el sistema operativo proporciona para ese propósito y que funcionaría bien. Por lo tanto, es un puerto RS-232 desde el punto de vista de ese programa de aplicación.

Pero en realidad, no lo es.

Por separado, un UART es un "receptor / transmisor asíncrono universal" y tradicionalmente se refiere a un chip IC o también a un bloque funcional en una MCU. De cualquier manera, generalmente fue un hardware diseñado para que sea fácil para el software que usted escribe para manejar el protocolo serial asíncrono utilizado (bit de inicio, bits de datos y uno o más bits de parada). Es posible golpea el protocolo, pero es un verdadero dolor y la alta velocidad se vuelve más o menos inalcanzable entonces.

También verá USARTs - receptor / transmisor sincrónico / asíncrono universal - en algunas MCU, también. Solo significa que pueden hacer más que un UART, pero que también incluyen las capacidades de UART.

RS-232 es un conjunto de especificaciones sobre voltajes, carga, etc. También especifica un montón de detalles de señalización, que cubren bastantes líneas de señal disponibles diferentes. Pero es mejor ver RS-232 como una especificación electrónica que define los rangos de voltaje para marca y espacio , márgenes de ruido, detalles de carga permitidos en el receptor y otros detalles involucrados en la traducción. entre rangos de señales analógicas y digitales discretas y no tanto acerca de algunos protocolos seriales específicos de UART.

Solo voy a referirte a las páginas de Wiki para obtener detalles (que deberías haber leído antes de preguntar aquí, creo). Estos son: RS-232 y UART . No tengo ningún deseo real de duplicar ese trabajo.

    
respondido por el jonk

Lea otras preguntas en las etiquetas