Articles

Comunicação em Série

Posted on
Contribuintes: jimblom

Favorito 88

Partilhar

Utilizar este URL para partilhar:

UARTs

A peça final deste puzzle de série é encontrar algo para criar os pacotes de série e controlar essas linhas físicas de hardware. Introduza a UART.

Um receptor/transmissor assíncrono universal (UART) é um bloco de circuitos responsável pela implementação da comunicação em série. Essencialmente, a UART actua como um intermediário entre interfaces paralelas e em série. Numa extremidade da UART está um bus de oito ou mais linhas de dados (mais alguns pinos de controlo), na outra estão os dois fios série – RX e TX.

UART simplificada
Interface UART super-simplificada. Paralela numa extremidade, em série na outra.

UARTs existem como ICs autónomos, mas são mais comumente encontrados dentro de microcontroladores. Terá de verificar a folha de dados do seu microcontrolador para ver se este tem alguma UART. Alguns não têm nenhuma, outros têm uma, outros têm muitas. Por exemplo, o Arduino Uno – baseado no “velho fiel” ATmega328 – tem apenas uma única UART, enquanto o Arduino Mega – construído sobre um ATmega2560 – tem uma impressionante quatro UARTs.

Como o R e o T na sigla ditam, as UARTs são responsáveis tanto pelo envio como pela recepção de dados em série. Do lado da transmissão, uma UART deve criar o pacote de dados – anexando bits de sincronização e paridade – e enviar esse pacote para fora da linha TX com um timing preciso (de acordo com a taxa de bauds definida). Na extremidade receptora, a UART tem de amostrar a linha RX a taxas de acordo com a taxa de bauds esperada, escolher os bits de sincronização e cuspir os dados.

UART Interna
diagrama de blocos UART interno (cortesia da folha de dados Exar ST16C550)

UARTs mais avançadas podem atirar os dados recebidos para um buffer, onde podem ficar até o microcontrolador chegar para os obter. As UARTs libertarão normalmente os seus dados protegidos numa base FIFO (first-in-first-first-out). Os buffers podem ser tão pequenos quanto alguns bits, ou tão grandes quanto milhares de bytes.

UARTs de software

Se um microcontrolador não tiver uma UART (ou não tiver o suficiente), a interface de série pode ser bit-banged – directamente controlada pelo processador. Esta é a abordagem que as bibliotecas Arduino, como SoftwareSerial take. Bit-banging é processador-intensivo, e normalmente não tão preciso como uma UART, mas funciona numa pitada!

Share

Use este URL para partilhar:

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *