sites.poli.usp.brsites.poli.usp.br/d/pcs2529/index_arquivos/serial.pdfHyperterminal do Windows:...

Preview:

Citation preview

Interfaces SeriaisInterfaces Seriais

����� ������� �

�������

Conteúdo

� ���������������������

� ������������� ������������!

� �����"�������#���� ���������� ������������!

� ��!������������ ������������!

� $����"�����������%�����������"��������!

Como conectar equipamentos uns aos outros?

������"��������&� �������'

�����!�!�

� (���!

�)���� ������������

Interface Paralela

Equipamento 1 Equipamento 2

Dados + controle

� Todos os bits de uma palavra são transmitidos simultaneamente

� Cada canal necessita de diversos fios

Vantagens:Vantagens:

- Maior velocidade.- Simplicidadedas interfaces.

Desvantagens:Desvantagens:

- Muitos fios > custo- Ruído, perda desincronismo ®Menores distâncias

Interface Paralela

Equipamento 1 Equipamento 2

Dados+

controle

SSííncronancrona

AssAssííncronancrona

IsIsóócronacrona

Interface Serial

� Transmissor e receptor utilizam o mesmo clock commesma freqüência e fase

� Transferência de blocos

� Cada bloco:� Caracteres de sincronismo� Dados� Checagem de erro

� Pequeno overhead:� para cada bloco: + 3 bytes (2 sincronismo, 1 checksum)

� ex.: bloco=1024 bytes + 3 bytes = 1027 bytes0,3% de tempo extra !

Tipos de Interfaces Seriais - 1

Síncrona

� Clocks do transmissor e do receptor podem estar ligeiramente diferentes

� ressincronismo a cada byte

� Transferência de bytes� Para cada byte mais 2 ou 3 bits:

� start bit� bit de paridade� stop bits (1 a 2)

� Grande overhead:� para cada byte + 3 bits = 11 bits

= 37,5% de tempo extra!= < velocidade

Tipos de Interfaces Seriais - 2

Assíncrona

� Clock incluído ou incorporado ao dado� ressincronismo a cada pacote

� Transferência de pacotes� Contínuo e sem checagem dos dados� Útil para aplicações de transferência de grande

quantidade de dados e sem precisão.� Ex: Vídeo conferência

Tipos de Interfaces Seriais - 3

Isócrona

Padrões de Comunicação Serial

*&�+

*(���!��,�

*

*

*

*

*

��������

*

*

�����

�$$$-./01

2()

*�(-13�

*�(-1��

*

(�����

�(-�/�

������

Padrões de Comunicação Serial

*(��

*��&

*(4#��

*4� ��5(���(���!

��������

�����

*

(�����

$,$�+$,

������

� Facilidade de implementação

� Menor Custo

� Atualmente alcança velocidades compatíveis com as síncronas

Embora as interfaces seriais sEmbora as interfaces seriais sííncronas ncronas sejam mais rsejam mais ráápidas, as interfaces pidas, as interfaces seriais assseriais assííncronas são mais utilizadas.ncronas são mais utilizadas.

� Conjunto de regras pelas quais informações ou dados (ex: números, letras) podem ser convertidos a uma representação do código e vice-versa.

� Para transmitir a informação através de uma interface énecessário que ela esteja codificada de alguma forma.

� A unidade mais básica de informação para nós é o bit, que pode ter valores 0 ou 1. Toda informação utilizada pelos computadores é codificada de alguma forma em seqüências de bits.

ComunicaComunicaçção Serial ão Serial AssAssííncronancrona

Código:

� Abreviação de: American Standard Code for InformationInterchange.

� Código universal para intercâmbio de informações, concebido especialmente para utilização em transmissão, recepção e processamento de dados.

� ASCII para 7 bits: 27 = 128 caracteres podem ser representados.

� ASCII para 8 bits: 28 = 256 caracteres diferentes.� ex.: o código ASCII 0100 0001 = 65D = 41H representa o caractere "A" .

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Código ASCII:

� Bit acrescentado ao dado, destinado à detecção de erros.

� Paridade par: número par de bits no estado 1.

� Paridade ímpar: número ímpar de bits no estado 1.

� ex.: caractere "A”em ASCII de 7 bits: 1 0 0 0 0 0 1.

� com paridade ímpar:� como tem-se 2 bits no estado 1, o bit de paridade também será 1,

de forma que no total tem-se 3 bits em 1 (ímpar).

� bit de paridade: 1 1 0 0 0 0 0 1.

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Paridade:(1)

� Ex.: dado com bit de paridade: 1 1 0 0 0 0 0 1.

� vamos supor que por um erro de transmissão, um dos bits 0 transformou-se em 1:

� 1 1 0 0 0 0 0 1 -------> 1 1 0 0 1 0 0 1.

� ao verificar a paridade, o receptor perceberá que há um número par de 1, e indicará que houve algum erro na transmissão, e que esse byte éinválido.

� E se houver um número par de mudanças?

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Paridade:(2)

� Ex.:

Transmissão do caractere A em ASCII com paridade ímpar e dois stop bits:

1 1 0 0 0 0 0 1 = b7 b6 b5 b4 b3 b2 b1 b0

Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Transmissão de um Caractere:

� Quando não há dados sendo transmitidos, a linha fica em nível lógico 1.

� Paridade: par, ímpar ou sem paridade.

� Normalmente se usa 1 ou 2 stop bits. Estes devem garantir que o receptor terá tempo de receber e armazenar o caractere, antes de receber o próximo.

� A quantidade de bits na informação transmitida também pode variar: de 5 a 8 bits.

� Obs: Transmissor e receptor devem ter as mesmasconfigurações quanto a velocidade, tamanho da palavra, paridade e número de stop bits!

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Transmissão de um Caractere:

� O receptor reconhece a borda de descida do Start Bit e sincroniza seu clock.

� Após 1 ciclo e meio começa a fazer a leitura dos demais bits a cada clock.

� Se as freqüências do transmissor e do receptor estiverem perfeitamente sincronizadas, as leituras serão efetuadas exatamente no meio de cada ciclo.

� Tolerância a pequenas variações dos clocks de Tx e Rx.

Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop

Sincroniza demais leituras

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Transmissão de um Caractere:

� É o número de transições (ou eventos) por segundo.

� Cada evento pode transmitir mais de 1 bit:

ex.: modems, onde a variação de fase da portadora poderia representar dois ou mais bits.

� Quando cada evento representa apenas 1 bit, então o Bit Rate e o Baud Rate são iguais.

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

Bit Rate:

�� ÉÉ o o nnúúmero de bits por segundo mero de bits por segundo transmitidostransmitidos atravatravéés da interface serial. s da interface serial.

Baud Rate:

RS-XXX

� Padrão físico e elétrico.� Conector DB25 (no caso dos computadores PC, usa-se normalmente um DB9,

com os principais sinais).6)�����6)0����������������������!

��������������/�������������,���� �6�����- ,*6�

/�������������������������������7�6�����- �*6�

1�������������8���������������9�������(��� - �,(�

��������������3�������������&!��� ���(��� - 6,(�

����������������������������6����(�������5- 6(��

8���������������������������(:��!;����� - ;+6�

3�������������.�������������6����&����� 6�����- 6&6�

.���������������������������,���� �&!���- ,*&��

.8������������������������������7�&!���- �*&��

�������������1�������������6����,�� ��!�����5- 6,��

�1����������������������������<!��5&!����

�������������0���������������:�������� - ���

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-232:

� Null Modems: Conector simplificado, usado para transferência de dados� Hyperterminal do Windows: permite desabilitar sinais de controle de fluxo.

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-232

� Padrão físico e elétrico

� Opera com tensões referenciadas ao terra.

� Nível lógico 0 : tensão entre +3 e +15V� Nível lógico 1: tensão entre - 3 e - 15V

Faixas de tensãoinválido

+ 15V nível lógico

0+3V

0V inválido- 3V

nível lógico 1

- 15Vinválido

Valores típicos: + 12V e - 12V

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-232:

� "Single ended": sinal referenciado à terra

TxRxTerra = 0 V

� Problemas:� Quedas de tensão ao longo do fio

� Susceptível a ruídos e diferenças de potencial de terras

� Limite de distância +/- 15m (depende da taxa e qualidade do cabo)

� Taxa máxima: 20Kbps

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-232:

� "Differencial Voltage Pairs": Sinal Diferencial

Tx + Va - Vb < - 0.2V = 0Tx - Va - Vb > +0,2V = 1

par trançado� Vantagens:

� Mais imune a cross-talk

� Mais resistente a quedas de tensão

� Limite de distância: +/- 1200m (depende da taxa e cabo)

� Taxa máxima: 10Mbps

� Não define conector

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-422:

� Semelhante ao RS-422, mas com drivers tri-state:� Permite topologias de redes multiponto.� Rede do tipo “mestre-escravo”.� Até 64 dispositivos.

� Componentes para RS 422 e RS 485:� Am26LS32 – driver.� Am26LS32 – receiver.� MAX 481 / 483 / 485 / 487 / 1487 - transceivers.

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-485:

� Exemplo de topologia de rede com RS 485

Mestre

Escravos

Tx Rx

End. 1

End. 0

Tx RxTx Rx

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-485:

End. n - 1

� Filosofia Mestre-Escravo:� 1 mestre, n - 1 escravos, cada um com o seu endereço.

� Mestre: toma a iniciativa da comunicação.

� Escravos: só respondem às mensagens a eles endereçadas.� TxD do mestre: Chega a todos RxD dos escravos.� TxD dos escravos:

� Em alta impedância, quando um escravo for responder, conecta seu transmissor.

� Mestre: fica ciclicamente interrogando um por um os escravos, que respondem com seus dados, se possuírem.

� Boa solução para sistemas com poucos dispositivos, baixo tráfego ou onde a velocidade não for crítica.

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

RS-485:

� Universal Asynchronous Receiver / Transmiter.� Conversão paralela / serial.� Inserção / retirada automática do Start-bit e Parity bit.� Velocidades programáveis.� Interrupções para transmissão / recepção.� Indicação de erros.

� Exemplos:� 8251 e 82C51, da Intel.� 16550 (usado nos PCs).

ComunicaComunicaçção Serial Assão Serial Assííncronancrona

UART:

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� UART interna:

� Muitos microcontroladores possuem UARTs internas, como o

80C51.

� Existem modelos de 80C51 com duas UARTs, como o DS80C320 da DALLAS.

� UART do 80C51:

� Pode-se facilmente escrever ou ler dados via interface serial.

� Realiza todo o processo de serialização, adição de start bits e stop bit.

� Permite transferência via interrupções ou “wait for flag”.

Estrutura da UART do 80C51

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Usando a UART:

� São necessários os seguintes passos para configurar corretamente a UART interna do 80C51:

� Definir a taxa de comunicação.

� Definir a origem do clock de comunicação.

� Programar o canal serial.

� Habilitar / desabilitar interrupções, caso se deseje (a técnica de “wait for

flag” também pode ser utilizada).

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Usando a UART:

� Modos de Operação:

� Modo 0: Shift Register de 8 bits

� dado: RXD

� clock: TXD = 1/12 clock do 80C51(fixo)

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Usando a UART:

� Modos de Operação:

� Modo 1: UART de 8 bits com taxa de comunicação variável.

� dado: TXD e RXD.

� clock: ajustável através do Timer 1 (não pode ser o Timer 0).

� 10 bits: 1 start bit, 8 bits de dado, 1 stop bit.

� paridade: opcional, por software.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Usando a UART:

� Modos de Operação:

� Modo 2: UART de 9 bits com taxa de comunicação fixa.

� dado: TXD e RXD.

� clock: 1/32 ou 1/64 clock do 80C51 (fixo).

� 11 bits: 1 start bit, 8 bits de dado, 9o. bit programável, 1 stop bit.

� paridade: opcional, por software.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Usando a UART:

� Modos de Operação:

� Modo 3: UART de 9 bits com taxa de comunicação variável.

� dado: TXD e RXD.

� clock: ajustável através do Timer 1 (não pode ser o Timer 0).

� 11 bits: 1 start bit, 8 bits de dado, 9o. bit programável, 1 stop bit.

� paridade: opcional, por software.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Usando a UART:

� Modos de Operação:� Modo 2 e Modo 3: permitem comunicação multiprocessadores.

� 1 mestre, n escravos, cada um com seu endereço.

� 9o. bit: =1 indica que a mensagem do mestre é de endereço (todos a examinam, e o escravo selecionado passa a pegar as mensagens seguintes de dados, com o 9o. bit = 0; os demais as ignoram, até o 9o. bit voltar a ser 1).

� o escravo pode também transmitir mensagens ao mestre, após estabelecida a conexão, mas para tanto não deve setar o 9o. bit.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Usando a UART:

� Programar o Timer1 para gerar o "Baud Rate“ (Modo 1 e Modo 3).

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Timer

� Timer1 no modo 2 (auto-reload)

� Cálculo:� Baud Rate = k x FreqOsc

32 x 12 x [256 - (TH1)]

� se SMOD = 0, k=1 SMOD = bit 7 de PCONse SMOD = 1, k=2

� Ou seja:� se SMOD = 0 TH1 = 256 - ((FreqOsc / 384) / Baud)

se SMOD = 1 TH1 = 256 - ((FreqOsc / 192) / Baud)

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Programando o Timer - exemplo:

� Ex.: cristal de 11.0592 Mhz e deseja-se 19200bps.

� Supondo SMOD = 0.

� TH1 = 256 - ((11059000 / 384) / 19200)TH1 = 256 - 1,5 = 254.5.

� Impossível! Se usarmos para 254 teremos 14.400bps, se setarmos para 255 teremos 28.800bps! O que fazer?

� Basta mudar SMOD para 1.

� TH1 = 256 - ((11059000 / 192) / 19200)TH1 = 256 - 3 = 253.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Timer:

� Timer/Counter mode:� TMOD (89h) – bit endereçável

7------T1------4 | 3-----T0--------0

Gate C/T M1 M01 0 (modo 2)

contador out timer

TH1 (8Dh) = valor de recarga em TL1

TCON (88h) – byte endereçável

---T1---|---T0----|---T1----|---T0----

TF1 TR1TF0 TR0 IE1 IT1 IE0 IT0TF = overflowTR = liga /desligaIE = habilitação de interrupção

Timer 1: sem interrupção: 0100 xxxx

ComunicaComunicaçção Serial ão Serial –– 80C51 80C51 Programando o Canal Serial:

� Modo Serial:� SCON (98h) – bit endereçável.

7--------------------------------------0

SM0 SM1 SM2 REN TB8 RB8 TI RI0 1 0 1

modo enable receive interrupt flagsserial reception transmite interrupt flags

(devem ser limpos por software).

� SM0 e SM1 definem o modo0 0 modo 0 = 8 bit Shift Register = Oscillator / 120 1 modo 1 = 8 bit UART = Baud Rate set by Timer 11 0 modo 2 = 9 bit UART = Oscillator / 321 1 modo 3 = 9 bit UART = Set by Timer 1.

� SM2 = flag para "Multiprocessor comunication". Caso esteja setada, RI somente será setado caso o nono bit recebido seja 1. Nos usos mais comuns, SM2 = 0.

� REN = deve estar setado para que a recepção seja habilitada.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Canal Serial:

� Modo Serial – continuação:� SCON (98h) – bit endereçável.

7--------------------------------------0

� SM0 SM1 SM2 REN TB8 RB8 TI RI0 1 0 1modo enable receive interrupt flags

serial reception transmite interrupt flags(devem ser limpos por software).

� TB8 é usado nos modos 2 e 3. O nono bit a ser transmitido é o nele contido.� RB8: idem a TB8 para recepção. O nono bit recebido será nele armazenado.� TI: Transmit Interrupt

Quando TI está setado, o programa pode assumir que a porta serial está pronta para transmitir o próximo byte.

� RI: Receive InterruptSempre que o 80C51 receber um byte completo, RI será setado, informando ao

software que o byte precisa ser lido, antes que seja recebido um novo valor.

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Canal Serial:

� Modo Serial – continuação:� PCON (87h) – byte endereçável

7--------------------------------------0

SM0D X X X X X X X

SMOD = 0: Modo 2: divide clock do 80C51 por 64SMOD = 0: Modos 1 e 3: divide saída Timer 1 por 32

SMOD = 1: Modo 2: divide clock do 80C51 por 32SMOD = 1: Modos 1 e 3: divide saída Timer 1 por 16

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Canal Serial:

� Interrupções.� IE (A8h) – bit endereçável.

7----------------4----------------------0.

EA ES ET1 EX1 ET0 EX0

� Por que usar interrupções?

� Qual a alternativa? Um esquema do tipo: wait for flag, onde o programa fica em loop perguntando ao dispositivo: "- Já recebeu dado?“, ou “- Acabou de transmitir o último dado?”

� No caso do wait for flag, o tempo de processamento gasto no poolingdos dispositivos é considerável: poderia ser usado no caso de programas pequenos e simples.

� As interrupções são uma maneira mais simples e limpa de fazer o mesmo serviço...

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Programando o Canal Serial:

� Lendo e enviando dados:

� Os dados devem ser lidos ou escritos em SBUF (99h), por exemplo, se quisermos escrever o caractere "A" na porta serial, isso pode ser feito como a seguir:

� MOV SBUF,#'A' ou MOV SBUF, #41H

ComunicaComunicaçção Serial ão Serial –– 80C5180C51

� Programando o Canal Serial:

� Exemplo de configuração sem interrupção:

; inicializacoes.

MOV TMOD,#00100000B ; Timer 1 no modo 2

MOV TH1,#0FDH ; configura para 9600bps

MOV TCON,#01000000B ; Ativa Timer 1

MOV PCON,#00000000B ; SMOD recebe 0 (Timer 1/32)

MOV SCON,#01000000B ; canal serial no modo 1

MOV IE,#00000000B ; desabilita interrupções

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Usando o Canal Serial com “wait for flag”:

� Envio de caracteres - rotina CO (character output):

CO: JNB TI,$ ; lê estado TI da serialCLR TI ; Se TI OK, limpa TIMOV SBUF,B ; escreve dadoJNB TI,$ ; espera sua transmissaoRET

� Recebimento de caracteres - CI (character input):

CI: JNB RI,$ ; lê estado RI da serialCLR RI ; Se RI OK dado está presente,

; limpa RIMOV B,SBUF ; lê dadoRET

ComunicaComunicaçção Serial ão Serial –– 80C5180C51� Usando o Canal Serial com “wait for flag”:

� Exemplo de rotina para imprimir uma mensagem (da ROM para a serial):

PRINT: MOV A,#00hMOVC A,@A+DPTRJZ PFIMMOV B,AACALL COINC DPTRSJMP PRINT

PFIM: RET

� Usando o Canal Serial com interrupções� Recebimento de caracteres

MOV TMOD,#00100000B ; Timer 1 no modo 2

MOV TH1,#0FDH ; configura para 9600bps

MOV TCON,#01000000B ; Ativa Timer 1MOV PCON,#00000000B ; SMOD recebe 0 (Timer 1/32)MOV SCON,#01010000B ; canal serial no modo 1, com interrupçãoMOV DPTR,#9000H ; ponteiro para dado recebidoMOV IE,#10010000B ; habilita interrupçõesCLR C ; limpa carryJNC $ ; aguarda fim de stringLJMP 0000H ; volta ao Programa Monitor...

CIINT: JNB RI, FIM2 ; se for interrupção de transmissão, MOV A, SBUF ; lê dadoMOVX @DPTR, A ; caso contrário armazena-oINC DPTR ; incrementa ponteiro de dados

FIM1: CLR RI ; limpa RI=pedido interrupção de recepçãoFIM2: CLR TI ; limpa TI=pedido interrupção de transmissão

RETIFIM3: SETB C ; indica fim de string

AJMP FIM1

Recommended