Han pasado más de 10 años (desde que diseñé el hardware con RS-232), ¿y seguimos usando RS-232?

¿Hay alguna alternativa a esta antigua pero aún popular forma de comunicación?

Respuestas (8)

¿Han pasado más de 10 años y seguimos usando RS-232?

Es solo un estándar de comunicaciones, y muy básico.

Su declaración no es muy diferente a: "Han pasado más de 10 años y todavía estamos usando cables". A pesar de que las soluciones ópticas y de RF están disponibles, el cable todavía tiene algunas ventajas muy distintas, al igual que RS-232.

Las principales ventajas son

  • Es barato
  • Es trivialmente fácil de usar.
  • Utiliza menos cables que la transmisión de datos en paralelo
  • Recorre largas distancias (medidas en cientos de pies/decenas de metros , en lugar de pulgadas/cm para la mayoría de las señales TTL/CMOS)
  • Es ampliamente utilizado en muchos productos.
  • Los problemas de compatibilidad son raros
  • Está estandarizado y se incluye un UART en todos los microcontroladores, excepto en los más simples.
  • Hay muchos convertidores disponibles para convertirlo a otros estándares (como USB)
  • Utiliza codificación NRZ trivial, por lo que es fácil de interpretar incluso sin UART

Las desventajas incluyen

  • Lento
  • No especifica el protocolo ni las capas superiores de la pila de comunicaciones.
  • Los conectores estándar son voluminosos
  • No suministra energía
  • Sin mecanismo de identificación estándar (es decir, no se puede enchufar y hacer que el anfitrión sepa lo que se conectó y sus capacidades)

¿Hay alguna alternativa a esta antigua pero aún popular forma de comunicación?

Ciertamente hay alternativas, pero ningún competidor que tenga todas las ventajas anteriores.

Podríamos enumerar los miles de estándares de comunicación que se podrían usar en lugar de RS-232, pero la conclusión es que RS-232 no ha sido reemplazado ni superado. USB es lo más parecido a él, pero está severamente limitado en términos de distancia, costo, facilidad de uso y silicio incluido en la mayoría de los microcontroladores.

Sin embargo, USB tiene otras ventajas significativas que RS-232 no tiene. No se reemplazan entre sí y, de hecho, coexisten felizmente en muchas computadoras.

El punto clave es que RS-232 es una herramienta y, como tal, no es intrínsecamente mala ni necesita ser reemplazada. Cada vez se usa menos en estos días, ya que la gente quiere funciones más avanzadas, o velocidades más rápidas, o tiene algún otro requisito que RS-232 no cumple.

Pero eso no significa que deba o vaya a desaparecer, porque todavía hay muchas aplicaciones nuevas en las que RS-232 encaja perfectamente.

¿Qué quieres decir con sólo 10 años. RS-232 se definió en 1962 y, por lo tanto, se acerca a su 48 cumpleaños.

RS-232 utiliza un método simple de transferencia de datos en serie asíncrona que requiere muy poco silicio, es fácil de codificar en software y se puede usar en micros con cantidades mínimas de RAM o memoria de programa. También ha tenido la ventaja en el pasado de que todas las computadoras y terminales tontos tenían interfaces RS-232, por lo que usarlo para la salida de depuración era una obviedad.

Si necesita una transmisión de mayor velocidad o de larga distancia, simplemente reemplace los controladores de línea con controladores/receptores diferenciales RS-422 o RS-485 y no se necesita ningún cambio en el software.

Implementar USB en pequeños micros simplemente no es posible. La sobrecarga de procesamiento/memoria/silicio es demasiado costosa.

SPI o I2C son posibles (y se usan en algunos lugares), pero las tarjetas de interfaz para su PC son inusuales y costosas. I2C tiene un estado de bloqueo desagradable que puede hacer que muera si el reloj se detiene a la mitad de un ciclo de salida de datos esclavo y el bit de datos es bajo.

¿Por qué dices que I2C "muere" en ese escenario? Es cierto que iniciar una transmisión cuando se desconoce el estado anterior del bus puede requerir el envío de hasta nueve relojes, pero eso se puede manejar haciendo que la rutina i2c_start verifique el estado de la línea de datos y emita hasta nueve pulsos de reloj si es bajo. (deje de emitir pulsos tan pronto como suba). Incluso mi código 6502 I2C hace eso. ¿Hay alguna otra condición problemática en la que esté pensando?
Ese es el escenario y la cura a la que me refería. Si está utilizando un periférico integrado I2C o (Atmel) TWI, es posible que tenga que reasignar los pines del puerto en uso y luego alternar manualmente la línea del reloj nueve veces para salir del bloqueo antes de reasignar el pin a la función I2C. Todo un poco desordenado.
Eso tiene sentido. Por lo general, golpeo los maestros I2C, por lo que no tengo que lidiar con ese problema a menudo, pero puedo ver que para las personas que usan un maestro I2C compatible con hardware, podría ser un problema. Me preguntaba si podría estar refiriéndose a un problema diferente de "bloqueo I2C" que he observado al intentar ejecutar un bus I2C de velocidad completa (400 KHz) cuando un esclavo en el bus es un micro cuyo reloj del sistema funciona en bajo. modo de potencia (6 MHz en lugar de 24 MHz). Debido a que I2C admite el protocolo de enlace, los únicos límites para la velocidad con la que un bus puede "intentar" ir de manera segura, si el maestro admite el protocolo de enlace, ...
...debe estar relacionado con los tiempos de subida diferenciales de SCK/SDA (si, por ejemplo, SCK aumentara más rápido que SDA, liberar SDA y luego liberar SCK demasiado pronto podría causar una condición de inicio falso). Sin embargo, parece que algunas implementaciones I2C esclavas no aceptan pulsos SCK que no son bajos en algunos de sus ciclos de reloj internos, y pueden quedar bloqueados si uno intenta hablar a toda velocidad con otros dispositivos en el bus. gr...
  • Muy fiable.
  • Fácil de implementar.
  • Requiere solo 3 cables, la mayor parte del tiempo.
  • Utiliza una amplia oscilación de voltaje.
  • Tiene muchos dispositivos que lo han usado.
    • ratones
    • impresoras tengo al menos una
    • módems
    • escáneres
    • escáneres de código de barras
    • multímetros
    • unidades GPS
    • varios equipos científicos
  • Se puede usar para transferir datos entre dos computadoras con solo cambiar unos pocos cables. (Solo intente eso con USB)
  • Se ha implementado en muchos microcontroladores diferentes.
  • No requiere cable costoso. Excepto en circunstancias extremas, incluidas las altas velocidades.
  • Puede hacer fácilmente su propio cable, sin herramientas especiales.
  • Se puede adaptar fácilmente para tramos de cable más largos, utilizando señalización RS-422 o RS-485.

Francamente, con ese registro, me sorprendería si alguna vez desaparece por completo.

La señalización diferencial es una tontería.
@community, @starblue acaba de usar una técnica llamada "sarcasmo". Algo así como.

Hay muchas alternativas. USB es el que parece más utilizado hoy en día. I2C es otro.

RS-232 todavía existe por razones heredadas. Si puede soportar la mezcolanza de diferentes velocidades de datos, bits de parada, configuraciones de paridad y configuraciones de cableado, en realidad es una interfaz bastante simple, sólida y confiable para aplicaciones de baja velocidad de datos.


Hace poco escuché un podcast que discutía el manejo del audio en un seminario. Todos los profesionales del audio todavía usan conectores XLR y cables de micrófono convencionales, una tecnología que tiene al menos 50 años , aunque hay alternativas más nuevas disponibles. Lo usan porque es estable, probado, confiable y estándar de la industria.

Distinguir la comunicación UART serie de los distintos niveles de tensión utilizados para transmitirla: RS232, RS485, LVDS.

La comunicación serial UART es confiable y simple.

Muchos sistemas convertirán el RS-232 a USB usando un convertidor IC. Los que parecen ser los más populares son los dispositivos FTDI. FTDI vende un cable con un conector USB en un extremo y un cabezal de seis pines en el otro (FTDI TTL-232R-3V3). Esto convierte de un USB a RS232 a niveles TTL

FTDI también fabrica un IC para realizar la misma función: FTDI FT232RL. Esto está en un paquete SMD. Conectas las entradas de datos al conector USB y las salidas a un RS232 a Niveles TTL . El cable está en el rango de $ 15- $ 20. El IC es de alrededor de $2.50 (100). El IC requiere media docena de pasivos. También me gusta agregar un TVS IC.

Si necesita obtener niveles reales de RS232, necesitará un controlador IC.

Más partes de aficionados ahora están comenzando a integrar USB en los controladores de gama baja. RS232 comenzará a usarse solo cuando necesite una gran cantidad de UART simples.

En la práctica, encontrará que esos convertidores no están exentos de problemas; por ejemplo, exponen la realidad de que el USB es en realidad más lento que las velocidades de transmisión en serie típicas para cierto tipo de tráfico de consulta/respuesta. Y no, "un gran número de UART" no será la única justificación: la simplicidad tiene un atractivo mucho mayor que eso.

Soy un fanático de USB <--> Serial IC, maneja todo el trabajo sucio de implementar USB, y puede aumentar las tasas de bits a niveles extremos (el RS232 oficial alcanza un máximo de ¿115k? He visto USB<- ->serial hacer varios mbit/seg antes)

¿Qué dispositivos usas?
RS232 puede ir significativamente más rápido que 115k. He ejecutado RS232 en MBAUD antes, es solo una cuestión de distancia y error de reloj.

La señalización de nivel de voltaje RS232 se está volviendo menos común, ya que cada vez más dispositivos están diseñados para conectarse a un puerto USB en lugar de un puerto RS-232. Sin embargo, el protocolo de señalización asíncrono común 8-N-1 permite que los datos se envíen en dúplex completo con una sincronización predecible y sin relleno de bytes. Se puede iniciar un byte en cualquier momento deseado cuando la línea está inactiva y no hay peligro de insuficiencia de datos. El hardware para admitir la señalización 8-N-1 es común y económico, y aunque el protocolo no es del todo óptimo, muchos cambios que lo mejorarían para algunas aplicaciones lo empeorarían para otras. La única desventaja significativa de 8-N-1 es que requiere que ambos lados de la comunicación tengan un reloj estable que es un múltiplo conocido (generalmente un número entero) de la velocidad de comunicación deseada.

Por cierto, la mayoría del hardware 8-N-1 asíncrono permite al menos un tipo de señalización fuera de banda: la interrupción prolongada. Si bien hay momentos en los que sería útil tener algunos tipos más de señalización fuera de banda, es útil tener al menos uno.