ElectroDesignForgeElectroDesignForge
Sinais e interfacesFundamentos

UART: quadros, taxa de transmissão e níveis elétricos

Entenda a transmissão UART assíncrona: bits de início e parada, ordem dos dados, paridade, taxa de transmissão, tolerância do clock, erros e compatibilidade entre TTL, CMOS, RS-232 e RS-485.

Redigido e revisado tecnicamente porElectroDesignForge Engineering Team

Ver o processo editorial

Ponto-chave: a UART transmite bits sem um clock compartilhado. O receptor se sincroniza a cada bit de início e amostra os dados em instantes calculados. Os dois lados precisam usar o mesmo formato de quadro, taxas de transmissão suficientemente próximas e níveis elétricos compatíveis.


UART define o quadro, não a interface elétrica

UART (transmissor/receptor assíncrono universal) envia os bits de um byte em TX e reconstrói bytes a partir de RX. É assíncrona: ao contrário de SPI, não usa um fio de clock.

CamadaO que defineExemplos
Quadro UARTrepouso, início, dados, paridade, parada, ordem dos bits, taxa8N1 a 115200 baud
Ligação elétricatensão, polaridade, referência, corrente, caboCMOS 3,3 V, lógica 5 V, RS-232, RS-485

Duas placas podem “usar UART” e ainda assim não ser eletricamente compatíveis: um GPIO de 3,3 V não é uma saída RS-232. Na convenção lógica usual, a linha em repouso fica em nível alto (mark), o quadro começa em nível baixo e termina em nível alto.

Anatomia do quadro

A notação usual é bits de dados + paridade + bits de parada. 8N1 significa oito bits de dados, sem paridade e um bit de parada.

Repouso     Início  D0 D1 D2 D3 D4 D5 D6 D7   Paridade Parada Repouso
  1     |     0   |  b0 b1 b2 b3 b4 b5 b6 b7 |   P    |  1  |  1
             <---------- período de um bit Tb = 1 / baud ----------->

Bits de início, dados, paridade e parada

O bit de início permanece em nível baixo por um período de bit. Após a borda de descida, o receptor espera cerca de meio período para validá-lo e então amostra próximo do centro de cada bit. UARTs modernas frequentemente usam sobreamostragem de ×8 ou ×16; consulte o manual do periférico para os detalhes de validação e tolerância.

Os dados normalmente são enviados com o bit menos significativo primeiro (LSB). O hexadecimal 0x53, escrito como 0101 0011, é transmitido na ordem 1 1 0 0 1 0 1 0, de D0 a D7. Essa ordem é fácil de interpretar incorretamente no osciloscópio. O hardware pode oferecer de 5 a 9 bits de dados; os dois lados devem usar a mesma configuração.

Configuração da paridadeRegra para os dados mais paridadeLimitação
Nnenhum bit extrasem detecção de erros
Enúmero total de 1s é parnão detecta um número par de bits alterados
Onúmero total de 1s é ímparmesma capacidade de detecção, convenção oposta
marca / espaçoforçado a 1 / forçado a 0modos pouco comuns, específicos do hardware

A paridade detecta alguns erros, mas não identifica sua posição nem os corrige. Para verificar a integridade da mensagem, use CRC ou checksum, número de sequência e uma política de retransmissão no protocolo acima da UART. Os bits de parada ficam em nível alto; um nível baixo no instante esperado normalmente gera erro de enquadramento.

Taxa de baud e erro de relógio

Baud significa símbolos por segundo. Em uma UART binária, normalmente há um bit por símbolo; assim, 9600 baud correspondem a 9600 bits/s. O período de um bit é Tb = 1 / baud.

TaxaTbDuração de um quadro 8N1
9.600 baud104,17 µs1,042 ms
57.600 baud17,36 µs173,6 µs
115.200 baud8,681 µs86,81 µs
1.000.000 baud1,000 µs10,00 µs

Um quadro 8N1 ocupa dez períodos de bit. Portanto, a taxa máxima de dados úteis é baud × 8 / 10: a 115200 baud, o tráfego contínuo transporta no máximo 11.520 bytes/s antes da sobrecarga do protocolo.

O transmissor e o receptor têm clocks independentes. O desvio no instante de amostragem se acumula ao longo do quadro: erro acumulado de tempo ≈ número de períodos de bit × erro relativo total de frequência. Mantenha-o bem abaixo de meio período de bit, com margem para jitter, arredondamento do divisor, ruído e bordas lentas. Um objetivo comum de projeto é menos de cerca de 2% de erro relativo combinado, mas não é um limite universal: o comprimento do quadro, a sobreamostragem e o projeto do receptor determinam a tolerância real. Dois osciladores de ±1% podem diferir em 2% no pior caso. Verifique também o erro do divisor da taxa de transmissão; nem todo clock do sistema gera 115200 baud exatamente.

CMOS, TTL, RS-232 e RS-485

“TTL” e “CMOS” são descrições abreviadas: use os limiares de entrada e os valores máximos absolutos dos dispositivos reais.

InterfaceLinha em repousoTensões típicasConexão direta com UART de 3,3 V?
3,3 V CMOSaltaperto de 0 / 3,3 Vsim, se os limiares corresponderem
Lógica 5 Valtaperto de 0 / 5 Vapenas se a entrada tolerar 5 V
RS-232negativo (marcar)−5 a −12 V / +5 a +12 Vnão, use um transceptor RS-232
RS-485diferencialPar A/Bnão, use um transceptor RS-485

Para uma conexão lógica curta, ligue TX_A a RX_B, TX_B a RX_A e compartilhe a referência de terra. Uma saída de 5 V pode danificar uma entrada de 3,3 V não tolerante, mesmo que a conexão pareça funcionar inicialmente.

RS-232 usa amplitudes diferentes e polaridade invertida: o nível lógico 1 em repouso costuma ter tensão negativa, e o bit de início 0, tensão positiva. Um transceptor como o MAX232 faz a conversão de tensão e a inversão. RS-485 é uma camada física diferencial: a UART aciona DI e lê RO, enquanto o transceptor aciona o par A/B. O controle de habilitação (DE), a terminação, a polarização, a topologia do cabo e a prevenção de colisões em meio duplex fazem parte do projeto.

Erros e diagnóstico inicial

IndicaçãoSignificado usualCausas comuns
Erro de paridadeparidade recebida incorretaruído, configuração errada, temporização no limite
Erro de enquadramentobit de parada inválidotaxa errada, inversão, interrupção prolongada
Sobrescrita (overrun)novo byte chegou antes de processar o anteriorinterrupção bloqueada, DMA ausente, buffer pequeno
Condição de breaklinha em nível baixo por mais de um quadrobreak intencional, curto-circuito, dispositivo travado
  1. Anote a configuração completa: por exemplo 115200, 8N1, bit menos significativo primeiro, sem controle de fluxo, CMOS de 3,3 V.
  2. Verifique TX ↔ RX, terra comum, alimentação do transceptor e DE.
  3. Meça um período de bit: a 115200 baud, ele dura cerca de 8,68 µs.
  4. Envie 0x55, 0x00 e 0xFF como padrões diagnósticos.
  5. Conte os erros de paridade, enquadramento e sobrescrita; texto corrompido sozinho não revela a causa.

Armadilhas comuns

  • Tratar 115200 baud como 115200 bytes/s: em 8N1, o máximo é 11.520 bytes/s.
  • Cruzar TX/RX duas vezes ou omitir o terra comum em uma conexão CMOS.
  • Ligar RS-232 diretamente a um GPIO.
  • Usar paridade como proteção da mensagem no lugar de um CRC.
  • Atribuir todos os erros à taxa de baud: buffer cheio, tensão incompatível, terra com ruído ou colisões no barramento RS-485 podem produzir sintomas semelhantes.

Bibliografia