8 votos

¿Necesita una velocidad en baudios en comunicación serial (puerto USB o RS232) ser exactos?

¿En comunicación serial, la velocidad de transmisión significa que tiene que utilizar la velocidad de reloj exacto o es una gama de velocidades que podemos usar?

y si es un valor exacto, exacto ¿cómo debería ser? ¿por ejemplo, puedo usar el 555 como reloj de un circuito de comunicación serial?

8voto

Callum Rogers Puntos 6769

Las UARTs utiliza normalmente en RS232-tipo de serie sistemas de trabajo mediante el muestreo de los datos de la línea en algún lugar mediados de los bits de acuerdo a una división de la predefinidos velocidad en baudios de la base de la frecuencia de reloj. Como tal, si los datos enviados y el receptor no están en la misma frecuencia de la "muestra" punto de vagará más cerca del borde de la broca en el marco de los sucesivos bits.

Con una normal UART de la longitud en bits de un byte es de 10 u 11 bits. 1 Inicio de datos 8, y 1 o 2 bits de parada. La mitad de un poco de pasear en los 10 bits se traduce en 0.5/10 = 5% de error.

Sin embargo, en la realidad de su tolerancia es menor que porque también es necesario agregar en la latencia de la base de la frecuencia de período que se agrega en un desplazamiento desde el borde de ataque del bit de inicio. Cuanto mayor sea su frecuencia base, menos efecto que tiene.

Como para usar un 555 temporizador para este fin, no lo recomiendo a menos que usted planea en tener un ajuste manual en el 555 circuito.

Una USART por otro lado utiliza un sistema más complejo método de control que intenta sincronizar la transmisión de los datos recibidos. Esto puede ser a través del uso de un modelo de datos que tiene incorporado un reloj, mediante el uso de un pasado de reloj, o por algún tipo de bloqueo de fase a los datos recibidos de los bordes. (Aunque podría decirse que el último es realmente pseudo-sincrónico.)

6voto

Peter Green Puntos 1888

Los tiempos tienen que ser lo suficientemente preciso que no se separen antes de que el protocolo de resyncronises.


UART serial resyncronises en cada byte y byte es de alrededor de 10 bits (8 bits de datos más de start y stop). Suponemos que nuestro UART objetivos de la media de cada bit. Si todo es perfecto y solo por un extremo, es inexacto que permite que aproximadamente el 5% de diferencia entre los dos extremos del enlace.

Sin embargo:

  1. Ambos extremos de la conexión puede ser inexacta relativa a la nominal. En el peor de los casos uno de los extremos puede ser bajo nominal, mientras que el otro es más nominal.
  2. No puede ser sistemática inaccuraries. Por ejemplo, la mayoría de las UARTS tienen una gama limitada de tasa de baudios de la configuración del generador.
  3. Su UART se basa en un reloj maestro con una velocidad finita. Incluso si la sincronización y la velocidad del generador son perfectas esto resultará en que no golpear el punto medio exacto de cada bit.

La línea de fondo es que el 1% de error en el reloj es casi seguro que bien. 5% de error es casi ciertamente un problema. Entre esas dos cifras puede o no puede ser un problema dependiendo de la imagen global.

Que es mucho pedir para un RC oscilator. Digamos que R tiene un 1% de tolerancia y el C tiene un 2% de tolerancia. Que da, aproximadamente, un 3% de tolerancia para la red de RC de la constante de tiempo y es que antes de pensar en los errores introducidos por el controlador del chip.

Así que la conclusión es que usted debe buscar en un cristal o resonador cerámico.


Como por USB no tengo experiancia para analizar a partir de primeros principios, pero https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai dice el 1,5% para baja velocidad y el 0,25% de la velocidad máxima.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X