problema de implementación RS485

5

Estoy intentando implementar un enlace RS485 entre mcu y pc. Estoy usando MAX485 para probar mi configuración.

Pregunta: No puedo recibir bytes si uso resistencia de terminación. ¿Por qué? ¿Cómo resolver esto?

Historia:

Si coloco una resistencia de terminación (120 ohmios), es obvio que los pines A-B ya no tienen alta impedancia. De acuerdo con la hoja de datos, si los pines A-B no están en alta impedancia, el RO (Lectura) de MAX485 ic está bajo mientras se escucha. Si la línea de datos está baja justo antes de que comience la transmisión, esta secuencia no se acepta como una secuencia válida. Es por eso que no puedo recibir bytes si uso resistencia de terminación.

Resolví este problema eliminando la resistencia de terminación. Esto colocó los pines A-B del CI de MAX485 en un estado de alta impedancia, que convierte el pin RO (Pin # 1, el pin TX de este IC) en estado alto mientras escucha. Dado que el pin TX de este IC es alto justo antes de que comience la transmisión, puedo comunicarme según lo previsto. Pero sé que necesitaré usar resistencia de terminación.

¿Qué está mal con esta configuración?

Comportamiento del circuito:

  1. En la pantalla del terminal de PC, se presiona una tecla
  2. El convertidor USB / RS232 genera una secuencia desde su pin TX.
  3. STM32F407 recibe este carácter y simplemente lo repite a través de su pin TX.
  4. MAX485 ic recibe este carácter, lo convierte en una señal diferencial.
  5. Otros MAX485 ic obtienen esta señal diferencial y la convierten al personaje.
  6. El convertidor USB / RS232 obtiene este carácter a través de su pin RX.
  7. El carácter recibido se muestra en la pantalla del terminal de la PC.

Caso de prueba: la configuración es correcta si puede ver el carácter presionado en la pantalla del terminal en la PC.

(Sé que mezclé los niveles de TTL y CMOS ya que no tengo los IC adecuados en este momento. Conversiones realizadas por resistencias)

Este es mi circuito de prueba:

EstaeslatabladeverdaddeMAX485:

    
pregunta ceremcem

2 respuestas

3

Casualmente, acabo de completar un proyecto usando el mismo rs485. Agregue una resistencia de pull-up en DE, y una resistencia de pull-down en 'RE. De esta manera, siempre estará listo para recibir o transmitir. (10k pull-up, 220 ohms pull-down) Haga esto para ambos circuitos integrados. No dejes ninguno de estos pines flotando. ¡Buena suerte!

    
respondido por el RalphGJr
1

Normalmente, la línea de datos en serie (en el MAX3232) debe estar alta cuando no se están transmitiendo datos. Una transición de alto a bajo señala un bit de inicio de la trama de datos. Conducir la línea de datos baja durante un largo período señala una condición de ruptura. ¿Podría esto confundir su convertidor RS232 / USB? Intente colocar un inversor en la salida de su receptor y otro en la entrada de su transmisor; esto pondría la salida de un bus RS485 inactivo en estado alto.

    
respondido por el user28910

Lea otras preguntas en las etiquetas