Error de temporización en baudios del bit de parada de UART

En el microcontrolador PIC UART, la tasa de baudios se estableció en 38400 (sin paridad, 8 bits de datos),

*************UART 1 configuration********* 
IFS0bits.U1RXIF = 0;

IFS0bits.U1TXIF = 0; 

IEC0bits.U1RXIE = 1; 

IEC0bits.U1TXIE = 0; 

U1MODEvalue = 0b1000000000001000; 

U1STAvalue = 0b0000010000000000; 

U1BRG = 103; 

U1MODE = U1MODEvalue; 

U1STA = U1STAvalue;

El dispositivo conectado a uC funciona bien; tienen una comunicación saludable. Pero estaba midiendo el tiempo en baudios de mis datos, y observé que el bit de inicio y el bit de datos leían 26 us, lo cual está bien según 1000000/tasa de baudios, pero el bit de parada es solo alrededor de 20 us, eso me parece incorrecto, es también debe leer el 26us. Así que intento con diferentes velocidades de transmisión. Pero tiene el mismo problema (vea la tabla a continuación).

Tasa de 4800 Buad, tiempo de bit de parada = 160 us (pero debería ser 208 us)

Tasa de 9600 Buad, tiempo de bit de parada = 72 us (pero debería ser 104 us)

Tasa de 38400 Buad, tiempo de bit de parada = 20 us (pero debería ser 26 us)

Tasa de 115200 Buad, tiempo de bit de parada = 7,2 us (pero debería ser 8,8 us)

Le pregunté al equipo de soporte y me dijeron que su valor BRGH está establecido en 1, intente cambiarlo a 0. Así que cambié BRGH = 0 y este problema está resuelto.

Con BRGH = 0, se elimina el error del bit de parada y el bit de parada mide 26 uS. Todavía tenemos que probar esto con otras tasas de baudios también.

P1) ¿Por qué BRGH marca la diferencia solo en el tiempo de baudios del bit de parada? Estamos usando cristal de 8 MHz.

P2) La hoja de datos dice BRGH = 1 para habilitar alta velocidad, ¿qué significa aquí alta velocidad? ¿Es la velocidad en baudios? De ser así, ¿qué velocidad en baudios se considera alta velocidad?

P4) Cuándo usar BRGH=0 o cuándo usar BRGH=1, según la prueba, se observó un error de bit de parada en baudios en cada tasa de baudios según la tabla de resultados de la prueba anterior.

Enlace de uC

http://ww1.microchip.com/downloads/en/DeviceDoc/en026583.pdf http://ww1.microchip.com/downloads/en/DeviceDoc/39747F.pdf

Respuestas (1)

P 146-149 define por qué y cómo

Siempre consulte la hoja de datos usando Buscar en este caso para BRGH

¿Dónde exactamente la hoja de datos discute la longitud no estándar del bit de parada?
Donde especifica las implicaciones de precisión para el reloj, la velocidad de datos con fórmula, el resultado está implícito. Así que sigue esas instrucciones. Si desea debatir los efectos, ese es un tema aparte. Cuando ejecuta un reloj lento, el error de fase es menos crítico y, por lo tanto, un bit de parada runt> 50% está bien. pero esa es mi teoría.
Pero si yo fuera tú, agregaría paridad impar. La razón de las bajas velocidades menos críticas suele ser el patrón de ojo perfecto. entonces 47us del margen de fase clk truncado @ 4800 Bd es insignificante, luego es menor a velocidades más altas para un final del bit de parada. Este registro afecta las proporciones del divisor fraccionario, creo o la cuenta regresiva para detener el tiempo de subbit. Esto es para acomodar diferentes CLK para la misma velocidad en baudios según la fórmula dada en la hoja de datos. Éstos pueden afectar ligeramente a la disipación de uC uW.
@pericynthion me entendiste? (¿Quién era ese idiota (-1) Dave?)