Lembrar quando impressoras, ratos e modems tinham cabos grossos com aqueles enormes conectores toscos? Os que literalmente tinham de ser aparafusados no seu computador? Esses dispositivos estavam provavelmente a usar UARTs para comunicar com o seu computador. Embora o USB tenha substituído quase completamente aqueles cabos e conectores antigos, as UARTs definitivamente não são coisa do passado. Encontrará UARTs sendo usadas em muitos projectos de electrónica de bricolage para ligar módulos GPS, módulos Bluetooth, e módulos leitores de cartões RFID ao seu Raspberry Pi, Arduino, ou outros microcontroladores.
UART significa Universal Asynchronous Receiver/Transmitter. Não é um protocolo de comunicação como SPI e I2C, mas um circuito físico num microcontrolador, ou um CI autónomo. O principal objectivo de uma UART é transmitir e receber dados em série.
Uma das melhores coisas sobre a UART é que ela só usa dois fios para transmitir dados entre dispositivos. Os princípios por detrás da UART são fáceis de compreender, mas se não tiver lido uma parte desta série, Noções Básicas do Protocolo de Comunicação SPI, esse pode ser um bom local para começar.
Introdução à Comunicação UART
Na comunicação UART, duas UART comunicam directamente uma com a outra. A UART transmissora converte dados paralelos de um dispositivo de controlo como uma CPU em forma de série, transmite-os em série para a UART receptora, que depois converte os dados em série de volta em dados paralelos para o dispositivo receptor. Apenas dois fios são necessários para transmitir dados entre duas UARTs. Os dados fluem do pino Tx da UART transmissora para o pino Rx da UART receptora:
UARTs transmitem os dados de forma assíncrona, o que significa que não há sinal de relógio para sincronizar a saída de bits da UART transmissora para a amostragem de bits pela UART receptora. Em vez de um sinal de relógio, a UART transmissora adiciona bits de início e de paragem ao pacote de dados que está a ser transferido. Estes bits definem o início e o fim do pacote de dados para que a UART receptora saiba quando deve começar a ler os bits.
Quando a UART receptora detecta um bit inicial, começa a ler os bits de entrada a uma frequência específica conhecida como a taxa de transmissão. A taxa de baud é uma medida da velocidade de transferência de dados, expressa em bits por segundo (bps). Ambas as UARTs devem funcionar aproximadamente à mesma velocidade de transmissão de dados. A taxa de transmissão entre as UARTs transmissoras e receptoras só pode diferir em cerca de 10% antes da temporização dos bits se afastar demasiado.
As UARTs têm também de ser configuradas para transmitir e receber a mesma estrutura de pacotes de dados.
Como funciona a UART
A UART que vai transmitir dados recebe os dados de um barramento de dados. O barramento de dados é usado para enviar dados para a UART por outro dispositivo como uma CPU, memória, ou microcontrolador. Os dados são transferidos do barramento de dados para a UART de transmissão em forma paralela. Após a UART de transmissão receber os dados paralelos do barramento de dados, adiciona um bit de início, um bit de paridade e um bit de paragem, criando o pacote de dados. A seguir, o pacote de dados é emitido em série, bit a bit no pino Tx. A UART receptora lê o pacote de dados bit a bit no seu pino Rx. A UART receptora converte então os dados novamente em forma paralela e remove o bit inicial, bit de paridade e bits de paragem. Finalmente, a UART receptora transfere o pacote de dados em paralelo com o bus de dados na extremidade receptora:
UART dados transmitidos é organizada em pacotes. Cada pacote contém 1 bit inicial, 5 a 9 bits de dados (dependendo da UART), um bit de paridade opcional, e 1 ou 2 bits de paragem:
Bits de início
A linha de transmissão de dados UART é normalmente mantida a um nível de alta tensão quando não está a transmitir dados. Para iniciar a transferência de dados, a UART de transmissão puxa a linha de transmissão de alto para baixo durante um ciclo de relógio. Quando a UART receptora detecta a transição de alta para baixa tensão, começa a ler os bits no quadro de dados à frequência da taxa de transmissão.
Quadro de dados
O quadro de dados contém os dados reais que estão a ser transferidos. Pode ter 5 bits até 8 bits de comprimento se for utilizado um bit de paridade. Se não for utilizado um bit de paridade, a moldura de dados pode ter 9 bits de comprimento. Na maioria dos casos, os dados são enviados com o bit menos significativo primeiro.
Paridade
Paridade descreve a regularidade ou estranheza de um número. O bit de paridade é uma forma de o UART receptor dizer se algum dado mudou durante a transmissão. Os bits podem ser alterados por radiação electromagnética, taxas de bauds desencontrados, ou transferências de dados a longa distância. Após a UART receptora ler o quadro de dados, conta o número de bits com o valor 1 e verifica se o total é um número par ou ímpar. Se o bit de paridade for um 0 (paridade par), os 1 bits na moldura de dados devem totalizar um número par. Se o bit de paridade for 1 (paridade ímpar), os 1 bits na moldura de dados devem totalizar para um número ímpar. Quando o bit de paridade corresponde aos dados, a UART sabe que a transmissão estava livre de erros. Mas se o bit de paridade for um 0, e o total for ímpar; ou o bit de paridade for um 1, e o total for par, a UART sabe que os bits na moldura de dados mudaram.
Stop Bits
Para assinalar o fim do pacote de dados, a UART de envio conduz a linha de transmissão de dados de uma baixa tensão para uma alta tensão durante pelo menos duas durações de bit.
Passos da transmissão UART
1. A UART transmissora recebe dados em paralelo do barramento de dados:
2. A UART de transmissão adiciona o bit inicial, bit de paridade, e o(s) bit(s) de paragem ao quadro de dados:
3. O pacote inteiro é enviado em série da UART de transmissão para a UART receptora. A UART receptora recolhe amostras da linha de dados à taxa baud pré-configurada:
4. A UART receptora descarta o bit inicial, bit de paridade, e bit de paragem do quadro de dados:
5. A UART receptora converte os dados em série novamente em paralelo e transfere-os para o barramento de dados na extremidade receptora:
Vantagens e Desvantagens das UARTs
Nenhum protocolo de comunicação é perfeito, mas as UARTs são bastante boas no que fazem. Aqui estão alguns prós e contras para o ajudar a decidir se se adequam ou não às necessidades do seu projecto:
Vantagens
- Só usa dois fios
- Não é necessário nenhum sinal de relógio
- Tem um bit de paridade para permitir a verificação de erros
- A estrutura do pacote de dados pode ser alterada desde que ambos os lados estejam configurados para isso
- Bem documentado e amplamente utilizado método
Desvantagens
- O tamanho da moldura de dados é limitado a um máximo de 9 bits
- Não suporta múltiplos escravos ou múltiplos sistemas mestres
- As taxas de transmissão de cada UART devem estar dentro de 10% uns dos outros
Continuar com a parte três desta série, Noções básicas do Protocolo de Comunicação I2C para aprender sobre outra forma de comunicação dos dispositivos electrónicos. Ou se ainda não o fez, consulte a primeira parte, Noções básicas do Protocolo de Comunicação do SPI.