¿La interrupción de la transmisión sobre el conjunto de chips FTDI produce un 0 binario recibido en el extremo receptor?

2

Puedo enviar descansos (usando Tx) sobre el conjunto de chips FTDI FT232R de dos maneras:

a. Using the BREAK command in the operating system (Windows 7 and Ubuntu)
b. Gating the Tx line for an arbitrary period

Conecté el pin Tx al pin Rx del FT232R (prueba de bucle invertido) y usé varias consolas seriales para leer la entrada Rx

Siempre tengo un 0 binario en ambos casos. Cada caso se comportó de manera individual:

  • i. Al usar el comando BREAK, recibí un 0 binario cuando el comando BREAK se activó (BREAK está bajo)
  • ii. Al marcar la línea Tx, recibí un 0 binario cuando forzé la línea Tx baja

Esto no me parece correcto.

El único momento en el que UART Rx se puede "confundir" entre BREAK y una transmisión binaria 0, es cuando BREAK cambia la línea baja por exactamente 9 bits de duración y luego vuelve a la línea alta (lo que hace que el lado Rx interprete mal) como un bit de parada), pero esto rompe una definición de INTERRUPCIÓN que requiere que la línea se mantenga baja durante al menos 10 bits de duración.

Así que mis preguntas son:

  1. ¿Es este comportamiento esperado?
  2. Si realiza una prueba de bucle invertido en sus conjuntos de chips FTDI, ¿puede reproducir este comportamiento (lo que implica que tengo controladores incorrectos / conjunto de chips defectuoso)?
pregunta vsmGuy

1 respuesta

4

Sí, este es el comportamiento esperado. La mayoría de los UART interpretarán el inicio de una condición de "interrupción" como un byte todo-cero (nulo) que tiene un error de trama (sin bit de parada). Algunas UART (pero no todas) también tienen detección de "ruptura" por hardware, pero esto generalmente se activa solo si la condición de ruptura se extiende por más de dos tiempos de caracteres completos (es decir, > 20 bits).

Tradicionalmente, un UART de hardware hace que todos los bytes recibidos estén disponibles para el software; en otras palabras, cualquier cosa que pueda interpretarse como un bit de inicio causará que se entregue un byte al software, junto con los bits de estado que indican posibles paridades y / o errores de trama (bit de parada). Depende del software descartar los bytes que tienen errores, si ese es el comportamiento deseado.

No sé específicamente sobre el FT232R; puede ser uno de esos UART que simplemente no se preocupa por los errores de encuadre y no tiene forma de enviarlos al host USB.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas