novembro 02, 2011

Protocolo de comunicação RS-232

Fala aí pessoal!

Nesta quinta-feira será apresentado por meu grupo na FATEC de Tatuí um trabalho sobre o protocolo de comunicação RS-232. Gostaria de compartilhar com vocês alguns trechos do trabalho, para deixá-los um pouco cientes do que é um protocolo de comunicação e como funciona!

Boa leitura!

Protocolos de comunicação:

Um protocolo de comunicação nada mais é que um conjunto de convenções que rege o tratamento e, especialmente, a formatação dos dados num sistema de comunicação. É como se fosse uma “gramática” de uma “linguagem” de comunicação padronizada.

 Diariamente o homem faz uso de protocolos de comunicação. O mais antigo deles é a língua falada: duas pessoas que emitem sons audíveis aos ouvidos humanos podem se comunicar. Neste exemplo, o protocolo de comunicação é a emissão de sons numa dada faixa de frequência, o código utilizado é a língua falada e a mensagem é o conteúdo do que se fala.

 E como ficam os deficientes auditivos que não puderam aprender a emissão de sons corretos? Podem se comunicar através da linguagem das mãos... um protocolo de sinais feitos com as mãos, onde o código é o alfabeto de sinais e a mensagem é o conteúdo do que se quer transmitir.

Como Funciona
Como qualquer dispositivo de transmissão serial, os bit são enviados um à um, sequencialmente, e normalmente com bit menos significante primeiro (LSB). Por ser um protocolo assíncrono isto é, sem uma linha de relógio (clock), é responsabilidade do transmissor e do receptor efetuarem controles de tempo para saber quando cada bit inicia e finaliza.

Na sua forma padrão o RS-232 utiliza dois sinais de controle, o RTS (ready to send)  e o CTS (clear to send) para efetuar o controle de fluxo via hardware. Basicamente, quando o transmissor deseja começar um envio ele sinaliza através do pino RTS. O receptor, ao perceber que o transmissor deseja enviar algum dado, prepara-se para recebê-lo e seta o pino CTS. Apenas depois de receber o sinal CTS o transmissor pode começar a transmissão.

Para cada byte existem bit de start e stop; o mais comum é utilizar-se 1 bit de início (start bit) e 1 bit de parada (stop bit), mas é possível encontrar aplicações que utilizam 1,5 ou 2 bit de início/parada. A figura abaixo mostra como a transmissão de um byte ocorre:
  
Como já citado anteriormente, esta transmissão é assíncrona. Tendo a velocidade de comunicação ajustada nos dois dispositivos inicialmente, cada um deles sabe quanto tempo um bit demora a ser transmitido, e é com base nisto que a identificação dos bits é possível.

No transmissor o envio basicamente resume-se a enviar um bit de início, aguardar um tempo, e enviar os próximos 8 bit + bit de parada, com o mesmo intervalo de tempo entre eles.

No receptor, após a primeira borda de descida (nível lógico de "1" para "0") (start bit) o receptor sabe que uma sequencia de mais 8 bit de dados + bit de parada chegará. Ele também conhece a velocidade de transmissão, então tudo que ele precisa fazer é aguardar o tempo de transmissão entre cada bit e efetuar a leitura. Após receber o bit de parada, a recepção encerra-se e ele volta à aguardar o próximo start bit.

Nos microcontroladores modernos todo este trabalho normalmente é efetuado por uma UART (Universal Asynchronous Receiver Transmitter). Este periférico encarrega-se de efetuar todo o controle e apenas gerar interrupções quando um byte é recebido. No entanto, algumas vezes o microcontrolador utilizado não possui uma UART, ou mesmo ela está sendo utilizada. Nestes casos é possível implementar uma interface serial através de software, tratando a seqüência de transmissão e recepção descrita anteriormente.

Na interface RS232 o nível lógico "1" corresponde à uma tensão entre -3V e -12V e o nível lógico "0" à uma tensão entre 3V e 12V. Valores de tensão entre -3V e +3V são indefinidos e precisam ser evitados. O estado idle da linha é 1 lógico (-V).
Montando seu cabo de comunicação RS-232

Hoje em dia você ainda pode se deparar com equipamentos que necessite se comunique através do protocolo de comunicação RS-232. Geralmente estes equipamentos utilizam para este meio um conector DB-9. Para se comunicar com seu periférico e um notebook ou computador mais atual basta utilizar o cabo de comunicação serial (ensinando a montá-lo logo abaixo) e um conversor de RS-232 para USB , que pode ser comprado por um baixíssimo custo (20 ~ 40 reais).

Cabo Serial
Primeiramente deve-se verificar a pinagem do conector serial do equipamento, o qual pode ter uma numeração diferente do padrão RS-232, identificando quais são os pinos RxD (receptor), TxD (transmissor) e GND (terra ou 0V) e se é necessario usar (ou jampear) os pinos RTS (solicita permissão para envio) e CTS (verifica permissão pare recebimento de dados).
No padrão RS232 o cabo pode ser montado conectando os pinos dos conectores DB9 (fêmea) RxD(2) que será ligado ao PC com TxD(3) do equipamento, TxD(3) do PC com RxD(2) do equipamento e GND(5) do PC com GND(5) do equipamento.
No caso dos equipamentos que não usam os pinos RTS e CTS (o mais comum) o que se faz é jampear os pinos RTS(7) com CTS(8) no PC.
Exemplo de um cabo de Modem Nulo montado no laboratório, onde pode ser visto à esquerda o diagrama das conexões e à direita a capa do conector aberta mostrando o conector DB9 e a fiação interna. O fio branco está funcionando como um "jumper".
 
 Detalhes da soldagem. Na figura da esquerda aproveitamos a blindagem do cabo e soldamos na carcaça do conector - apenas no conector ligado ao PC. A figura da direita mostra um cabo conectando apenas os 3 pinos básicos (Tx, Rx e Gnd (terra)).
Quem gostou e quiser dar uma olhada em meu trabalho é só pedir!
Estou aqui para ajudar!

Obrigado mais uma vez.

Um comentário: