frecuencia UART en microcontroladores [cerrado]

1

Leí en el libro "Serial Port complete, 2nd edición" que el reloj del UART debería ser 16 veces la velocidad de transmisión , pero nunca he visto ningún microcontrolador en el que configuramos la frecuencia del UART antes de configurarlo para una velocidad de transmisión específica. Entonces:

1) ¿Por qué la frecuencia debería ser 16 veces mayor que la velocidad en baudios?

2) ¿Me puede dar un ejemplo de cualquier microcontrolador donde configuramos la frecuencia UART?

3) ¿Cuál es el propósito de configurar la frecuencia de reloj del UART si tenemos temporizadores? Al igual que generamos la velocidad en baudios en un simple 89c52 a través del temporizador 1 y no configuramos ninguna frecuencia.

4) ¿Cuál es la idea de configurar la velocidad en baudios con un temporizador como lo hacemos en 89c5x. ¿Cómo está vinculado a la frecuencia UART?

5) RS-232 es el "estándar recomendado 232" y un UART es físico. El hardware hace conversiones paralelo-serie y serial-paralelo. Estoy en lo correcto?

6) ¿El UART contiene un contador, de modo que después del bit de inicio espera 8 ciclos y luego de cada 16 ciclos, las muestras se toman de la línea RX para detectar el bit?

    
pregunta Aimal

3 respuestas

13
  

1) ¿Por qué la frecuencia debería ser 16 veces la velocidad en baudios?

Como Chris ya ha señalado en los comentarios, no hay señal de reloj, los UART RS-232 son sistemas asíncronos. Esto significa que no tenemos idea de cuándo empezarán los datos entrantes y es una apuesta bastante segura que el reloj del transmisor funcionará a una velocidad ligeramente diferente a la de los receptores. Con el fin de hacer frente a su UART sobreexplota los datos entrantes para que pueda llegar a una medida razonable de dónde están las transiciones en los datos. Para remuestrear, necesita un reloj que funcione significativamente más rápido que la velocidad de datos.

  

2) ¿Me puede dar un ejemplo de cualquier microcontrolador donde configuramos el   ¿UART frecuencia?

Prácticamente todos ellos contendrán varios registros para configurar esto. p.ej. en el LPC1768 está el Registro de fracciones fraccionarias para configurar el escalador previo del reloj en la lógica UART. En general, la configuración de la frecuencia de reloj para la lógica UART también establece la velocidad de transmisión en baudios para la salida, por lo que puede que no sea obvio que está configurando un reloj a 16 veces la velocidad de transmisión.

  

3) ¿Cuál es el propósito de configurar la frecuencia de reloj a UART si tenemos   temporizadores? Al igual que generamos una velocidad en baudios en 89c52 simple a través del temporizador 1 y   No establecemos ninguna frecuencia.

¿Para que puedas ejecutar cada UART a una velocidad de transmisión diferente sin utilizar todos tus temporizadores?

  

4) ¿Cuál es la idea de configurar la velocidad en baudios con el temporizador como lo hacemos en   89c5x. ¿Cómo está vinculado a la frecuencia UART?

No tengo idea, no usé la parte pero parece un poco extraño.

  

5) RS-232 es el estándar recomendado 232 y UART es físico. Hardware   hace conversiones paralelo-serie y serial-paralelo. Estoy en lo correcto?

Sí, el UART tiene un búfer de transmisión y recepción de 8 bits, el procesador solo trata con bytes de datos, el hardware de UART maneja la conversión a serie y viceversa.

  

6) ¿UART contiene un contador, de modo que después del bit de inicio espera   Durante 8 ciclos y luego de cada 16 ciclos, las muestras se toman de   ¿Línea RX para detectar el bit?

Contiene una máquina de estado que rastrea el punto actual en el ciclo de transmisión / recepción. Esta máquina de estado contendrá contadores y lógica para detectar transiciones, iniciar y detener bits y generar / verificar bits de paridad. A menos que desee diseñar su propio UART, no necesita preocuparse por lo que está sucediendo exactamente dentro de esa máquina de estados. Si desea diseñar su propio UART, entonces ese es un tema completamente nuevo.

    
respondido por el Andrew
2

La pregunta y algunas de las respuestas confunden "reloj", "frecuencia" y "velocidad de transmisión".

Como se explicó, hay un reloj dentro del UART que generalmente es 16 veces la velocidad de transmisión deseada. Cuando tuve cabello, este reloj fue proporcionado a la UART por un divisor de hardware, generalmente establecido por interruptores DIP, desde un oscilador de cristal.

Pero un UART como un 16550 o el UART en un microcontrolador contiene el circuito divisor. Cuando "configura la velocidad en baudios" escribiendo en un registro UART, está configurando el divisor. La entrada es un reloj de alta frecuencia, a menudo el reloj del procesador.

Por lo tanto, un 16550 a menudo tendrá una entrada de un oscilador de cristal de 1.8432 MHz. Divida eso entre 16 y obtendrá 115200 baudios, la velocidad más rápida disponible con esa UART utilizando esa entrada. Para obtener esa velocidad en baudios, debe establecer el divisor de la velocidad en baudios de UART en 1. Establezca el divisor en 2, y obtendrá 57600 baudios. Ajústelo a tres y obtendrá 38400 baudios, etc.

Los UARTS más avanzados tienen una lógica de "divisor fraccional", que le permite obtener velocidades de transmisión estándar (o cercanas a ellas) de un oscilador de entrada que no es un múltiplo entero de la velocidad de transmisión.

    
respondido por el Old Bald Guy
-1

Algunos de los principios de diseño de los UART se remontan a los días en que el costo combinado de un cristal, un circuito de dividir por tres y un divisor de potencia de dos sería menor que el costo de un programador completamente programable. divisor de frecuencia.

La forma más versátil de diseñar un UART sería usar divisores de frecuencia programables separados para transmitir y recibir, cada uno configurado para 1x la velocidad en baudios, y "atasco" cada uno en una cuenta programable cuando el lado correspondiente del UART está inactivo . Sin embargo, hacer las cosas de esa manera requeriría el uso de dos divisores de frecuencia completamente programables. Es más barato tener un divisor programable compartido entre transmisión y recepción, pero que funcione lo suficientemente rápido para que tanto el transmisor como el receptor puedan dividirlo independientemente de manera independiente.

    
respondido por el supercat

Lea otras preguntas en las etiquetas

Comentarios Recientes

significa el voltaje de control entre B1 y A0 en proporción al número de cristal (0.63): E9 ~ E07 ~ E08 ~ E09 ~ E10 ~ E11 ~ E12 ~ E13 ~ E14 ~ E15 ~ .. : Se puede esperar al menos un error de frecuencia de reloj no corregido en la placa del módulo. Puede ocurrir cuando los controladores operan en diferentes perfiles de temperatura (por ejemplo, D1 E1 E2 o 5-7 C1 D2) que exageran enormemente las dos fuentes de precisión cuando existen espacios de banda de frecuencia mucho más grandes entre los dispositivos IO y RAM... Lees verder