Como funcionam as UARTs - MICROCONTROLADORES

Destinado á  discussões de temas livres etc...
Você precisa estar Logado para acessar os demais Fóruns, SEJA BEM VINDO - ao mundo da Tecnologia.
Responder
Avatar do usuário
Marcio_Ortolan
Comunidade Técnica VIP
Comunidade Técnica VIP
Mensagens: 102
Registrado em: Qua Out 29, 2008 9:23 am
Localização: Arujá - SP
Contato:

Como funcionam as UARTs - MICROCONTROLADORES

Mensagem por Marcio_Ortolan » Dom Set 27, 2009 8:57 pm

Como funcionam as UARTs

Em todo sistema onde dados digitais devam ser transmitidos e recebidos na forma serial está presente um elemento importante que deve ser entendido pelos profissionais de Telecomunicações: as UARTs. Com a finalidade de converter dados paralelos para a forma serial e vice-versa, as UARTs estao alocadas nos modems e em muitos outros equipamentos. Veja neste artigo como elas funcionam e como sao usadas

Newton C. Braga

UART é o acra´nimo de Universal Asynchrounous Receiver/Transmiter ou Transmissor Receptor Universal Assíncrono. Sua finalidade é possibilitar a transmissao e a recepção de dados originalmente disponíveis na forma paralela, conforme mostra a figura 1.

Imagem

No diagrama de funcionamento pode parecer simples converter os dados que chegam (ao mesmo tempo) nas entradas paralelas de modo que eles sejam transmitidos sequencialmente por uma linha de dados, e depois recuperá-los, recebendo-os em sequaªncia e apresentando-os na forma paralela na saída.

No entanto, precisamos considerar que essa transmissao deve ser feita de modo seguro, ou seja, com um controle de paridade para garantir a integridade dos dados e formas de sinalização do lado que transmite para que o lado que recebe saiba onde começa e onde termina uma transmissao.

Tudo isso é feito justamente pelas UARTs, que taªm sido usadas há um bom tempo, conforme veremos a seguir.

Os tipos de UARTs

As primeiras UARTs utilizadas nos computadores (PCs) eram do tipo 8250, empregadas basicamente na série XT.

Posteriormente, novos tipos foram criados como a 8250A, 8250 B e em seguida a 16450. Esta aºltima foi implementada nos computadores da série AT.

Na figura 2 temos a pinagem dessa UART de 40 pinos.

Imagem

A cada tipo lançado, o principal implemento era na velocidade de operação. Assim, a 16450 já alcançava uma velocidade de 38,4 kbps facilmente.

Mas, mesmo assim, para as exigaªncias crescentes dos novos computadores essa velocidade logo se tornou pequena. Surgiu, entao, a 16550 que res olvia um problema que começava a incomodar.

Os tipos anteriores precisavam ter uma ação do software a cada bit que transmitiam. A 16550 continha buffers FIFO on board que podiam armazenar cada um 16 bits, um para os sinais transmitidos e outro para os recebidos.

Entretanto, um bug tornava impossível usar esses buffers até que surgiu a 16550A, capaz de transmitir a uma velocidade de 115,2 kbps.

Essa UART podia ter usar a DMA (Direct Access Memory) para a transmissao de dados, de modo a não exigir a intervenção do software para essa finalidade.

Hoje, a 16550A é a UART mais comum, contendo 32 bytes de FIFO e software de controle para garantir o fluxo de dados (figura 3). A Texas tem uma UART de 64 bytes de FIFO denominada 16750.

Imagem

A Estrutura de uma UART

Para que uma UART funcione há diversos tipos de circuitos operando de modo coordenado. Vejamos quais sao esses circuitos.

Registradores

Sao usados 8 bytes I/O para cada UART com a finalidade de acessar os registros.

A tabela 1 mostra onde cada registro está. Analisemos cada um desses registros e sua respectiva função:

Imagem

RBR - Receiver Buffer Register (RO)

A finalidade desse registro é armazenar o byte recebido se nenhum FIFO é usado (ou o aºltimo byte não lido). Se o buffer da FIFO é utilizado, cada nova ação de leitura do registro passa para o byte seguinte até que nenhum byte esteja presente. O byte 0 na linha de status do registro pode ser usado para verificar se os bytes recebidos foram lidos. Obs.: RO significa Read Only ou apenas leitura.

THR: Transmiter Holding Register (WO)

E empregado para os caracteres que saem do buffer. Se a FIFO não é usada, somente um caractere pode ser armazenado. Se for utilizada, a quantidade de caracteres armazenado depende da UART. O THR não é empregado para transmitir dados diretamente. O byte é inicialmente transferido para um shift register onde a informação é dividida em bits para transmissao um a um. Obs.: WO significa Write Only ou apenas gravação.

IER: Interrupt Enable Register (R/W)

Uma forma eficiente de se conseguir comunicação entre PCs na forma serial é utilizando rotinas de interrupção. Nessa configuração, não é necessário colocar os registros da UART periodicamente em estado de mudança. A UART vai sinalizar a cada mudança, gerando uma interrupção para o processador.

Uma rotina de software pode, entao, ser usada para manusear a interrupção e verificar qual estado de mudança a gerou.

As interrupções não sao geradas, a não ser que a UART seja avisada. Isso é feito enviando-se bits para o registro de habilitação da interrupção. O bit 1 indica que uma interrupção deve ser feita. A tabela 2 ilustra esses bits. Obs.: R/W significa Read/Write ou Leitura e Gravação.

Imagem

IIR: Interrupt Identification Register (RO)

Trata-se do registro de identificação de interrupção. Uma UART pode gerar uma interrupção do processador quando uma mudança no dispositivo de comunicação é detectada. Esse sinal é usado para chamar a atenção antes do envio das informações. Seus bits mostram o estado da UART e qual mudança de estado fez com que a interrupção ocorresse. A tabela 3 traz os significados dos bits desse registro.

Imagem

FCR: FIFO Control Register (WO)

E o registro de controle da FIFO que controla o comportamento da FIFO na UART.

O valor lógico 1 é gravado nos bits 1 ou 2, e sua função é disparar o dispositivo. Outros bits sao usados para selecionar o modo específico de funcionamento. A tabela 4 mostra como os diversos bits sao usados.

Imagem

LCR: Line Control Register (R/W)


Esse registro é utilizado na inicialização para fixar os parâmetros da comunicação. Paridade e naºmero de bits de dados podem ser alterados. Ele também controla a acessibilidade dos registros da DLL e DLM (tabela 5). Considerando-se que esses registros sao acessados apenas no processo de inicialização, eles não influem na performance da UART.

Imagem

Os modos de ajuste mais comuns sao:

• 8 bits de dados, um bit de parada, sem paridade
• 7 bits de dados, uma parada, paridade ímpar.

MCR: Modem Control Register (R/W)

As duas saídas auxiliares sao definíveis pelo usuário. A saída 2 é usada algumas vezes no circuito que controla o processo de interrupção de um PC. A saída 1 é normalmente utilizada em placas I/O, selecionando a frequaªncia de um segundo oscilador que opera em 4 MHz. E empregada geralmente em aplicações MIDI (tabela 6).

Imagem

LSR: Line Status Register (RO)

Esse registrador mostra o estado da comunicação detectando erros. A tabela 7 indica o significado dos bits nesse registro.

Imagem

MSR: Modem Status register (RO)

O MSR armazena informações sobre as quatro linhas de controle do modem. A informação é dividida em dois nibbles.

Os quatro bits mais significativos (MSB) contaªm informações sobre o estado das entradas, enquanto os quatro bits menos significativos (LSB) sao usados para indicar as mudanças de estado. A tabela 8 exibe o significado dos bits desse registro.

Imagem

SCR: Scratch Register (R/W)

A finalidade desse registro de gravação e leitura é armazenar um bit, mas na prática tem uso muito limitado. Como está presente apenas nas UARTs mais antigas, não é muito comum a sua utilização.

DLL e DLM: Divisor Latch Registers (R/W)


O ritmo de funcionamento da UART é determinado por um oscilador que opera em 1,8432 MHz.

Essa frequaªncia é dividida por 10 para gerar a base de tempo de todo o sistema que, entao, alcança sua velocidade máxima de 115 200 bps.

Existem, entretanto, UARTs como a 16550 que podem operar até com frequaªncias mais altas, até 24 MHz, o que possibilita comunicações até 1,5 Mbps. Todavia, esses valores não sao usados nos PCs por serem incompatíveis com as configurações de software.

A tabela 9 dá as possibilidades de se dividir a frequaªncia original e assim obter velocidades mais baixas de acordo com a capacidade do meio de comunicações
usado.

http://www.sabereletronica.com.br/files ... _uarts.jpg

Conclusao

As UARTs sao os elementos básicos de qualquer sistema de comunicação serial. Elas formam o “coração” dos modems, possibilitando a transformação de dados na forma paralela para serial e vice-versa.

Neste artigo vimos como elas funcionam, dando uma ideia das funções que elas executam e das diversas configurações possíveis para seus registros.

*Originalmente publicado na revista Saber Eletra´nica Nº439

Responder