¿Cuál es el error de tasa de baudios máximo aceptable para la comunicación en serie RS-232?

¿Cuál es la diferencia de reloj máxima entre un transmisor y un receptor para una comunicación en serie asíncrona sin errores?

Respuestas (3)

Siéntase libre de editar en más valores. Estos son los que estoy usando ahora.

Atmel ATmega UART:

5 bits, normal speed : ±3.0%
5 bits, double speed : ±2.5%
10 bits, normal speed: ±1.5%
10 bits, double speed: ±1.0%

NXP LPC111x (Cortex-M0) UART: 1,1 % (sin tabla)

Microchip PIC 18F2XK20/4XK20: no definido. (wtf.)

Como dijo el venerable Sr. Horowitz & Hill:

Al volver a sincronizar los bits START y STOP de cada carácter, el receptor no requiere un reloj de alta precisión; sólo tiene que ser lo suficientemente preciso y estable para que el transmisor y el receptor permanezcan sincronizados en una fracción de un período de bits del tiempo de un carácter, es decir, una precisión de un pequeño porcentaje.

Tenga en cuenta que la longitud del conductor juega un papel importante en los errores de reloj en serie. Me quedo por debajo de 19200 baudios para un cable plano normal de más de 2' de largo. Me dan envidia las líneas USB de 4' 60Gb/s.

¿De dónde sacaste esos porcentajes?

[En primer lugar, el "RS" en RS-232 denota "Estándar recomendado", que era cuando se lanzó en la década de 1960. Sin embargo, desde hace eones es un estándar aceptado por la EIA como EIA-232, y desde entonces se abandonó oficialmente el antiguo nombre. Pero parece que no hay nada como acabar con los viejos hábitos :-)]

Sobre el tema: la tolerancia de reloj permitida depende del método de detección. IIRC, el viejo 68HC11 muestreado varias veces al comienzo de un bit, algunas veces en el medio de un bit y al final. (El muestreo se produjo a una tasa de bits de 16x). Esto permite una diferencia de medio bit en el último bit . La mayor parte de la comunicación en EIA-232 :-) consta de 10 bits (1 de inicio, 8 de datos, 1 de parada), por lo que medio bit en el bit de parada es 5% .

Un paquete UART es [INICIO][DATOS][PARIDAD][DETENER], por lo que 0x00 sería [0b1][0x00][0b0][0b00] (paridad opcional, detener longitud variable). Sin embargo, esa excepción tiene sentido para algunas situaciones I2C/TWI.
De hecho, stop-start es siempre una ventaja
Hay que tener en cuenta tanto la tolerancia del receptor como la tolerancia del emisor. Entonces, efectivamente, debe reducir a la mitad la tolerancia del 5%. Esto da como resultado una tolerancia máxima del 2,5 % en el transmisor y una tolerancia máxima del 2,5 % en el receptor.

Tenga en cuenta que el error es de pico a pico; esto puede ser un problema a altas velocidades de transmisión en un reloj con fluctuaciones. Los osciladores RC pueden tener bastante fluctuaciones, por lo que un reloj calibrado al 1% (promedio o RMS) puede tener errores instantáneos. más grande que eso. A velocidades de transmisión más bajas, esto tenderá a promediarse.