Tolerancia de error de tasa de baudios UART

Tengo una pregunta con respecto a la tolerancia de error de la tasa de baudios de UART, como indica el título del hilo. En primer lugar, quiero señalar un excelente tutorial sobre la precisión del reloj: Maxim Integrated Tutorial

Entiendo que la tolerancia al error de la tasa de baudios depende de muchos parámetros, por ejemplo, la atenuación del cable que está en correlación directa con la longitud del cable, la tasa de baudios en sí misma, etc. La tasa de baudios de UART en un dsPIC33E está determinada por un UxBRG registro, cuyo valor se calcula como:

UxBRG = F PAG dieciséis BR 1

dónde UxBRG es un registro de tipo int sin signo (16 bits), F PAG es la frecuencia de reloj de la CPU en Hz, y BR es la tasa de baudios deseada en bps.

Por ejemplo, si queremos una tasa de baudios de BR = 19200 bps , y la frecuencia de reloj de la CPU es F PAG = 60 megahercio , el valor de registro correspondiente sería 194,3125, que se puede redondear a 194 o 195. La tasa de baudios real con respecto a la UxBRG valor de registro se puede calcular como:

BR = F PAG dieciséis ( UxBRG + 1 )

Para el ejemplo anterior, la tasa de baudios real puede ser una de las siguientes:

  • BR = 19230.76923 bps ( UxBRG = 194 ) -> el error de tasa de baudios es +0.160%
  • BR = 19132.65306 bps ( UxBRG = 195 ) -> el error de tasa de baudios es -0.351%

El error de tasa de baudios se calcula como:

BR errar = BR BR BR 100 %

Sin embargo, en el ejemplo anterior, aunque UxBRG = 194 da un error de tasa de baudios absoluto más bajo (+0.160%), prefiero elegir UxBRG = 195 (-0,351%). La razón de esto es que cuando un bit en el bus de datos cambia de 0 a 1 (o viceversa), la capacitancia del cable "ralentiza" esta transición, algo así como un circuito RC, que podría ser incluso del 30% (o más). ) del período de bits. Por supuesto, esto depende de la longitud del cable, la tasa de baudios en sí misma, etc. Por esta razón, preferiría que el "reloj de tasa de baudios" se desplace desde el centro del bit hacia el final del bit. Por favor, hágamelo saber si esto tiene algún sentido.

PD Dado que en la comunicación UART el reloj se restablece en cada cuadro, sé que todo por debajo del 3% de error de tasa de baudios en condiciones de funcionamiento "normales" se considera aceptable.

¡Gracias de antemano!

Mejor, Marco.

Respuestas (2)

Preferiría que el "reloj de velocidad en baudios" se desplace desde el centro del bit hacia el final del bit.

Eso está bien cuando se mira al receptor, pero tenga en cuenta que las comunicaciones UART suelen ser bidireccionales. Si envía con un reloj lento, entonces está poniendo al receptor en el otro extremo en mayor desventaja.

Es mejor elegir el error absoluto más pequeño para obtener el mejor rendimiento en ambas direcciones.

Dave, sí, esto tiene sentido. Dado que el "error de tasa de baudios real" es (aproximadamente) la suma de los errores de tasa de baudios de dos dispositivos que se comunican. En otras palabras, en la comunicación entre dos dispositivos, uno de los relojes siempre se desplazará hacia la "izquierda" y el otro hacia la "derecha" en un eje de tiempo. Por lo tanto, el escenario más seguro es elegir la velocidad de transmisión más cercana a la "velocidad de transmisión ideal". ¡Gracias por la ayuda!

Me refiero a una declaración en la pregunta que es incorrecta y, debido a que sustenta toda la base de la pregunta, hace que la pregunta sea inválida: -

La razón de esto es que cuando un bit en el bus de datos cambia de 0 a 1 (o viceversa), la capacitancia del cable "ralentiza" esta transición, algo así como un circuito RC, que podría ser incluso del 30% (o más). ) del período de bits.

Cuando observa cualquier línea de transmisión medio decente (como coaxial o pistas de cobre diseñadas correctamente en una PCB), tiene una impedancia característica y esto se puede modelar matemáticamente como un montón de secciones cortas como estas: -

ingrese la descripción de la imagen aquí

A bajas frecuencias, R y C dominan y tienes problemas capacitivos. Por ejemplo, en las líneas de telecomunicaciones, la impedancia no es de 600 ohmios en todo el espectro del habla, sino más bien en el audio:

ingrese la descripción de la imagen aquí

A frecuencias mucho más altas, esto se establece en 100 ohmios en el ejemplo anterior, pero en muchos cables coaxiales es de 50 ohmios o 75 ohmios. Tenga en cuenta que en la imagen de arriba, la impedancia nominal (600 ohmios) se muestra con la línea de puntos y corresponde aproximadamente a la impedancia a 1 kHz.

Entonces, volviendo al punto, las transiciones de borde en su señal son muy rápidas y se transmitirán en una parte del espectro que es de al menos 1 MHz o más y, por lo tanto, la ecuación de impedancia característica (que se muestra arriba) se reduce a L C es decir, puramente resistivo.

Esto significa que, a menos que tenga lo que podría describirse como un cable realmente malo (o conexiones mal diseñadas en su PCB), los bordes de su señal digital no se filtrarán como tal.

Dado también que si no trata los cables y las pistas como líneas de transmisión, verá fenómenos extraños en su señal que pueden parecer efectos capacitivos. Estoy hablando de reflejos de señal de una línea de transmisión mal terminada. Todos estos son buenos métodos en sus propias formas: -

ingrese la descripción de la imagen aquí

Si no intenta terminar la línea con uno de los métodos anteriores, es probable que los reflejos reboten de un lado a otro y puede parecer que esto se debe a demasiada capacitancia de la línea t.

Andy, en el tutorial que publiqué en mi primera publicación, mencionan tiempos de subida/bajada lentos debido al "cable demasiado capacitivo", y estiman que esto es el 25% del período de bits. Según su publicación, esto no es un problema, a menos que se use un cableado deficiente. ¿Por favor corrígeme si estoy equivocado? ¿Existen otras razones además de un cableado deficiente o conexiones de PCB mal diseñadas que puedan afectar el tiempo de subida/bajada de una transición de bits? ¡Gracias por esta introducción a la transmisión y el cableado! ¿Puede recomendar algún guión/libro en el que pueda leer más sobre cosas como reflejos de señales, etc.? ¡Gracias!
Las conexiones UART (p. ej., RS-232) rara vez se realizan con algo que se acerque a una verdadera línea de transmisión en la banda de frecuencia de interés, especialmente teniendo en cuenta que la frecuencia fundamental es la mitad de la velocidad en baudios. La carga capacitiva de la corriente de excitación deliberadamente limitada es, de hecho, el principal contribuyente a la distorsión de la forma de onda.
Me sorprende la ingenuidad de ese último comentario. Sin embargo, el voto negativo no indica quién hizo el comentario.
@Marko No estoy de acuerdo con ese artículo de Maxim. He buscado artículos para corroborarlo pero no puedo encontrar nada, así que si los votantes negativos pueden ofrecer alguna evidencia, se lo agradecería.
Andy, no hay problema, ¡gracias por tu ayuda! Independientemente de mi suposición inicial, siempre es mejor elegir una velocidad en baudios que dé el error absoluto más pequeño, como ya expliqué en el comentario a la respuesta de Dave.