4 votos

¿el cambio de la configuración del número de bits de parada de la UART (lado del receptor) afecta a la corrección del mensaje?

Estoy utilizando la USART en la placa para mostrar los mensajes en el terminal del PC de escritorio utilizando Realterm

Me he dado cuenta de que, cuando cambio el número de bits de parada en el Realterm, no afecta a la corrección del mensaje, al contrario que la tasa de baudios, o el número de bits.

¿Por qué el número de bits de parada no afecta a la corrección?

7voto

Nils Pipenbrinck Puntos 1718

El bit de parada tiene un nivel lógico alto, es el último bit que se transfiere si se transmite un byte por RS232. En caso de que no se realice ninguna transferencia, la línea queda inactiva, y esto se señala también como un nivel lógico alto.

Si aumenta el número de bits de parada en el lado emisor de una conexión RS232, el lado receptor interpretará el primer bit de parada como un bit de parada, y todos los bits de parada siguientes como tiempo de inactividad en la línea.

En efecto, por cada bit de parada adicional se añade un pequeño retardo entre los bytes transferidos por el enlace.

0 votos

Tenga en cuenta que lo inverso probablemente no funcionará: cuando el receptor espera 2 bits de parada y los comprueba (AFAIK no todos lo hacen, incluso cuando se establece en 2 bist de parada), y el reveiver envía sólo un bit de parada y un nuevo byte inmediatamente después del bit de parada, el receptor señalará un error (de encuadre).

1 votos

@WoutervanOoijen Correcto, sin embargo recibirá el último byte de cualquier transferencia continua porque el tiempo de inactividad se interpretará de nuevo como un bit de parada.

0 votos

Correcto. Y cuando de alguna manera hay un hueco entre cada byte tranismitido el problema nunca se notará...

0voto

Martin Vobr Puntos 128

Un segundo bit de parada en el transmisor hace que la comunicación sea más resistente a las interrupciones, permitiendo al receptor detectar un verdadero inicio de byte más rápidamente que con un bit de parada.

Cuando tienes un flujo continuo de bytes y enciendes el receptor a mitad del flujo, lo más probable es que obtengas un byte de su mitad, tomando los datos reales como un bit de inicio y confundiendo los bits de inicio/parada como parte de los datos. Por supuesto, esto significa que obtendrás basura durante un tiempo. Los errores se acumularán hasta que el receptor finalmente obtenga el bit de inicio real para un inicio de palabra y el flujo se estabilice. El momento en que esto ocurre depende de los propios datos; es más probable que ocurra después de los bytes que terminan en unos, como 0x01, 0x03, 0x07, 0x0f, 0x1f o similares, porque tienen menos ceros para ser tomados como bits de inicio.

Cuando tienes dos bits de parada, estadísticamente llegarás a ese punto más rápido que con un bit de parada (siempre que todos los bytes se transmitan sin ninguna pausa o retardo entre ellos, que actuarían como bits de parada adicionales efectivos). Esto era especialmente útil en hardware antiguo como los teletipos con velocidades de transmisión muy bajas y líneas muy ruidosas, especialmente si no tienes un protocolo subyacente (con sumas de comprobación, retransmisiones y demás).

Sigue siendo una buena medida utilizar dos bits de parada (en el transmisor) si tienes alguna de las condiciones mencionadas.

Por supuesto, has preguntado por el lado del receptor. No creo que sea muy útil usar dos bits de parada, pero podría ayudar a detectar errores de encuadre también dependiendo de la implementación (si la palabra es rechazada o aceptada cuando se encuentra un error).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X