Baixe o app para aproveitar ainda mais
Prévia do material em texto
C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 91 Introdução a Porta Serial A partir desta aula iremos começar nossos estudos sobre a comunicação serial, especificamente o padrão RS232 que tem mais de 40 anos de existência, mas ainda é muito usado em vários dispositivos atuais, como computadores Modems, Mouses, Microcontroladores, Impressoras etc. Como objetivo principal pretendo deixar informações suficientes para que possam compreender o funcionamento da porta serial e, a partir dessa compreensão, tornarem-se capacitados a criar, tanto software de controle como o hardware, e assim implementar seus novos projetos. A comunicação serial teve início com a invenção do telégrafo. Depois teve um grande desenvolvimento com a invenção do Teletype (teletipo) pelo Francês Jean Maurice Émile Baudot, em 1871. Baudot, além de criar toda a mecânica e elétrica do Teletype, criou também um código para a transferência serial assíncrona de informações, de forma totalmente digital. No código de Baudot havia dois subconjuntos de códigos. Um era os das letras, chamado por ele de LTRS, abreviatura da palavra LETRAS, e o outro era chamado de FIGS, que significa FIGURAS. Os LTRS eram para codificar as letras, e os FIGS para os dígitos de 0-9 e alguns símbolos e sinais de pontuação. Esse código utilizava um sistema de 5 dígitos binários para representar um caracter. O dígito 1 era chamado de Mark (Marca) e o zero (0) de Space (Espaço). O aparelho de Teletype recebia um caracter de forma assíncrona e o imprimia numa fita de papel, onde a Marca era representada por um furo e o Espaço pela ausência do mesmo. Na transmissão dos caracteres através da linha telegráfica, o sinal de Marca era representado pela presença de corrente elétrica, e o Espaço pela ausência desta corrente. Para que o Teletype conseguisse distinguir o início e o final de um caracter, o mesmo era precedido com um sinal Espaço e finalizado com um sinal de Marca. Entenda que o estado da linha ociosa (sem transmissão de dados) era o sinal de Marca (presença de corrente elétrica). Foi baseado nesse sistema que o padrão de transmissão RS232 evoluiu e se tornou no padrão atual, usado na maioria dos computadores e equipamentos digitais diversos. A finalidade de se escrever aqui, sobre o trabalho de Baudot, é mostrar a relação de seu invento com o padrão serial RS232 atual. Alguns termos ainda usados como: BAUD (Baudot), Mark, Space, Start bit, Stop bit com intervalo de 1,5 ROGERC Jean Maurice Émile Baudot (1845-1903) BITS DECIMAL LTRS FIGS 00011 3 A - 11001 25 B ? 01110 14 C : 01001 9 D $ 00001 1 E 3 01101 13 F ! . . . . . . . . . . . . 01000 8 CR CR 00010 2 LF LF 00100 4 SP SP 11111 31 LTRS LTRS 11011 27 FIGS FIGS Receptor Baudot Coleção de imagens Fons Vanden Berghen. OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 92 bit, tamanho dos dados de 5 bits, entre outras similaridades, iremos compreender nesta aula. Tabela 1 - Tabela parcial do código de Baudot Para explicar como eram transmitidos os caracteres codificados no sistema de Baudot, segue abaixo um exemplo de como enviar a palavra FADA! LTRS F A D A FIGS ! 11111 01101 00011 01001 00011 11011 01101 No exemplo acima, as letras da palavra FADA estão dispostas na primeira coluna (LTRS) da tabela de códigos de Baudot. Portanto, para que o sistema receptor de teletype entenda, o transmissor terá que informá-lo previamente através do envio de um comando LTRS (11111), alertando que, os próximos caracteres enviados serão letras. Para enviar o caracter "!", antes, se envia o código FIGS para avisar ao receptor que interprete os códigos conforme os da segunda coluna (FIGS). Na verdade, os códigos especiais LTRS e FIGS servem para combinar, e portanto, enviar qualquer um dos caracteres da tabela de códigos de Baudot (Letras, dígitos, sinais de pontuação e símbolos) num total de 64, incluindo os próprios LTRS e FIGS. Para assimilarmos o conceito dos códigos LTRS e FIGS no sistema de Baudot, podemos comparar, grosso modo, com um teclado de computador onde o código de cada tecla é transmitido serialmente e, para alternar entre letras maiúsculas e minúsculas, pressiona-se a tecla CapsLock. C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 93 Figura 1 - Sinal elétrico para o caracter 'P' (10110) no código de Baudot Na figura acima temos a representação gráfica de um caracter de 5 bits do código Baudot, na relação corrente/tempo. Quando a linha está ociosa (nenhum dado fluindo), a mesma fica no estado Marca (presença de corrente elétrica). Como exemplo, para se transmitir o caracter 'P' (10110), primeiro envia-se um START (ausência de corrente na linha - Espaço) por um determinado intervalo de tempo (t). Depois se envia os impulsos representando as Marcas e os Espaços do código do caracter. Após isso, envia-se um STOP (A linha é levada ao estado Marca), e fica assim indeterminadamente até que um novo caracter seja enviado. Figura 2 - Fita de papel com impressão do código de Baudot A figura acima mostra uma fita de papel com impressões dos códigos de Baudot. O bit 1 (Marca) é associado a um furinho, e o bit 0 (Espaço), a ausência do mesmo, ou seja, um espaço. Modos de transmissão serial O modo da transmissão pode ser classificado em Simplex, Half-duplex e Full- duplex. Ou seja, a informação pode fluir num único sentido, nos dois sentidos sendo que somente um transmitindo a cada vez, ou nos dois sentidos simultaneamente. C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 94 Os sistemas de comunicações como: telefonia, satélite, Redes, sistemas wireless, teleprocessamento, etc., usam um desses modos de transmissão. A escolha de qual modo usar depende do que se pretende transmitir. SIMPLEX No modo Simplex, o fluxo de transmissão flui somente em um sentido, ou seja, um dispositivo só envia os dados e o outro só recebe. Como exemplo, podemos citar uma emissora de Rádio, onde ela só transmite. Figura 3 - Modo SIMPLEX HALF-DUPLEX No modo Half-duplex ambos os dispositivos transmitem nos dois sentidos, mas, não simultaneamente. Ou seja, um transmite enquanto o outro espera e vise versa. Esse modo usa um único canal bidirecional. Como exemplos, podemos citar um rádio Walk-Talk, onde ambas as pessoas podem falar e escutar, mas não ao mesmo tempo. Figura 4 - HALF-DUPLEX FULL-DUPLEX No modo de transmissão Full-duplex, há duas linhas independentes, onde uma é usada para transmitir e a outra para receber os dados. Ambos os dispositivos taransmitem simultaneamente. Como exemplo, podemos citar uma auto-estrada de duas vias onde os veículos rodam nos dois sentidos. A porta Serial RS232 trabalha em modo Full-duplex, através das duas linhas TX- RX. Figura 5 - FULL-DUPLEX C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 95 DTE / DCE Diferente da porta USB, onde o Host é sempre um PC e um dispositivo não pode se conectar com outro dispositivo diretamente (a não ser que um deles use tecnologia OTG). No padrão RS232, um DTE (Data Terminal Equipment), ou seja, um PC, pode ser conectado a um outro PC (DTE), ou a um DCE (Data Circuit- Terminating Equipment), que pode ser um Modem ou qualquer outro dispositivo serial RS232. É possível também um DCE estabelecer comunicação com outro DCE. Como exemplo, posso citar dois dispositivos microcontrolados que disponham de periféricos UART para estabelecer comunicação serial. Figura 6 - Terminais DTE-DCE A interface RS232 foi criada com o propósito inicial de conectar Equipamento de Terminais de Dados (DTE), a aparelhos de Modem (DCE - Equipamentos de Comunicação de Dados).Com o passar dos anos e a evolução da tecnologia, surgiram novos equipamentos. Atualmente o RS232 é usado para conectar uma grande variedade de dispositivos eletrônicos ao computador, como mouses, dispositivos de telemetria, PDVs, balanças digitais, códigos de barra, impressoras, Nobreaks, dispositivos microcontrolados em geral entre outros. Quando estivermos estudando os sinais dos conectores RS232, iremos perceber que os pinos são nomeados com termos técnicos referente as linhas de um Modem. Tipos de transmissão Numa transmissão serial é preciso que o DTE entre em sincronismo como o DCE para que os bits possam ser enviados pela linha. Dispositivos seriais podem transmitir de forma síncrona ou assíncrona. O receptor, através de seus circuitos dedicados, monitora o sinal enviado pelo transmissor e, dessa forma, obtém os bits que estão sendo transmitidos, no mesmo intervalo de tempo. Síncrona No tipo de transmissão síncrona, o DTE fica constantemente enviando sinais para o DCE, com o objetivo de manter a sincronização da comunicação. Esse tipo C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 96 de transmissão é mais rápido que a assíncrona, porque não necessita enviar sinais de controle para cada byte transmitido, como, Start bit e Stop bits. Na transmissão síncrona, envia-se um ou mais bytes de sincronismo antes do início dos pacotes de dados, e depois, alguns bytes para indicar o final dos mesmos. Após a transferência dos pacotes, o DTE continua enviando bytes de controle para manter o sincronismo com o DCE. Figura 7 - Exemplo didático de uma transmissão Síncrona A figura acima mostra uma transmissão síncrona em nível físico (de hardware). Observe que o DTE é quem envia o sinal de clock para manter o DCE em sincronismo. Os bits dos pacotes são enviados um-a-um através da linha de Dados a cada mudança do sinal de clock. Como exemplo, vamos imaginar a transferência do pacote de dados: "Curso USB/Serial". Veja: sinc sinc sinc... INICIO_BLOCO "Curso USB/Serial" FIM_BLOCO sinc sinc sinc... Muitos chips de memória usam a transmissão síncrona para ler e gravar dados. Assíncrona No tipo de transmissão assíncrona, o relógio do DTE e DCE são configurados para oscilarem na mesma freqüência (velocidade de transmissão). Numa transmissão assíncrona os dados são divididos em pequenos pacotes de dados de tamanho entre 5 a 8 bits, para minimizar o risco do oscilador do transmissor e do receptor variar. Se os dados não fossem divididos em pacotes menores, os relógios iriam gradativamente perder o sincronismo, conforme fosse passando o tempo, isso porque o temporizador (relógio) do DTE é independente do que há no DCE. É por isso que na transmissão serial RS232 utiliza-se um bit de início (Start bit), e alguns bits de parada (Stop bit), para garantir o sincronismo. Figura 8 - Exemplo didático de uma transmissão Assíncrona C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 97 A figura acima mostra uma transmissão assíncrona; DTE e DCE teem relógios de temporização independentes; são configurados com a mesma velocidade (Baud); mas para garantir a sincronização ideal, os dados teem tamanho máximo de 8 bits (9 quando utilizá-se o bit de paridade), e são precedidos e finalizados com bits de sincronismos, respectivamente (Start bit e Stop bit). A figura abaixo mostra a formatação de um Frame (quadro) de 11 bits de extensão, para envio numa transmissão assíncrona. Figura 9 - Formatação de um Frame (Quadro) de 11 bits Na figura acima temos um Frame de 11 bits formatado da seguinte forma: 1 bit de Start (início); 8 bits de dado representado no exemplo como o caracter "A"; 1 bit para a paridade e 1 bit de Stop (parada). Quando a linha está ociosa (inativa, idle ou inoperante) ela permanece no estado Marca ou "1" lógico, ou seja, com níveis de tensões entre -3v a -25v. Para transmitir um caracter pela linha serial, o transmissor primeiramente envia um 1 bit de Start com o objetivo de zerar e inicializar o temporizador do receptor, avisando que um novo caracter está a caminho. Após os bits de dados e a paridade (opcional) terem sido enviados, logo 1 Stop bit é transmitido para avisar ao receptor o final do Frame, e manter a linha no estado inativa novamente. Observe também na figura acima, o tempo de 1 bit (104uS). Ou seja, o intervalo de tempo que o receptor terá para identificar o estado do sinal Marca (1) ou Espaço (0). Esse tempo também é o mesmo usado pelo transmissor enviar um bit. No exemplo da figura acima estamos usando uma taxa de transferência de 9600 Baud. Sendo assim, a cada 104uS um sinal é alternado, ou seja, passa de um estado para outro. Para saber o tempo de cada bit, divida o número 1 pela taxa de baud: 1/9600 = 104uS (arredondado). Este é o tempo de um bit. C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 98 Figura 10 - Exemplo de uma transmissão serial A figura acima mostra a animação de uma transmissão serial bit-a-bit (DTE-- >DCE), usando como exemplo o caracter "A". Bit de Paridade O bit de paridade é utilizado numa transmissão serial assíncrona, como uma solução primária em nível de hardware para detectar a ocorrência de erros na transmissão de dados. A cada byte enviado, o receptor verifica se os bits do mesmo não foram modificados. O hardware receptor verifica isso somando todos os bits "1" que há no byte, mais o valor do bit de paridade. O resultado dessa soma deverá ser Par ou ímpar. Se a paridade na configuração do DTE e DCE foi definida, por exemplo, como PAR, a soma dos bits "1" do dado, mais o valor do bit de paridade recebido tem que ser PAR para um dado correto. Se por acaso o resultado der Ímpar, isso indica que o dado recebido sofreu alguma modificação em algum momento da transmissão, ou seja, houve um erro. Se a transmissão não for usar bit de paridade, isso deve ser avisado na configuração do DTE e DCE. Os tipos de paridades que podem ser usadas para configurar os terminais são: Nenhuma, Ímpar, Par, Marca ou Espaço. As paridades Marca e Espaço não são mais usadas, e ainda constam nas configurações para manter compatibilidade com os antigos sistemas de transmissão serial. Figura 11 - Exemplo 1 - paridade PAR C ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 99 A figura acima demonstra o uso da paridade PAR. Temos um dado de 8 bits 00110100 (com um total de 3 bits "1", resultando em um número Ímpar). Para que a soma dos bits de dado+paridade seja Par, o circuito transmissor adiciona o valor "1" ao bit de paridade. Assim, a soma dos bits de dados+paridade fica igual a 4 (PAR). Após isso, o transmissor envia o Frame ao receptor. Por sua vez, ao receber o Frame, o receptor verifica se a soma dos bits de dado+paridade é um resultado também PAR, confirmando o sucesso. Caso contrário, é detectado um erro de transmissão. A demonstração abaixo segue o mesmo princípio da anterior, para adicionar o bit de paridade pelo transmissor e a verificação pelo receptor, levando em conta também a paridade PAR. A diferença abaixo é que a soma dos bits do dado já é um resultado Par. Nesse caso, o hardware do transmissor adiciona um valor "0" ao bit de paridade, para que o resultado da soma dos bits dado+paridade seja um resultado PAR. Figura 12 - Exemplo 2 - paridade PAR Interface RS232 O padrão RS232 foi criado em 1962 para conectar diretamente dois dispositivos. Foi padronizado pela Associação de Indústria de Eletrônica (EIA). Originalmente era usado para conectar dispositivos de teletipo que utilizavam o código ASCII para transmitir dados de forma assíncrona. As letras "RS" quer dizer “Recomended Standard” (padrão recomendado) e 232,é a versão. O padrão RS232 foi criado com o objetivo de definir as características elétricas, temporização, mecânicas e funções dos sinais da interface serial, para conectar dispositivos ponto-a-ponto. Com o passar dos anos o padrão evoluiu e teve a terceira revisão em 1969 (RS- 232C) versão "C". EIA-232D e EIA-232E foram atualizadas respectivamente em 1987 e 1991. Por volta de 1984 o único padrão de comunicação serial em computadores pessoais IBM-PC era o RS232C. Mais tarde surgiram o irDA (Infra-vermelho), USB entre outros. ROGER OM – Curso USB – www.rogercom.com Aula 11 – Módulo-USB / Página 100 C Sinais elétricos O gráfico abaixo mostra as tensões elétricas para representar os sinais lógicos usados no padrão RS232. Observe que há uma região de transição do sinal onde a tensão é utilizada para representar o "0" e o "1" lógico. Veja também que o "0" lógico é associado a faixa de tensão positiva e o "1" a faixa de tensão negativa. Figura 13 - Sinal elétrico do padrão RS232 As tensões máximas que a interface RS232 suporta é 25v. Um Espaço ou zero (0) lógico, é representado por tensões positivas, entre +3v a +25v. Uma Marca ou o um (1) lógico, é representado por tensões entre -3v à -25v. Já a faixa de tensões entre -3v e +3v é conhecida como uma região de transição, sendo considerada indefinida. Ou seja, esta região não representa nenhum estado lógico válido no padrão RS232. Algumas interfaces RS232 nos computadores atuais fornecem -12v e +12v, mas suportam mínimas de -25v e máximas de +25v.
Compartilhar