Protocolos de Comunicação Serial - Parte Dois: UART

Mark Harris
|  Criada: Abril 14, 2021
Protocolos de Comunicação Serial - UART

Neste artigo, estaremos analisando o popular dispositivo UART. Não se trata de um protocolo de comunicação, mas sim do circuito físico usado em microcontroladores ou em circuitos integrados autônomos para transmitir e receber dados seriais. Ele suporta a série de artigos que produzimos para examinar alguns dos diferentes tipos de Protocolos de Comunicação Serial disponíveis.

As comunicações seriais são o mecanismo perfeito para transmitir informações entre dispositivos como microcontroladores, periféricos produtores de dados e outros dispositivos inteligentes. Esperamos que você encontre este recurso inestimável na próxima vez que seu design precisar incorporar um barramento de comunicação serial. O UART é comumente também referido como a Porta Serial em um dispositivo. No entanto, isso pode ser frequentemente confundido com outro tipo de porta serial, que usa o conector estilo DB9 e utiliza o RS-232 como um protocolo de hardware. Não é incomum ter um UART conectado a um transceptor RS-232 para um periférico UART em um microcontrolador e um dispositivo baseado em RS-232 para se comunicarem um com o outro.

UART significa Transmissor Receptor Assíncrono Universal. Este sistema de comunicação requer dois pinos, exceto o terra. Um é rotulado como TX, o transmissor, e o outro como RX, o receptor. A aparição da palavra assíncrono no nome significa que não requer um sinal de relógio. Como não possui um relógio, os dispositivos de transmissão e recepção devem usar a mesma taxa de baud.

A taxa de baud (Bd) é uma unidade de medida da taxa de transmissão. Este parâmetro determina a velocidade de comunicação sobre o canal de dados do transmissor e receptor. A taxa de baud pode ser representada como bits por segundo para simplificar. Assim, uma taxa de 1000 Bd significa que a velocidade de comunicação é de 1000 bits por segundo, ou a duração de um bit é de 1/1000 segundo ou 1 milissegundo. As taxas de baud têm prefixos métricos padrão como kBd (quilobaud), MBd (megabaud) ou GBd (Gigabaud). A taxa de baud inclui partes não relacionadas a dados de uma mensagem, como bits de início e parada, o que significa que a taxa de transmissão de informações úteis enviadas do transmissor para o receptor será um pouco menor.

Algumas das taxas de baud UART pré-definidas mais populares incluem:

  • 110 Baud
  • 300 Baud
  • 1200 Baud
  • 4800 Baud
  • 9600 Baud
  • 19200 Baud
  • 38400 Baud
  • 115200 Baud

Às vezes, a taxa de baud dos dispositivos comunicantes pode ser ajustada, enquanto em outras, um dos dispositivos terá uma taxa de baud fixa, exigindo que o outro se ajuste para corresponder.

Então, para conectar os dois dispositivos usando os UARTs, o pino transmissor TX deve ser conectado ao pino receptor RX:

UART

Ligação UART básica com TX, RX e terra

Você terá pinos RX e TX em ambos os dispositivos em algumas configurações, permitindo que você envie comandos de um microcontrolador para um CI dedicado e receba ordens ou informações de volta na outra direção. Isso é chamado de conexão duplex. Também existem aplicações quando o feedback do segundo dispositivo não é necessário. Portanto, comunicações são necessárias apenas em uma direção; assim, apenas uma linha de transmissão TX para RX é necessária. Isso é chamado de conexão simplex.

UART

O dispositivo transmissor precisará enviar um bit de início para iniciar as comunicações desse dispositivo para o dispositivo receptor. Esse bit informa ao dispositivo receptor que as comunicações começaram.

UART

Dispositivo UART envia um bit de início (iniciando comunicações)

Os bits de dados são então enviados como um fluxo de oito bits, representando os dados reais, onde o bit mais significativo (MSB) é rotulado como D7, e o bit menos significativo (LSB) é rotulado como D0.

UART

O primeiro dispositivo na comunicação UART envia bits de dados após o primeiro bit de início.

E no final desses bits de dados, o transmissor então envia um bit de parada, que indica que este é o fim da mensagem, e coloca o barramento UART em seu modo de espera.

UART

UART

O primeiro dispositivo na comunicação UART envia um bit de parada após os bits de dados.

Podemos ver neste caso; a mensagem UART completa consistirá em 10 bits. No modo de espera, o barramento UART é puxado para alto, ele envia um bit de início que é baixo, e depois disso vêm 8 bits de dados, seguidos pelo bit de parada. O bit de parada não se limita a ser apenas um bit; ele pode vir em várias configurações, dependendo de quão rápida é a taxa de comunicação. Esta configuração significa que o conjunto de bits da mensagem inteira muda constantemente o nível de tensão do sinal do barramento de baixo para alto pelo menos uma vez:

Sampling Points

Exemplo de pacote de comunicação serial UART

O bit mais significativo D7 também pode ser usado como um bit de Paridade. Esse bit fornece um mecanismo rudimentar de verificação de erros que aparece nos menores blocos das comunicações. O bit de paridade pode ser usado para garantir que o número total de bits altos ou uns seja ímpar ou par, dependendo da codificação. Para uma verificação de paridade par, se os bits de dados D0 a D6 estiverem definidos, eles consistem em um número par de bits altos, então o bit de paridade é definido como 0 (baixo). Por outro lado, se esse conjunto de bits tiver um número ímpar de bits altos, então o bit de paridade é definido como 1 (alto). Isso garante que o número total de bits altos na mensagem será par. No caso de uma verificação de paridade ímpar, então se os bits de dados D0 a D6 estiverem definidos de tal forma que consistam em um número par de bits altos, o bit de paridade é definido como 1 (alto). Por outro lado, se esse conjunto de bits tiver um número ímpar de bits altos, então o bit de paridade é definido como 0 (baixo). Isso garante que o número total de bits altos na mensagem será ímpar.

Portanto, ao usar o bit de paridade, erros podem ser detectados verificando os bits definidos. Suponha que o número total de bits, incluindo o bit de paridade, definido como alto esteja incorreto. Nesse caso, o bit de paridade permitiu que o receptor detectasse um erro durante a transmissão. No entanto, esse tipo de proteção contra erros não pode corrigir o erro, apenas capturar que um ocorreu, pois não há como determinar qual bit no conjunto total de bits está incorreto. Ele só pode detectar se um bit está no estado errado; quaisquer erros que afetem vários bits podem não ser detectados se a paridade geral acabar sendo correta.

Se o erro de paridade for detectado, então toda a mensagem deve ser descartada e retransmitida do zero. No caso de altos níveis de interferência ou ruído, pode levar um tempo significativo para alcançar uma transmissão bem-sucedida; no entanto, isso ajuda a prevenir erros de mensagem.

Além disso, o lado receptor e transmissor das comunicações UART deve usar exatamente a mesma taxa de baud, comprimento de caractere, mecanismo de paridade e configuração de bit de parada para comunicações bem-sucedidas.

Existe também uma variante da UART, que é chamada de USART. Esta é uma Transmissora Receptora Assíncrona Síncrona Universal. Ela pode atuar tanto como um canal assíncrono (assim como a UART) quanto um canal síncrono quando os dados são sincronizados pelo relógio. O relógio pode ser recuperado dos próprios dados ou enviado como um sinal externo separado.

Ao usar uma USART no seu modo síncrono, não são necessários bits de início e parada. Isso permite que as comunicações usem uma taxa de dados mais alta quando operam de forma síncrona, porque os tempos de bit têm a referência do relógio. Portanto, mais bits podem ser usados para dados em vez de serem usados para os bits de início/parada.

 

UART

Exemplo de comunicação USART

UART

USART

A UART requer apenas um sinal de dados

O modo síncrono da USART requer tanto dados quanto um relógio.

Na UART, os dados não precisam ser transmitidos a uma taxa fixa.

No modo síncrono da USART, os dados são transmitidos a uma taxa fixa.

Na UART, os dados são normalmente transmitidos um byte de cada vez.

Na USART, os dados síncronos são tipicamente transmitidos na forma de blocos de dados.

Na UART, a velocidade de transferência de dados é definida em torno de valores específicos como 4800, 9600, 38400 bps, etc.

Na USART, o modo síncrono permite uma taxa de transferência de dados (DTR) mais alta do que o modo assíncrono, se todos os outros fatores permanecerem constantes.

A velocidade da UART é limitada a cerca de 115200 bps.

A USART pode alcançar taxas superiores a 115 kbps.

Comunicações full-duplex: os dados podem ser enviados em ambas as direções simultaneamente.

Comunicações half-duplex: os dados só podem ser enviados em uma direção de cada vez.

O objetivo principal da UART e da USART é converter os dados paralelos nas linhas de ônibus do PC em dados seriais que podem ser transmitidos usando drivers de linha por um ônibus que esteja em conformidade com um padrão de protocolo de comunicações seriais, como RS-232 ou RS-485. Será necessário um conversor para fazer a interface entre a UART/USART e o ônibus externo. Isso, então, permite que os dados sejam lidos por um dispositivo similar sem que os dois precisem usar exatamente o mesmo formato de dados seriais. Contanto que a transmissão entre os dois seja para um protocolo padrão comum suportado, a implementação das comunicações seriais dentro de cada dispositivo pode ser específica para aquele dispositivo.

Embora o UART tenha sido amplamente superado pelo USB no mercado de computadores, eles ainda são amplamente utilizados para comunicações seriais em dispositivos de baixo custo.

Resumo

Este artigo examinou algumas das características populares dos dispositivos UART e discutiu algumas de suas vantagens e detalhes de implementação. No próximo artigo, Protocolos de Comunicações Seriais - Parte Três: RS-232, vamos olhar para alguns dos protocolos de comunicação serial disponíveis. Perdeu alguma coisa? Confira a introdução aos Protocolos de Comunicação Serial.

As ferramentas de design em Altium Designer® contêm tudo o que você precisa para acompanhar a nova tecnologia. Fale conosco hoje e descubra como podemos aprimorar seu próximo Design de PCB.

Sobre o autor

Sobre o autor

Mark Harris is an engineer's engineer, with over 16 years of diverse experience within the electronics industry, varying from aerospace and defense contracts to small product startups, hobbies and everything in between. Before moving to the United Kingdom, Mark was employed by one of the largest research organizations in Canada; every day brought a different project or challenge involving electronics, mechanics, and software. He also publishes the most extensive open source database library of components for Altium Designer called the Celestial Database Library. Mark has an affinity for open-source hardware and software and the innovative problem-solving required for the day-to-day challenges such projects offer. Electronics are passion; watching a product go from an idea to reality and start interacting with the world is a never-ending source of enjoyment. 

You can contact Mark directly at: mark@originalcircuit.com

Recursos relacionados

Retornar a página inicial
Thank you, you are now subscribed to updates.