51
Interfaces Seriais André R. Hirakawa Paulo S. Cugnasca 11/2014

André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Interfaces Seriais

André R. Hirakawa

Paulo S. Cugnasca

11/2014

Page 2: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Conteúdo

� Introdução e princípios

� Padrões de comunicação serial

� Interfaces e barramentos de comunicação serial

� Aplicações de comunicação serial

� Especificação e projeto de interface serial

Page 3: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Como conectar equipamentos uns aos outros?

� Interfaces de Comunicação:

� Paralela

� Serial

�Barramentos e redes

Page 4: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Interface Paralela

Equipamento 1 Equipamento 2

Dados + controle

Page 5: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

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

� Cada canal necessita de diversos fios

Vantagens:

- Maior velocidade

- Simplicidade

das interfaces

Desvantagens:

- Muitos fios, > custo

- Ruído, perda desincronismo

- Menores distâncias

Interface Paralela

Page 6: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Equipamento 1 Equipamento 2

Dados+

controle

Síncrona

Assíncrona

Isócrona

Interface Serial

Page 7: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� Transmissor e receptor utilizam o mesmo clock commesma frequê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.: tamanho do bloco = 1024 bytes + 3 bytes = 1027 bytes0,3% de tempo extra !

Tipos de Interfaces Seriais - 1

Síncrona

Page 8: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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

Page 9: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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

Page 10: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Padrões de Comunicação Serial

Padrão Síncrono Assíncrono Isócrono

RS-232 X X

RS-422 X X

RS-485 X X

USB X X

IEEE-1394 X X

CAN X

Serial ATA X

Page 11: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Padrões de Comunicação Serial

Padrão Síncrono Assíncrono

Isócrono

ETHERNET X

SPI X

I2C X

SMbus X

Memory Stick Serial

X

Page 12: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� Facilidade de implementação

� Menor Custo

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

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

Page 13: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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 sequências de bits.

Comunicação Serial Assíncrona

Código:

Page 14: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

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

� 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" .

Comunicação Serial Assíncrona

Código ASCII:

Page 15: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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.

Comunicação Serial Assíncrona

Paridade:(1)

Page 16: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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?

Comunicação Serial Assíncrona

Paridade:(2)

Page 17: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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

Comunicação Serial Assíncrona

Transmissão de um Caractere:

Page 18: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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!

Comunicação Serial Assíncrona

Transmissão de um Caractere:

Page 19: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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 frequê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

Comunicação Serial Assíncrona

Transmissão de um Caractere:

Page 20: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� É 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.

Comunicação Serial Assíncrona

Bit Rate:

� É o número de bits por segundo transmitidosatravés da interface serial.

Baud Rate:

Page 21: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

RS-XXX

Page 22: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� Padrão físico e elétrico.

� Conector DB25 (no caso dos computadores PC, usa-se normalmente um DB9, com os principais sinais).

DB25 DB9 descrição do sinal

2 3 Transmit Data - TXD.

3 2 Receive Data - RXD.

4 7 Request to Send - RTS.

5 8 Clear to Send - CTS.

6 6 Data Set Ready - DSR.

7 5 Signal Ground - GND.

8 1 Data Carrier Detect - DCD.

15 Transmit Clock - TXCk.

17 Receive Clock - RXCk.

20 4 Data Terminal Ready - DTR.

24 Auxiliary Clock.

22 9 Ring Indicator - RI.

Comunicação Serial Assíncrona

RS-232:

Page 23: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

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

DB25 DB9DB25 DB9DB25 DB9DB25 DB92 3 TXD.2 3 TXD.2 3 TXD.2 3 TXD.3 3 3 3 2222 RXD.RXD.RXD.RXD.4 7 RTS.4 7 RTS.4 7 RTS.4 7 RTS.5 8 5 8 5 8 5 8 CTSCTSCTSCTS....6 6 DSR.6 6 DSR.6 6 DSR.6 6 DSR.7 5 GND.7 5 GND.7 5 GND.7 5 GND.8 1 DCD.8 1 DCD.8 1 DCD.8 1 DCD.15 15 15 15 TXCkTXCkTXCkTXCk....17 17 17 17 RXCkRXCkRXCkRXCk....20 4 DTR.20 4 DTR.20 4 DTR.20 4 DTR.24 24 24 24 22 9 RI.22 9 RI.22 9 RI.22 9 RI.

DB25 DB9DB25 DB9DB25 DB9DB25 DB93333 2222 RXD.RXD.RXD.RXD.2 3 TXD.2 3 TXD.2 3 TXD.2 3 TXD.4 7 RTS.4 7 RTS.4 7 RTS.4 7 RTS.5 8 5 8 5 8 5 8 CTSCTSCTSCTS....6 6 DSR.6 6 DSR.6 6 DSR.6 6 DSR.7 5 GND.7 5 GND.7 5 GND.7 5 GND.8 1 DCD.8 1 DCD.8 1 DCD.8 1 DCD.15 15 15 15 TXCkTXCkTXCkTXCk....17 17 17 17 RXCkRXCkRXCkRXCk....20 4 DTR.20 4 DTR.20 4 DTR.20 4 DTR.24 24 24 24 22 9 RI.22 9 RI.22 9 RI.22 9 RI.

Comunicação Serial Assíncrona

RS-232

Page 24: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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

- 15V

inválido

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

Comunicação Serial Assíncrona

RS-232:

Page 25: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� "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

Comunicação Serial Assíncrona

RS-232:

Page 26: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� "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

Comunicação Serial Assíncrona

RS-422:

Page 27: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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.

Comunicação Serial Assíncrona

RS-485:

Page 28: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� Exemplo de topologia de rede com RS 485

Mestre

Escravos

Tx Rx

End. 1

End. 0

Tx RxTx Rx

Comunicação Serial Assíncrona

RS-485:

End. n - 1

Page 29: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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.

Comunicação Serial Assíncrona

RS-485:

Page 30: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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).

Comunicação Serial Assíncrona

UART:

Page 31: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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”.

Page 32: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Estrutura da UART do 80C51

Page 33: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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).

Page 34: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� Usando a UART:

� Modos de Operação:

� Modo 0: Shift Register de 8 bits

� Dado: RXD e TXD

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

Page 35: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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.

Page 36: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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.

Page 37: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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.

Page 38: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� 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.

Page 39: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� Usando a UART:

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

Page 40: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� Programando o Timer

� Timer1 no modo 2 (auto-reload)

� Cálculo:

� Baud Rate = k x FreqOsc32 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)

Page 41: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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.

Page 42: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� Programando o Timer:

� Timer/Counter mode:

� TMOD (89h) – byte endereçável7------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) – bit 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

Page 43: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 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.

Page 44: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� 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 1

modo enable receive interrupt flagsserial 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 InterruptQuando 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.

Page 45: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� 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

Page 46: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51� 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 pooling dos 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...

Page 47: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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

Page 48: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

Comunicação Serial – 80C51

� 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

Page 49: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

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

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

CO: JNB TI,$ ; lê estado TI da serial

CLR TI ; Se TI OK, limpa TI

MOV SBUF,B ; escreve dado

JNB TI,$ ; espera sua transmissao

RET

� Recebimento de caracteres - CI (character input):

CI: JNB RI,$ ; lê estado RI da serial

CLR RI ; Se RI OK dado está presente,

; limpa RI

MOV B,SBUF ; lê dado

RET

Page 50: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

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

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

PRINT: MOV A,#00h

MOVC A,@A+DPTR

JZ PFIM

MOV B,A

ACALL CO

INC DPTR

SJMP PRINT

PFIM: RET

Page 51: André R. Hirakawa Paulo S. Cugnasca 11/2014sites.poli.usp.br/d/pcs2529/index_arquivos/Serial - v2014.pdf · 5 8 5 8 cts ctscts. ... 6 6 dsr. 7 5 gnd. 8 1 dcd. 15 15 txck txcktxck

� 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 1

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

MOV SCON,#01010000B ; canal serial no modo 1, com interrupçãoMOV DPTR,#9000H ; ponteiro para dado recebido

MOV IE,#10010000B ; habilita interrupções

CLR C ; limpa carry

JNC $ ; aguarda fim de string

LJMP 0000H ; volta ao Programa Monitor...

CIINT: JNB RI, FIM2 ; se for interrupção de transmissão, MOV A, SBUF ; lê dado

MOVX @DPTR, A ; caso contrário armazena-o

INC DPTR ; incrementa ponteiro de dados

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

FIM2: CLR TI ; limpa TI=pedido interrupção de transmissão

RETI

FIM3: SETB C ; indica fim de string

AJMP FIM1