RS485 línea no controlada lee 0

2

Este es un seguimiento de SN65176 RS485 contention .

Resolví el problema de la contención esperando al menos 26us después del bit de parada de un controlador RS485 XS201A conectado a PC antes de transmitir desde el SN65176. Sin embargo, evitar la contención no es suficiente.

Inicialmente, mi red de terminación del lado PIC consistía en un único terminador diferencial de 100 ohmios:

simular este circuito : esquema creado usando CircuitLab

Tan pronto como el XS201A termina de transmitir, la tensión diferencial vuelve a un valor promedio. Sin embargo, este valor promedio es no 0V diferencial, como es de esperar. En cambio, el conductor está tirando fuertemente de la línea hasta la mitad del estado de la marca. En el proceso, piensa que eso significa un bit de inicio y emite un byte "0" (o un byte parcial dañado desde el lado PIC, si comienza a transmitir poco después).

Luegohiceunareddepolarizaciónparaimitarelestadodel"espacio" (opuesto a la marca), de manera que:

  • la impedancia diferencial sigue siendo de 100ohm
  • el voltaje diferencial está polarizado a 500 mV
  • la línea inferior está sesgada a 1.5V

simular este circuito

La adición de esta red de polarización la hizo tal que, a lo largo de unos pocos miles de bytes, mi tasa de error ahora es aproximadamente del 0,4% (en comparación con el 100%). Sin embargo, incluso con esta mejora, no hay un cambio visible en los voltajes en estado inactivo: el XS201A esencialmente está anulando mi red de polarización e invirtiendo la polaridad de la resistencia media.

Mis preguntas son:

  • ¿Por qué el XS201A no entra en un estado de alta impedancia cuando está inactivo?
  • ¿Por qué el XS201A tiene un voltaje diferencial diferente a cero que se mantiene fuertemente cuando está inactivo?
  • ¿Hay algún problema con mi nueva red de sesgo?
  • ¿No debería esperar tener una resistencia de terminación simple en lugar de una red de polarización, especialmente desde el XS201A? ¿Afirma tener una red de polarización a prueba de fallos integrada?
pregunta Reinderien

3 respuestas

0

Para solucionar estos problemas, terminé abandonando el XS201A por completo. No tiene una señalización de hardware adecuada, y sus características de sesgo fueron problemáticas.

    
respondido por el Reinderien
2

RS-485 tiene un voltaje diferencial definido tanto en la marca como en el espacio. El estado inactivo es cuando el voltaje V_diff es -0.2V < V_diff < 0.2V; esto se hace al poner el transmisor en un estado Hi-Z, generalmente controlando la señal RTS desde el UART. RTS se usa para encender / apagar el transmisor, desde Hi-Z hasta el nivel de voltaje definido para marca / espacio.

    
respondido por el Marko Buršič
1

Antigua pregunta, pero ...

Existe una desviación a prueba de fallos, donde las líneas se mantienen ligeramente en uno de solo dos estados válidos en el que debe estar el par trenzado.

Si esto sucede en su XS201A, podría significar que, de hecho, está funcionando según lo previsto. Los voltajes inesperados podrían explicarse por una conversión hacky dc-dc, como hicieron con los antiguos programadores PIC / AVR. Si eso es un problema, recomiendo obtener un adaptador autoalimentado adecuado.

Para obtener una explicación más detallada de la polarización a prueba de fallas en RS485, observe esta nota de aplicación de Ti .

    
respondido por el Charlie

Lea otras preguntas en las etiquetas