RS485 vs RS232 similitud vs diferencias

He utilizado ampliamente la comunicación UART RS232 entre MCU. Ahora necesito conectar mi MCU STM32F407 a través del bus RS485 con dispositivos. He entendido algunas cosas sobre RS485 pero no tengo claro algunos puntos. Por favor corrígeme si me equivoco en mi entendimiento:

  1. Desde el punto de vista del firmware de MCU, ambos son iguales ya que usamos los mismos pines para RS232 o RS485.

  2. La principal diferencia está en sus niveles de tensión de señal ya sea punto a punto (RS232) o multipunto (RS485).

Los esquemas compartidos son drásticamente diferentes porque el software debe saber cuándo hablar.

Respuestas (2)

Mayormente correcto. Ciertas configuraciones de semidúplex, detección de colisiones RS485 requieren una señal de habilitación del controlador y cambios de software para detectar la colisión que RS232 nunca necesitaría. RS485 también podría tener direccionamiento implementado en hardware o software que RS232 nunca tendría.

Pero para las comunicaciones punto a punto, puede usar esencialmente el mismo código para RS232 y RS485 dúplex completo.

RS232 está orientado a bytes, ¿qué pasa con RS485 ... está orientado a bits o bytes?
Con RS-485 hay un poco más de flexibilidad ya que puede tener multimaestro y multipunto, pero aún así todo vuelve a lo que permite el módulo UART en la MCU, y no el RS-485 en sí. El UART podría permitirle enviar 7, 8 o 9 bits entre cada bit de parada e inicio, donde el bit adicional podría ser un bit de paridad o un bit de indicador de dirección, y la carga útil podría ser de 7 u 8 bits. Tendría que leer el manual del dispositivo RS-485 con el que está interactuando para ver los detalles de su protocolo (que tendría que hacer de todos modos para averiguar qué mensajes envía y recibe).
Recuerde que RS-232 también se puede configurar con un bit de paridad como noveno bit. Por lo tanto, no es del todo exacto decir que está orientado a bytes. Todo se reduce al UART detrás del transceptor RS-232 y RS-485. RS-232 y RS-485 son solo la capa física y eléctrica. Por ejemplo, el UART es lo que produce los bits de inicio y parada. Existen muchos codificadores cuádruples que emiten sus pulsos a través de RS-485 como un flujo de pulsos sin bits de inicio o parada.
El RS485 dúplex completo se conoce como RS422, por lo que realmente no existe el "RS485 dúplex completo".

RS232 utiliza señales no balanceadas. RS485 tiene señales balanceadas que aumentan radicalmente la inmunidad al ruido.

Tiene razón en que varios dispositivos pueden usar los mismos cables RS485. Por supuesto, solo uno de ellos puede transmitir a la vez, pero todos pueden transmitir por turnos. RS232 no tiene esa capacidad, cada cable tiene un transmisor dedicado. RS485 necesita un software complejo para mantener la ley y el orden si hay varios transmisores posibles en el mismo bus. Ese es un problema general de redes y tiene varias soluciones comunes.

RS232 define cómo se presentan los bits y caracteres transferidos (= tiempo) y el protocolo de enlace para el control de flujo, RS485 define solo los niveles de voltaje de bit, uno puede usar tiempos tan complejos como quiera.

FE DE ERRATAS: Los comentarios afirman que el formato de datos de comunicación asincrónica común con bits de inicio y parada no es parte de la especificación RS232. El usuario Sam Gibson lo ha comprobado con el estándar actual, por lo que es un hecho y me equivoqué.

RS485 no define tiempos más o menos que RS-232... el UART define eso,
RS232 tiene definiciones de formato de datos y protocolo de enlace. Tal vez el tiempo es un mal término para ello.
Handshaking o control de flujo de software son los términos que está buscando. Pero todavía están definidos por el estándar UART y no tienen nada que ver con RS485 o RS232, que son estándares de hardware. El mismo protocolo de enlace se puede utilizar para RS485 dúplex completo.
Desafortunadamente, no tengo los estándares porque tienen derechos de autor y son cosas comerciales de alto costo. ¿Crees que folletos como este son basura analog.com/media/en/technical-documentation/…
Puede que tenga razón debido a la evolución de RS-232 y al uso de terminología omnipresente. Pero probablemente sea mejor pensar en RS-232 como hardware y UART como software, ya que a menudo se usa con diferentes interfaces eléctricas.
Nadie impide conectar UART a través de señales que no sean RS232. Los músicos tienen su MIDI, por ej. Pero, ¿tiene algunos hechos que indiquen que en alguna fase de su vida RS232 no ha comentado cosas como la longitud de las palabras o los bits de inicio, parada y paridad?
@user287001 - Hola, solo para tu información, tengo una copia de RS-232-F (última versión, ahora llamada ANSI/TIA/EIA-232-F). Realmente no especifica que el formato de datos sea el formato de inicio/datos/parada (es decir, reloj incrustado) que usamos con los UART . De hecho, no puede decir eso, porque RS-232 también se usa (¡ahora rara vez!) para transferir datos entre dispositivos con flujos de datos síncronos . Los relojes necesarios para esos datos síncronos están en los pines 15, 17 (y ocasionalmente 24) del conector estándar de 25 pines. Los datos (todavía en los pines 2 y 3) no tienen bits de inicio o parada. Sí, eso significa el enlace que encontró en analog.com (continuación)
(continuación) ... es incorrecto, porque asume que RS-232 se usa para datos asíncronos, por lo que muestra ese formato de datos. Por supuesto, ese es el uso más común, como sabemos. Pero eso no cambia el hecho de que se han utilizado datos sincronizados en RS-232 (hace mucho tiempo que hice la decodificación de protocolos como parte de la resolución de problemas de tales conexiones, así que sé que es parte del estándar RS-232). Es solo que ahora async es tan común, que para muchas personas (y en ese documento de analog.com) RS-232 = formato UART (es decir, iniciar/datos/detener) pero estrictamente eso no es cierto y el estándar RS- 232 no dice eso. ¡Espero que ayude!
@SamGibson Aparentemente, las creencias y las prácticas comunes son malos reemplazos del conocimiento. ¡Gracias! Voy a arreglar mi escritura pronto.
@ user287001 - Me alegro de haber podido ayudar :-) Sospecho que la sincronización de datos a través de RS-232 ahora es tan rara que muchas personas no la han visto. (No lo he usado durante más de 20 años, pero algunos de los equipos de IBM involucrados aún podrían estar en uso en alguna parte...) Eso es lo que sucede con un estándar definido por primera vez en la década de 1960, que se usó para todo tipo de dispositivos que ahora están obsoletos, ¡pero ese estándar todavía se usa! Cada vez quedan menos personas vivas que trabajaron en esos dispositivos obsoletos, por lo que el conocimiento se pierde lentamente...
Sin embargo, eso plantea la pregunta sobre dónde se definen los bits de inicio y parada porque sabía que RS-232 solo especificaba el hardware, pero aún no tengo idea de dónde se especifica la capa lógica.