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:
Desde el punto de vista del firmware de MCU, ambos son iguales ya que usamos los mismos pines para RS232 o RS485.
La principal diferencia está en sus niveles de tensión de señal ya sea punto a punto (RS232) o multipunto (RS485).
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 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é.
chris stratton