¿Qué tarifas estándar de UART existen?

Conozco 9600, 19200, 38400, 57600, 115200 y 1,8432 Mbaud, pero no otros. ¿Por qué se utilizan estos valores? ¿Simplemente se duplica cada vez o ocurre algo más complejo (por ejemplo, 38400 cuadriplicado no es 115200 baudios?)

La razón por la que hago esta pregunta es que «m diseñar algo que pueda tener que interactuar con una variedad de velocidades en baudios diferentes. Se inicializará en 9600 y luego cambiará a una velocidad en baudios específica. Pero no puedo admitir velocidades arbitrarias porque el dsPIC33F que estoy usando no admite velocidades arbitrarias como está limitado a un contador regresivo BRG de 16 bits. Es similar en este sentido a muchos otros procesadores.

Comentarios

  • En la práctica, un contador de 16 bits más escaladores pre / post es más que suficiente para obtener » lo suficientemente » de velocidades en baudios arbitrarias. La serie UART puede tolerar ligeras discrepancias en la velocidad en baudios.
  • 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 ruido, jitter, desviaciones en el frecuencia de origen …

Respuesta

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

Los valores de cristal estándar provienen de estas primeras velocidades en baudios y su disponibilidad y dicta las tasas futuras. Por ejemplo,

\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ over 16} & = 460,800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ over 64} & = 115,200 \, \ text {baud}. \ end {align} \ $

La mayoría de UARTS usan un reloj de \ $ 2 ^ n \ multiplicado por 16 \ $ 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.

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

Comentarios

  • No ‘ t pienso en divisores fraccionarios son para obtener velocidades de bits no estándar, sino más bien velocidades de bits estándar de frecuencias de reloj MCU no estándar.
  • Reacondicioné dos teletipos del año 1926, en la universidad (1976) y sí, funcionaban a unos 75 baudios. Fueron etiquetados como teletipos baudot. Enchufado a 110vac y un motor proporcionó la sincronización, con conexión eléctrica entre ellos. Los sumergí en gasolina para limpiarlos. (Dame un respiro, tenía 18 años. ¡Pero funcionó!) Ctrl-G hizo sonar una campana de honestidad al otro. Por desgracia, no ‘ ni siquiera recuerdo a quién se los regalé. 🙁 Entonces, sí, si ‘ d escribe en el teclado mecánico, serializaría mecánicamente sus pulsaciones de teclas y establecería y rompería un contacto que el otro lado leería.
  • ¡Vaya, los ‘ 20 ‘ s rugientes! Qué tecnología de calidad para durar 50 años y terminar en John Silva ‘ s cobertizo en Hayward, California.
  • @DougNull Lo siento por bump – Pregunta para 115200bps. Así que tomó el reloj IC (7.3728MHz) y lo dividió por qué ? ¿Cómo obtuviste 64?

Respuesta

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

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.

110 baudios fueron usados por teletipos de 8 niveles como el ASR-33. No sé dónde se usaron 150 baudios, pero es una duplicación de 75 baudios, comúnmente nosotros ed (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. Aparecieron al mismo tiempo un número de terminales de 30 caracteres por segundo.

Por encima de 300 bps / 300 baudios, que utilizaban modulación por desplazamiento de frecuencia simple (FSK), las cifras de bps y baudios (símbolos o tonos por segundo ) no son lo mismo. Por ejemplo, un módem de 1200 bps en realidad funciona a 600 baudios y un módem de 4800 bps funciona a 1600 baudios. Consulte la tabla bajo Ancho de banda en este artículo . La diferencia se debe a que, además de utilizar una cierta cantidad de pulsos de tono por segundo, la manipulación por desplazamiento de fase y otros métodos se utilizan para extraer ancho de banda adicional de los mismos baudios. tasa para obtener bps cada vez más altos. (Por lo tanto, un módem de 56K en realidad solo funciona a 8000 baudios).

Como puede ver, la lista de tasas de UART comenzó esencialmente en 75 y se duplicó continuamente (omitiendo 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 duplicando a partir de 57600) se utilizan para conexiones cableadas.

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

Comentarios

  • No quiero ser pedante, pero el programa solo admite las velocidades el hardware lo permite. Es posible que ni siquiera se moleste en preguntar y solo enumere las velocidades estándar. Preguntando a 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)
  • Usé un acoplador acústico semidúplex de 600 bit / s en los años 80. El sistema BTX alemán usó 75 bit / s en la dirección de carga durante mucho tiempo, la descarga fue a 1200 bit / s.
  • Yo ‘ también he visto 62.5 kbaudios. En realidad, también depende de su reloj principal, puede calcular qué velocidades en baudios conducirán a un error suficientemente bajo.

Responder

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 57,600 o 115,200. La mayoría del hardware de PC admite esas tasas. Algunos equipos de PC pueden 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 de 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 se volverán más comunes para dispositivos para conectarse a PC a través de chips USB.

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

Respuesta

El IBM PC original tenía un UART 8250. 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 corre 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *