sincronización UART [duplicado]

Estoy tratando de entender la sincronización UART. En un UART, el estado predeterminado es alto e inicia el proceso de recepción cuando recibe un bit de inicio (transición de alto a bajo)

En algunos escenarios, cualquier pico, ruido o interrupción puede cambiar el estado de alto a bajo, lo cual es suficiente para que el UART lo detecte como un bit de inicio. Sé que un UART maneja internamente estos escenarios y evita el proceso de recibir un byyr completo.

¿Alguien puede explicarme cómo un UART maneja estos picos?

Hay mucha información en esta pregunta relacionada si aún no la ha visto.
¿Estás diciendo que la chatarra tiene el mismo nivel lógico y velocidad en baudios que el bit de inicio?
@AkshayImmanuelD basura significa pico o ruido
@LetUsEmbed "Sé que UART maneja internamente estos escenarios y evita el procesamiento". AFAIK UART no puede diferenciar entre datos reales y datos inducidos por ruido. El nivel básico de soporte que puede esperar del hardware UART Logic es la verificación de paridad, que también puede detectar errores de un solo bit. El resto del filtrado de tramas de datos buenas y malas se realiza en la parte del Protocolo Serial.
¿Está asumiendo que los UART detectan bordes? Me parece que los UART están haciendo detección de nivel y sobremuestreo.

Respuestas (2)

El receptor UART muestrea la línea Rx 16 veces (la mayoría de los uC) antes de confirmar el valor de cada bit. Por ejemplo, si los baudios son 9600, cada bit de tiempo será 104uS. Ahora, para detectar correctamente el valor de cada bit (es decir, si es alto o bajo), el receptor UART muestrea el bus cada 104 uS/16 segundos. La votación mayoritaria de estas muestras se utiliza luego para decidir el valor de un bit. El bit de inicio se utiliza para indicar al receptor que los bits de datos están a punto de recibirse. Es obligatorio que el bit de inicio sea bajo. Al emplear un esquema de muestreo de este tipo, el receptor garantiza que se eliminen los efectos del ruido.

Esto se llama sobremuestreo. En algunas MCU, el sobremuestreo (16x, 8x, etc.) es configurable.

El UART no comenzará a recibir un carácter simplemente porque la línea bajó. Debe ser bajo durante un cierto período de tiempo (del 30 al 50 por ciento del tiempo de un bit, y en algunos dispositivos esto puede incluso ser seleccionable). Una falla no será lo suficientemente larga para desencadenar la recepción de un personaje.

Si el ruido activa esta operación, eso significa que su línea de comunicación es demasiado ruidosa para ser utilizada para la comunicación en serie, al menos no sin alguna detección y corrección de errores adicionales.