Razones por las que se usa RS232 en lugar de USB

3

Estaba intentando descubrir las razones reales por las que las señales USB se convierten a RS232 en serie. Llegué a comprender que (si no me equivoco), el USB es más rápido y sincrónico, mientras que los chips utilizan UART, que necesita el protocolo RS232.

¿Todos los chips están diseñados para la comunicación de datos serie TTL (RS232)? ¿Es ese el motivo por el que el USB nunca se usa directamente para la comunicación de datos con circuitos integrados?

Y una cosa más relacionada. Cuando estamos cargando croquis (código) en el microcontrolador Arduino, primero configuramos la velocidad de transmisión, es decir, 9600. Creo que esta es la velocidad de transferencia de datos de USB a Arduino. Si el USB se convierte a RS 232 antes de llegar a la UART de ATMEGA, ¿qué está cambiando? ¿Nivel de voltaje? Baudrate? ¿Sigue siendo la velocidad en baudios 9600 en la UART?

    
pregunta user16307

4 respuestas

5

TTL y RS232 se excluyen mutuamente (aunque puede convertir fácilmente de uno a otro). Creo que estás cambiando alrededor de UART y RS232. UART es tiempos, orden de bits, números de bits, etc., pero no voltajes. RS232 agrega voltajes, conectores y pinouts, etc. sobre UART. Es una de las muchas manifestaciones físicas de la comunicación UART. TTL es otra manifestación física del protocolo UART, y se usa a menudo de chip a chip. (Técnicamente no hay nada RS232 en el Arduino. No creo que haya oído hablar de un micro que realmente funcione con niveles RS232). Hay varias razones para usar los chipsets / circuitos USB-UART o USB-RS232:

  1. Hardware heredado y preferencias de diseño arraigadas: la automatización industrial y otros tipos de dispositivos electrónicos resistentes, como el uso de RS232 y otros métodos de comunicación probados y comprobados, especialmente cuando la velocidad a menudo no es una limitación seria. RS232 / UART también son mucho más fáciles de aislar eléctricamente que el USB por seguridad cuando se trabaja con dispositivos de voltaje de línea.

  2. Direct USB es más complicado de implementar como dispositivo, y mucho más complicado de implementar como host. Si diseño un dispositivo RS232, cualquier otra persona puede diseñar algo que funcione con bastante facilidad. Esto es cierto tanto para los hosts de PC como para los hosts basados en micro. RS232 es mucho más simple en ambos casos.

  3. Puede comunicarse con algunos micros MUY pequeños utilizando UART, pero el 50% más pequeño (de dar o recibir) de los micros no es compatible con USB. Además, puedes hacer una pausa en tu depurador mientras usas UART sin que Windows elimine la comunicación en tu dispositivo :)

En cuanto a la velocidad en baudios de Arduino, es confuso. Esto no tiene efecto en la comunicación entre la computadora y el chip USB-UART (FTDI, etc.). Esta no es una comunicación UART, sino una clase de CD-USB para emular un puerto serie RS232 (u otro UART) a través de USB. La velocidad en baudios tiene efecto entre este chip y el micro, que es una comunicación real de 5 V (TTL / CMOS) UART.

    
respondido por el Nathan Wiebe
7

Has encontrado alguna información errónea por ahí. Haces que parezca que el USB siempre se convierte a RS-232, y esa es la única razón de la existencia del USB. Eso es completamente falso. USB es un hardware bien pensado deliberadamente diseñado y una interfaz de protocolo de bajo nivel diseñada para conectar dispositivos comunes a una computadora de propósito general.

Antes de USB, había tarjetas serie (RS-232), paralelas (impresora Centronic) y enchufes en un bus en la placa base. Todos estos tenían sus problemas, y el USB estaba motivado en parte por su deficiencia.

A medida que la cantidad de dispositivos RS-232 disminuía a medida que el USB ganaba popularidad, la cantidad de puertos RS-232 se redujo en muchas computadoras y se redujo por completo en algunas. A veces todavía necesita RS-232 para dispositivos especiales o circunstancias. Una forma de abordar esto es con un convertidor de USB a RS-232. Lo enchufas y ahora tu computadora tiene un puerto "COM" con el que no se creó originalmente.

La mayoría de las instancias de USB se comunican con dispositivos que hacen USB directamente. Hay microcontroladores que vienen con hardware de interfaz USB incorporado. Solo necesita conectar las dos líneas de datos directamente a dos pines y el dispositivo puede comunicarse a través del USB con el firmware correcto. Por ejemplo, vea PIC 18F2550 y algunos más nuevos también.

Entonces no, no todos los chips están diseñados para RS-232. Muchos microcontroladores tienen UARTS porque son simples y siguen siendo útiles en aplicaciones integradas, pero los dispositivos de usuario final ya casi nunca hacen RS-232, y muchos son USB.

    
respondido por el Olin Lathrop
2
  

Estaba intentando descubrir las razones reales por las que las señales USB se convierten a RS232 en serie. Llegué a comprender que (si no me equivoco), el USB es más rápido y sincrónico, mientras que los chips utilizan UART, que necesita el protocolo RS232.

RS232 es un estándar extremadamente antiguo desarrollado en los (relativamente) primeros días de la informática. Se ha extendido para hacer muchas cosas para las que no estaba destinado y se le agregaron "bits adicionales". Si bien RS232 es correctamente el estándar relacionado con la interfaz y los niveles, el término se ha extendido para cubrir la mayoría de los aspectos de la interfaz, la velocidad de datos, el protocolo de comunicaciones básico, los conectores y más.

USB es un estándar mucho más moderno. Proporciona un sistema de transferencia de datos en distancias cortas a velocidades mucho más altas de lo que RS232 está destinado a hacer.

Las principales razones de los convertidores de USB a RS232 existentes son

  • En una etapa, casi todas las "PC" tenían una interfaz seriel, esencialmente una interfaz RS232. La mayoría de las "PC" modernas ya no son interfaces RS232. El euqipment más antiguo con una interfaz RS232 a menudo, pero no siempre, puede conectarse a una PC mediante un convertidor RS232 a USB.

  • El procesamiento & la sobrecarga de complejidad en el mantenimiento de una "pila USB": la interfaz del software a un puerto USB, es considerable y no es fácil de manejar ni para los programadores de nivel de entrada ni para los equipos de extremo inferior. Los requisitos de interfaz para RS232 son muy modestos tanto en complejidad de código como en tamaño de código. Son "lo suficientemente fáciles de programar" y se acomodan lo suficiente en el extremo inferior de los procesadores, incluso con recursos de hardware mínimos. Incluso los procesadores en los que ni Olin ni Wouter pudieron implementar el USB pueden manejar las comunicaciones en serie asíncronas, que es el corazón de RS232.

  

¿Todos los chips están diseñados para la comunicación de datos serie TTL (RS232)? ¿Es ese el motivo por el que el USB nunca se usa directamente para la comunicación de datos con circuitos integrados?

Esa pregunta es un poco confusa. RS232 es una interfaz serial por defecto. Normalmente se utilizaron niveles de 1 ~ = - 12 voltios lógicos y 0 ~ = +12 voltios lógicos. Algunas variantes utilizan la lógica 1 = + 5V y la lógica 0 = 0 voltios (es decir, nominalmente (solo) niveles TTL). Esto facilita el uso de circuitos integrados lógicos estándar que funcionan con 5V. Se pueden usar convertidores muy simples para interactuar con una verdadera interfaz RS232 en muchos casos. Este es un método de operación marginal cuando se trabaja con una interfaz RS232 "verdadera" y necesita cuidado y comprensión para funcionar bien, y puede que no funcione en algunos casos. TTL a TTL funciona lo suficientemente bien para la mayoría de los propósitos.

  

Y una cosa más relacionada. Cuando estamos cargando croquis (código) en el microcontrolador Arduino, primero configuramos la velocidad de transmisión, es decir, 9600. Creo que esta es la velocidad de transferencia de datos de USB a Arduino.

9600 baudios fue una tasa de datos muy estándar históricamente. Se usa principalmente porque es un compromiso entre lo más rápido posible para ser útil y lo suficientemente lento para trabajar la mayor parte del tiempo. Se puede usar mucho más lento (por ejemplo, 300 baudios) y algo más rápido (115.200 baudios [¿Te sientes afortunado, Punk?)). Por lo general, las tasas de datos aumentan o disminuyen por factores de 2, por ejemplo, 300, 600, 1200, 2400, 4800, 9600, .... El hecho de que se utilicen 115,200 en algunos casos y NO es un poder de 2 multiplicadores le dice algo acerca de la suerte que puede tener.

  

Si el USB se convierte a RS 232 antes de llegar al UART de ATMEGA, ¿qué está cambiando? ¿Nivel de voltaje? Baudrate? ¿Sigue siendo la velocidad en baudios 9600 en la UART?

Todo está cambiando :-).

  • RS232 es un sistema de alimentación de voltaje no balanceado relativo a tierra. +/- 12V o 5 / - V o ....
    El USB es un sistema de voltaje diferencial de + / -% V nominalmente alrededor de un voltaje central de 2.5V, pero eso no es parte del sistema de señalización.

  • USB es multipunto. RS232 está nominalmente entre 2 equipos, pero esto se ha extendido en algunos de los estándares no estándar.

  • RS232 es tan tonto como vienen. La única información de control en el estándar básico se relaciona con la temporización asíncrona, la longitud de bits y el número de bits de inicio y parada y quizás la paridad.
    USB tiene una gran cantidad de información de control (o un flagelo) como parte del estándar.

  • La velocidad de datos RS232 es la que configuró. Por lo general, 300, 1200, 8600, ... PERO podría ser de 237,4 baudios si lo desea.

    La velocidad de transmisión no es significativa en un nivel de transferencia de datos para USB. Las velocidades de datos aumentan a medida que el estándar se transforma, inicialmente alrededor de 12 Mbps con USB1 y ahora más de 1 GB / s en la última versión.

respondido por el Russell McMahon
1

Una consideración es no solo que un UART toma menos espacio de silicio que un controlador USB, sino que es más fácil de programar.

Su firmware incorporado puede imprimir algo en una consola serie de manera muy sencilla con solo sondear un registro de estado para la disponibilidad de espacio en el FIFO, y almacenar el byte en el registro de transmisión.

No se requiere controlador; sólo un puñado de instrucciones de la máquina.

USB requiere una pila de protocolos solo para llegar a Hello, World.

Por lo tanto, definitivamente es bueno tener un puerto serie para el trabajo integrado.

Si tienes un chip con un UART en él, entonces se necesita muy poco espacio en el tablero para exponerlo. Solo un encabezado con un par de pines (solo dos, si no necesita un protocolo de enlace de hardware).

    
respondido por el Kaz

Lea otras preguntas en las etiquetas