¿Qué tarifas estándar de UART hay?

33

Sé 9600, 19200, 38400, 57600, 115200 y 1.8432 Mbaud, pero no otros. ¿Por qué se usan estos valores, y simplemente se duplica cada vez o ocurre algo más complejo (por ejemplo, 38400 cuadruplicado no es 115200 baudios?)

La razón por la que hago esta pregunta es que estoy diseñando algo que puede tener que interactuar con una variedad de velocidades de transmisión diferentes. Se iniciará en 9600 y luego cambiará a una velocidad de transmisión específica. Pero no puedo admitir tasas arbitrarias porque el dsPIC33F que estoy usando no admite tasas arbitrarias, ya que está limitado a un contador descendente BRG de 16 bits. Es similar en este aspecto a muchos otros procesadores.

Thomas O
fuente
En la práctica, un contador de 16 bits más pre / post escaladores es más que suficiente para acercarse lo suficiente a velocidades de transmisión arbitrarias. La serie UART puede tolerar ligeros desajustes de velocidad de transmisión.
Peter Green
El uart comienza en el medio del bit START y debe permanecer cerca del medio del bit STOP después de serializar 7-10 bits. Lo que hace una precisión de reloj mínima de alrededor del 2-3%, preferiblemente mejor para manejar el ruido, el jitter, las desviaciones en la frecuencia de la fuente ...
TEMLIB

Respuestas:

36

Comenzó hace mucho tiempo con teletipos, creo que 75 baudios. Luego, se ha duplicado en su mayoría desde entonces, con algunos múltiplos fraccionales (x1.5), por ejemplo 28,800, donde había restricciones en la tecnología de módem de línea telefónica que no permitieron que se duplicara.

Los valores estándar de los cristales provienen de estos primeros baudios, y su disponibilidad dicta las tasas futuras. P.ej,

7.3728MHz16=460,800baud7.3728MHz64=115,200baud.

La mayoría de los UARTS usan un reloj de de la velocidad en baudios, las partes más modernas (por ejemplo, NXP LPC) tienen divisores fraccionarios para obtener un rango más amplio mediante el uso de múltiplos no binarios.2n×16

Otros estándares comunes son 31,250 (MIDI) y 250K (DMX), ambos probablemente elegidos como buenos múltiplos de relojes 'redondos' como 1MHz, etc.

mikeselectricstuff
fuente
44
No creo que los divisores fraccionales sean para obtener tasas de bits no estándar, sino tasas de bits estándar de frecuencias de reloj MCU no estándar.
Johan.A
3
Rehabilité dos tipos de teletipos de 1926, en la universidad (1976) y sí, corrían a unos 75 baudios. Fueron etiquetados como teletipos baudot. Conectado a 110vac y un motor proporcionó la sincronización, con conexión eléctrica entre ellos. Los sumergí en gasolina para limpiarlos. (Dame un descanso, tenía 18 años. ¡Pero funcionó!) Ctrl-G tocó una campana honesta a la bondad en la otra. Por desgracia, ni siquiera recuerdo a quién se los regalé. :-( Entonces, sí, escribirías en el teclado mecánico, serializaría mecánicamente tus pulsaciones de tecla y crearía y rompería un contacto que leería el otro lado.
Doug Null
¡Yay, los rugientes años 20! Qué tecnología de calidad durará 50 años y terminará en el cobertizo de John Silva en Hayward, California.
Doug Null el
32

RealTerm, un programa gratuito de terminal de Windows, enumera estas tarifas UART en su menú Baud:

110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600

Sin embargo, estos son en realidad bits por segundo (bps), no baudios, ver más abajo.

Los teletipos de 8 niveles utilizaron 110 baudios como el ASR-33. No sé dónde se usaron 150 baudios, pero es una duplicación de 75 baudios, de uso común (junto con 60 baudios) para TTY de 5 niveles.

300 bps fue el estándar para los primeros módems telefónicos ampliamente utilizados en la década de 1960. Un número de terminales de 30 caracteres por segundo aparecieron al mismo tiempo.

Por encima de 300 bps / 300 baudios, que utilizaba la codificación por desplazamiento de frecuencia simple (FSK), las cifras de bps y baudios (símbolos o tonos por segundo) no son las mismas. Por ejemplo, un módem de 1200 bps realmente funciona a 600 baudios y un módem de 4800 bps a 1600 baudios. Consulte la tabla en Ancho de banda en este artículo . La diferencia se debe a que, además de usar un cierto número de pulsos de tono por segundo, se utilizan claves de cambio de fase y otros métodos para extraer ancho de banda adicional de la misma velocidad de transmisión para obtener bps cada vez más altos. (Entonces, un módem de 56K en realidad solo funciona a 8000 baudios).

Como puede ver, la lista de tarifas de UART comenzó esencialmente en 75 y se duplicó continuamente (saltando 600), hasta llegar a 38400, donde se multiplicó por 1.5 para obtener 57600. 56K bps es el límite para una línea telefónica analógica. Las tasas más altas de 115200 hacia arriba (una vez más dobladas a partir de 57600) se utilizan para conexiones cableadas.

Como se mencionó en mikeselectricstuff, se introdujeron 14400 y 28800 bps como 1.5 x 9600 y 1.5 x 19200 cuando las velocidades de los módems no se podían duplicar en ese momento, pero rara vez se usan más.

tcrosley
fuente
77
No para ser pedante, pero el programa solo puede soportar las velocidades que permite el hardware. Puede que ni siquiera se moleste en preguntar y simplemente enumere las velocidades estándar. Al preguntar mi hardware, zip(*serial.Serial('COM10').getSupportedBaudrates())responde:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
Nick T
2
Usé un acoplador acústico half duplex de 600 bit / s en los años ochenta. Se usó 75 bit / s en el sistema BTX alemán en la dirección de carga durante mucho tiempo, la descarga fue a 1200 bit / s.
Starblue
2
También he visto 62.5 kbaud. En realidad, también depende de su reloj principal, puede calcular qué velocidad de transmisión conducirá a un error suficientemente bajo.
vsz
5

Durante mucho tiempo, ha sido común usar submúltiplos de 115.200 para la comunicación, ya sea submúltiplos de potencia de dos de 38.400 o de 57.600 o 115.200. La mayoría del hardware de PC admite esas tasas. Parte del hardware de la PC puede admitir 230,400 o 460,800. Tenga en cuenta que a muchos controladores integrados les gustan las velocidades de datos que son submúltiplos de sus propias velocidades de reloj, y algunos chips USB a serie pueden admitir cualquier submúltiplo entero de 3,000,000bps, por lo que velocidades como 1,000,000bps o 1,500,000bps probablemente serán más comunes para dispositivos para conectarse a PC a través de chips USB.

Por cierto, otra velocidad que vale la pena mencionar: 31,250bps es la velocidad utilizada para MIDI estándar.

Super gato
fuente
4

La PC original de IBM tenía un 8250 UART. Esto tomó un reloj de 1.8432 MHZ y lo dividió por algún número entero para generar su reloj interno, y ese reloj funciona a 16 ciclos por bit.

Establecer 1 en el registro del divisor le da 115.200, 2 obtiene 57.600, 3 obtiene 38.400, 6 obtiene 19.200, etc.

Su mejor opción es usar un reloj que funcione a un múltiplo de 1.8432 MHz con el DSPIC.

Jasen
fuente