
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 editorialPonto-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.
| Camada | O que define | Exemplos |
|---|---|---|
| Quadro UART | repouso, início, dados, paridade, parada, ordem dos bits, taxa | 8N1 a 115200 baud |
| Ligação elétrica | tensão, polaridade, referência, corrente, cabo | CMOS 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 paridade | Regra para os dados mais paridade | Limitação |
|---|---|---|
N | nenhum bit extra | sem detecção de erros |
E | número total de 1s é par | não detecta um número par de bits alterados |
O | número total de 1s é ímpar | mesma capacidade de detecção, convenção oposta |
| marca / espaço | forçado a 1 / forçado a 0 | modos 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.
| Taxa | Tb | Duração de um quadro 8N1 |
|---|---|---|
| 9.600 baud | 104,17 µs | 1,042 ms |
| 57.600 baud | 17,36 µs | 173,6 µs |
| 115.200 baud | 8,681 µs | 86,81 µs |
| 1.000.000 baud | 1,000 µs | 10,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.
| Interface | Linha em repouso | Tensões típicas | Conexão direta com UART de 3,3 V? |
|---|---|---|---|
| 3,3 V CMOS | alta | perto de 0 / 3,3 V | sim, se os limiares corresponderem |
| Lógica 5 V | alta | perto de 0 / 5 V | apenas se a entrada tolerar 5 V |
| RS-232 | negativo (marcar) | −5 a −12 V / +5 a +12 V | não, use um transceptor RS-232 |
| RS-485 | diferencial | Par A/B | nã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ção | Significado usual | Causas comuns |
|---|---|---|
| Erro de paridade | paridade recebida incorreta | ruído, configuração errada, temporização no limite |
| Erro de enquadramento | bit de parada inválido | taxa errada, inversão, interrupção prolongada |
| Sobrescrita (overrun) | novo byte chegou antes de processar o anterior | interrupção bloqueada, DMA ausente, buffer pequeno |
| Condição de break | linha em nível baixo por mais de um quadro | break intencional, curto-circuito, dispositivo travado |
- Anote a configuração completa: por exemplo
115200, 8N1, bit menos significativo primeiro, sem controle de fluxo, CMOS de 3,3 V. - Verifique
TX ↔ RX, terra comum, alimentação do transceptor eDE. - Meça um período de bit: a 115200 baud, ele dura cerca de 8,68 µs.
- Envie
0x55,0x00e0xFFcomo padrões diagnósticos. - 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.