ElectroDesignForgeElectroDesignForge
Señales e interfacesFundamentos

UART: tramas, velocidad en baudios y niveles eléctricos

Comprender la transmisión UART asíncrona: bits de inicio y parada, orden de datos, paridad, velocidad en baudios, tolerancia del reloj, errores y compatibilidad con TTL, CMOS, RS-232 y RS-485.

Escrito y revisado técnicamente porEquipo de ingeniería de ElectroDesignForge

Ver el proceso editorial

Punto clave: UART envía bits sin un reloj compartido. El receptor se vuelve a sincronizar en cada bit de inicio y luego muestrea los datos en tiempos calculados. Ambos puntos finales necesitan el mismo formato de trama, una sincronización de baudios suficientemente cercana y niveles eléctricos verdaderamente compatibles.


UART es un formato de cuadro, no una interfaz eléctrica

UART (Receptor/Transmisor Asíncrono Universal) convierte un byte en bits en TX y reconstruye los bytes recibidos en RX. Es asincrónico: a diferencia de SPI, no tiene cable de reloj.

Capalo que defineEjemplos
marco UARTinactivo, inicio, datos, paridad, parada, orden de bits, velocidad8N1 a 115200 baudios
Enlace eléctricotensión, polaridad, referencia, corriente, cableCMOS de 3,3 V, lógica de 5 V, RS-232, RS-485

Dos placas pueden "usar UART" y aun así no conectarse directamente: un GPIO de 3,3 V no es una salida RS-232. En la convención lógica habitual, inactivo es alto (marca), un fotograma comienza bajo y termina alto.

Anatomía del marco

La notación habitual es data bits + parity + stop bits. 8N1 significa ocho bits de datos, sin paridad y un bit de parada.

Idle        Start   D0 D1 D2 D3 D4 D5 D6 D7   Parity   Stop   Idle
  1     |     0   |  b0 b1 b2 b3 b4 b5 b6 b7 |   P    |  1  |  1
             <------------- one bit time Tb = 1 / baud ------------->

Inicio, datos, paridad y parada

El bit de inicio está bajo durante un bit. Después de un flanco descendente, el receptor espera aproximadamente medio bit para validarlo y luego toma muestras cerca del centro de cada celda. Los UART modernos suelen sobremuestrear a ×8 o ×16; consulte el manual del periférico para conocer la validación y tolerancia exactas.

Los datos normalmente son LSB-first. El formato hexadecimal 0x53, escrito convencionalmente 0101 0011, se envía como 1 1 0 0 1 0 1 0 para D0 a D7. Ésta es una trampa sencilla de lectura de osciloscopio. El hardware puede ofrecer de 5 a 9 bits de datos; ambos puntos finales deben coincidir.

Configuración de paridadRegla para datos más paridadLimitación
Nno hay nada extrasin detección de errores
EEl número total de 1 es par.pierde un número par de bits modificados
Oel número total de 1 es imparMisma capacidad de detección, convención opuesta.
marca / espacioforzado 1 / forzado 0modos poco comunes específicos de hardware

Parity detecta algunos daños pero no puede localizarlos ni repararlos. La integridad del mensaje necesita un CRC o suma de verificación, un número de secuencia y un esquema de reintento por encima de UART. Los bits de parada son altos; un nivel bajo cuando se espera un bit de parada normalmente genera un error de encuadre.

Velocidad de baudios y error de reloj

Baudios son símbolos por segundo. Un UART binario normalmente transporta un bit por símbolo, por lo que 9600 baudios normalmente significa 9600 bit/s. El tiempo de bits es Tb = 1 / baud.

TasaTbTiempo de fotograma 8N1
9.600 baudios104,17 µs1,042 ms
57.600 baudios17,36 µs173,6 µs
115.200 baudios8,681 µs86,81 µs
1.000.000 baudios1.000 µs10,00 µs

Una trama 8N1 utiliza tiempos de diez bits, por lo tanto, una tasa de carga útil máxima de baud × 8 / 10: el tráfico continuo de 115200 baudios transporta como máximo 11,520 bytes/s antes de la sobrecarga del protocolo.

El transmisor y el receptor tienen relojes independientes. Su compensación de muestreo se acumula en un cuadro: accumulated timing error ≈ number of bit intervals × total relative frequency error. Manténgalo cómodamente por debajo de medio bit, dejando margen para la fluctuación, la cuantificación del divisor, el ruido y los bordes lentos. Un objetivo de ingeniería común es menos de aproximadamente el 2 % de error relativo combinado, pero no es un límite universal: la longitud del marco, el sobremuestreo y el diseño del receptor deciden la tolerancia real. Dos osciladores de ±1% pueden diferir en un 2% en el peor de los casos. Verifique también el error del divisor de baudios; un reloj del sistema no siempre genera 115200 exactamente.

CMOS, TTL, RS-232 y RS-485

"TTL" y "CMOS" son abreviaturas: utilice siempre los umbrales de entrada del dispositivo real y las clasificaciones máximas absolutas.

InterfazUART inactivovoltajes típicos¿Directo a UART de 3,3 V?
CMOS de 3,3 Valtocerca de 0/3,3 Vsí, si los umbrales coinciden
Lógica de 5 Valtocerca de 0/5 Vsólo con entrada tolerante a 5 V
RS-232negativo (marca)a menudo −5 a −12 V / +5 a +12 Vno, utilice un transceptor RS-232
RS-485diferencialA/B pairno, utilice un transceptor RS-485

Para un enlace lógico corto, conecte TX_A a RX_B, TX_B a RX_A y comparta una referencia a tierra. Una salida de 5 V puede dañar una entrada de 3,3 V no tolerante incluso si el enlace inicialmente parece funcionar.

RS-232 utiliza amplitudes diferentes y polaridad invertida: la lógica inactiva 1 es normalmente negativa, el inicio de 0 es positivo. Un transceptor tipo MAX232 maneja la conversión e inversión de voltaje. RS-485 es una capa física diferencial, no un “UART más fuerte”: el UART controla DI y lee RO, mientras que el transceptor controla A/B. El control de habilitación (DE), la terminación, la polarización, la topología del cable y el control de colisiones semidúplex son parte del diseño.

Errores y recuperación

IndicaciónSignificado habitualCausas comunes
error de paridadla paridad recibida fallaruido, configuración incorrecta, sincronización marginal
error de encuadrebit de parada no válidotasa incorrecta, inversión, ruptura
InvadirLlegó un nuevo byte antes de manejar el anterior.interrupción bloqueada, DMA faltante, búfer pequeño
Romperlínea baja más larga que un marcorotura intencionada, cortocircuito, dispositivo detenido
  1. Registre la configuración completa: por ejemplo 115200, 8N1, LSB primero, sin control de flujo, CMOS de 3,3 V.
  2. Verifique TX ↔ RX, tierra común y alimentación del transceptor / DE.
  3. Mida una celda: a 115200 baudios es aproximadamente 8,68 µs.
  4. Envíe 0x55, luego 0x00 y 0xFF como patrones de diagnóstico.
  5. Cuente las banderas de paridad, encuadre y desbordamiento; El texto corrupto por sí solo no identifica la causa.

Errores comunes

  • Tratando 115200 baudios como 115200 bytes/s: 8N1 alcanza un máximo de 11,520 bytes/s.
  • Cruzar TX/RX dos veces u omitir tierra común en un enlace CMOS.
  • Conexión RS-232 directamente a GPIO.
  • Usar paridad como protección de mensajes en lugar de un CRC.
  • Culpar de cada error a la velocidad en baudios cuando un búfer lleno, un voltaje incompatible, una conexión a tierra ruidosa o una contienda RS-485 pueden parecer similares.

Bibliografía