Como funcionam as UARTs - MICROCONTROLADORES By: Marcio R. Date: 27 Set 2009, 21:17
Como funcionam as UARTsEm 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 estão alocadas nos modems e em muitos outros equipamentos. Veja neste artigo como elas funcionam e como são usadas
Newton C. BragaUART é o acrônimo de Universal Asynchrounous Receiver/Transmiter ou Transmissor Receptor Universal Assíncrono. Sua finalidade é possibilitar a transmissão e a recepção de dados originalmente disponíveis na forma paralela, conforme mostra a
figura 1.
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 sequência e apresentando-os na forma paralela na saída.
No entanto, precisamos considerar que essa transmissão 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 transmissão.
Tudo isso é feito justamente pelas UARTs, que têm sido usadas há um bom tempo, conforme veremos a seguir.
Os tipos de UARTsAs 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 última foi implementada nos computadores da série AT.
Na
figura 2 temos a pinagem dessa UART de 40 pinos.
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 exigências crescentes dos novos computadores essa velocidade logo se tornou pequena. Surgiu, então, 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 transmissão 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.
A Estrutura de uma UARTPara que uma UART funcione há diversos tipos de circuitos operando de modo coordenado. Vejamos quais são esses circuitos.
RegistradoresSão 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:
RBR - Receiver Buffer Register (RO)A finalidade desse registro é armazenar o byte recebido se nenhum FIFO é usado (ou o ú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 transmissão 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, então, ser usada para manusear a interrupção e verificar qual estado de mudança a gerou.
As interrupções não são 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.
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.
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 são usados para selecionar o modo específico de funcionamento. A
tabela 4 mostra como os diversos bits são usados.
LCR: Line Control Register (R/W)Esse registro é utilizado na inicialização para fixar os parâmetros da comunicação. Paridade e nú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 são acessados apenas no processo de inicialização, eles não influem na performance da UART.
Os modos de ajuste mais comuns são:• 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 são 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 frequência de um segundo oscilador que opera em 4 MHz. E empregada geralmente em aplicações MIDI (
tabela 6).
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.
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) contêm informações sobre o estado das entradas, enquanto os quatro bits menos significativos (LSB) são usados para indicar as mudanças de estado. A
tabela 8 exibe o significado dos bits desse registro.
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 frequência é dividida por 10 para gerar a base de tempo de todo o sistema que, então, alcança sua velocidade máxima de 115 200 bps.
Existem, entretanto, UARTs como a 16550 que podem operar até com frequências mais altas, até 24 MHz, o que possibilita comunicações até 1,5 Mbps. Todavia, esses valores não são usados nos PCs por serem incompatíveis com as configurações de software.
A
tabela 9 dá as possibilidades de se dividir a frequê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/image/tabela_9_funcionam_uarts.jpgConclusãoAs UARTs são 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 Eletrônica Nº439
Re: Como funcionam as UARTs - MICROCONTROLADORES By: antesateletronica@terra.c Date: 27 Set 2009, 21:36
nao só para os profisionais em télecomunicaçoes que isso sera de grande avalia... e sim para técnicos eletronica radio tv tambem... espero que tirm grandes proveitos deste tópico amigao... eu mesmo sou um deles ok? abraços
Re: Como funcionam as UARTs - MICROCONTROLADORES By: Claudio Carvalho Date: 28 Set 2009, 06:31
Márcio.
Obrigado pela contribuição do artigo! Muito bom e será de grande valia para muitos, inclusive a mim!
Cláudio
Re: Como funcionam as UARTs - MICROCONTROLADORES By: rickteck Date: 02 Out 2009, 17:56
Eu postei um video técnico aqui a tempos atraz cairam de pau emcima de mim, não é a mesma coisa que texto? >:(
Re: Como funcionam as UARTs - MICROCONTROLADORES By: antesateletronica@terra.c Date: 02 Out 2009, 21:17
por que fiseram isso? nao entendi.....???? :( :( :(
Re: Como funcionam as UARTs - MICROCONTROLADORES By: rickteck Date: 03 Out 2009, 08:31
Tambem não entendi, mas agora o video esta no reparação, veja la. ;)
Re: Como funcionam as UARTs - MICROCONTROLADORES By: antesateletronica@terra.c Date: 03 Out 2009, 19:27
vou dar uma olhada ok?
:-\ :-\
Re: Como funcionam as UARTs - MICROCONTROLADORES By: Marcio R. Date: 07 Out 2009, 11:11
Se foi colocado em lugar errado peço desculpas, e pode remover sem problemas.
Apenas coloquei o tópico a respeito devido a não ter o item "UART" nos cursos que fiz, assim ficando um lacuna sobre o assunto e dividindo o material poderia não só ajudar quem interessar como também surgir outras informações.
Como o vídeo vou lá ver também...
Ps; desculpe a pouca frequencia de participação, pois com o aumento de serviço na loja e problemas com speedy, quase não dá para passar na frente do PC.
Abraço.
Re: Como funcionam as UARTs - MICROCONTROLADORES By: Claudio Carvalho Date: 07 Out 2009, 12:13
Marcio.
Nada disto! Você postou correto e o Ricardo também! Só que houve um movimento no tópico dele e eu o retornei a origem, assim como o seu!
E parabéns pelo movimento ai na sua loja!
Cláudio
Re: Como funcionam as UARTs - MICROCONTROLADORES By: Marcio R. Date: 08 Out 2009, 14:14
Valeu...
O movimento da loja aqui é fruto do investimento de 2 anos atrás...agora é que ta dando para colher o retorno.
Falando em retorno, mas alguém esta tendo problemas em postar no foruns?
Tentei postar na area de microcontroladores, e recebo a informação
"ocorreu os seguintes erros enquanto..."
Ai em vermelho;
O corpo de sua mensagem foi deixad em branco
Só estou conseguindo colocar aqui...
Mas creio que seja problema com a net por essas bandas aqui.