Vous êtes sur la page 1sur 51

Interfaces Seriais

Interfaces Seriais
Andr R. Hirakawa
06/2005
Contedo
Introduo e Princpios
Padres de comunicao serial
Interfaces e barramentos de
comunicao serial
Aplicaes de comunicao serial
Especificao e projeto de interface
serial
Como conectar equipamentos uns aos
outros?
Interfaces de
Comunicao:
Paralela
Serial
Barramentos e redes
Interface
Paralela
Equipamento 1
Equipamento 2
Dados + controle
Todos os bits de uma palavra so
transmitidos simultaneamente
Cada canal necessita de diversos fios
Vantagens:
Vantagens:
- Maior velocidade.
- Simplicidade
das interfaces.
Desvantagens:
Desvantagens:
- Muitos fios > custo
- Rudo, perda de
sincronismo
Menores distncias
Interface
Paralela
Equipamento 1
Equipamento 2
Dados
+
controle
S
S

ncrona
ncrona
Ass
Ass

ncrona
ncrona
Is
Is

crona
crona
Interface Serial
Transmissor e receptor utilizam o mesmo clock com
mesma freqncia e fase
Transferncia 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 bytes
0,3% de tempo extra !
Tipos de Interfaces Seriais - 1
Sncrona
Clocks do transmissor e do receptor podem estar
ligeiramente diferentes
ressincronismo a cada byte
Transferncia 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
Assncrona
Clock includo ou incorporado ao dado
ressincronismo a cada pacote
Transferncia de pacotes
Contnuo e sem checagem dos dados
til para aplicaes de transferncia de grande
quantidade de dados e sem preciso.
Ex: Vdeo conferncia
Tipos de Interfaces Seriais - 3
Iscrona
Padres de Comunicao Serial
X CAN
X Serial ATA
X
X
X
X
X
Assncro
no
X
X
Iscrono
IEEE-1394
USB
X RS-485
X RS-422
X
Sncrono
RS-232
Padro
Padres de Comunicao Serial
X SPI
X I2C
X SMbus
X Memory Stick
Serial
Assncro
no
Iscrono
X
Sncrono
ETHERNET
Padro
Facilidade de implementao
Menor Custo
Atualmente alcana velocidades compatveis
com as sncronas
Embora as interfaces seriais s
Embora as interfaces seriais s

ncronas
ncronas
sejam mais r
sejam mais r

pidas, as interfaces
pidas, as interfaces
seriais ass
seriais ass

ncronas so mais utilizadas.


ncronas so mais utilizadas.
Conjunto de regras pelas quais informaes ou dados (ex:
nmeros, letras) podem ser convertidos a uma
representao do cdigo e vice-versa.
Para transmitir a informao atravs de uma interface
necessrio que ela esteja codificada de alguma forma.
A unidade mais bsica de informao para ns o bit, que
pode ter valores 0 ou 1. Toda informao utilizada pelos
computadores codificada de alguma forma em
seqncias de bits.
Comunica
Comunica

o Serial
o Serial
Ass
Ass

ncrona
ncrona
Cdigo:
Abreviao de: American Standard Code for Information
Interchange.
Cdigo universal para intercmbio de informaes,
concebido especialmente para utilizao em transmisso,
recepo e processamento de dados.
ASCII para 7 bits: 2
7
= 128 caracteres podem ser
representados.
ASCII para 8 bits: 2
8
= 256 caracteres diferentes.
ex.: o cdigo ASCII 0100 0001 = 65D = 41H representa o caractere "A" .
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Cdigo ASCII:
Bit acrescentado ao dado, destinado deteco de
erros.
Paridade par: nmero par de bits no estado 1.
Paridade mpar: nmero mpar de bits no estado 1.
ex.: caractere "Aem 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 tambm 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
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Paridade:(1)
Ex.: dado com bit de paridade: 1 1 0 0 0 0 0 1.
vamos supor que por um erro de transmisso, 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 nmero par de 1, e indicar que houve
algum erro na transmisso, e que esse byte
invlido.
E se houver um nmero par de mudanas?
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Paridade:(2)
Ex.:
Transmisso 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
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Transmisso de um Caractere:
Quando no h dados sendo transmitidos, a linha fica em nvel
lgico 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 prximo.
A quantidade de bits na informao transmitida tambm pode
variar: de 5 a 8 bits.
Obs: Transmissor e receptor devem ter as mesmas
configuraes quanto a velocidade, tamanho da palavra,
paridade e nmero de stop bits!
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Transmisso de um Caractere:
O receptor reconhece a borda de descida do Start Bit e sincroniza seu clock.
Aps 1 ciclo e meio comea a fazer a leitura dos demais bits a cada clock.
Se as freqncias do transmissor e do receptor estiverem perfeitamente
sincronizadas, as leituras sero efetuadas exatamente no meio de cada ciclo.
Tolerncia a pequenas variaes dos clocks de Tx e Rx.
Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop
Sincroniza demais leituras
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Transmisso de um Caractere:
o nmero de transies (ou eventos) por
segundo.
Cada evento pode transmitir mais de 1 bit:
ex.: modems, onde a variao de fase da portadora poderia
representar dois ou mais bits.
Quando cada evento representa apenas 1 bit,
ento o Bit Rate e o Baud Rate so iguais.
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
Bit Rate:
o o n n mero de bits por segundo mero de bits por segundo
transmitidos transmitidos atrav atrav s da interface serial. s da interface serial.
Baud Rate:
RS-XXX
Padro fsico e eltrico.
Conector DB25 (no caso dos computadores PC, usa-se normalmente um DB9,
com os principais sinais).
DB25 DB9 descrio do sinal
2 3 Transmit Data - TXD.
3 2 Receive Data - RXD.
4 7 Request to Send - RTS.
5 8 Clear to Send - DTS.
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
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-232:
Null Modems: Conector simplificado, usado para transferncia de dados
Hyperterminal do Windows: permite desabilitar sinais de controle de fluxo.
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-232
Padro fsico e eltrico
Opera com tenses referenciadas ao terra.
Nvel lgico 0 : tenso entre +3 e +15V
Nvel lgico 1: tenso entre - 3 e - 15V
Faixas de tenso
invlido
+ 15V
nvel lgico
0
+3V
0V invlido
- 3V
nvel lgico
1
- 15V
invlido
Valores tpicos: + 12V e - 12V
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-232:
"Single ended": sinal referenciado terra
Tx
Rx
Terra = 0 V
Problemas:
Quedas de tenso ao longo do fio
Susceptvel a rudos e diferenas de potencial de terras
Limite de distncia +/- 15m (depende da taxa e qualidade do cabo)
Taxa mxima: 20Kbps
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-232:
"Differencial Voltage Pairs": Sinal Diferencial
Tx + Va - Vb < - 0.2V = 0
Tx - Va - Vb > +0,2V = 1
par tranado
Vantagens:
Mais imune a cross-talk
Mais resistente a quedas de tenso
Limite de distncia: +/- 1200m (depende da taxa e cabo)
Taxa mxima: 10Mbps
No define conector
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
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.
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-485:
Exemplo de topologia de rede com RS 485
Mestre
Escravos
Tx Rx
End. 1
End. 0
Tx Rx
Tx Rx
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-485:
End. n - 1
Filosofia Mestre-Escravo:
1 mestre, n - 1 escravos, cada um com o seu endereo.
Mestre: toma a iniciativa da comunicao.
Escravos: s respondem s mensagens a eles endereadas.
TxD do mestre: Chega a todos RxD dos escravos.
TxD dos escravos:
Em alta impedncia, quando um escravo for responder,
conecta seu transmissor.
Mestre: fica ciclicamente interrogando um por um os escravos,
que respondem com seus dados, se possurem.
Boa soluo para sistemas com poucos dispositivos, baixo
trfego ou onde a velocidade no for crtica.
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
RS-485:
Universal Asynchronous Receiver / Transmiter.
Converso paralela / serial.
Insero / retirada automtica do Start-bit e Parity bit.
Velocidades programveis.
Interrupes para transmisso / recepo.
Indicao de erros.
Exemplos:
8251 e 82C51, da Intel.
16550 (usado nos PCs).
Comunica
Comunica

o Serial Ass
o Serial Ass

ncrona
ncrona
UART:
Comunica
Comunica

o Serial
o Serial

80C51
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 serializao, adio de start bits e stop bit.
Permite transferncia via interrupes ou wait for flag.
Estrutura da UART do 80C51
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
So necessrios os seguintes passos para configurar
corretamente a UART interna do 80C51:
Definir a taxa de comunicao.
Definir a origem do clock de comunicao.
Programar o canal serial.
Habilitar / desabilitar interrupes, caso se deseje (a tcnica de wait for
flag tambm pode ser utilizada).
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Modos de Operao:
Modo 0: Shift Register de 8 bits
dado: RXD
clock: TXD = 1/12 clock do 80C51(fixo)
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Modos de Operao:
Modo 1: UART de 8 bits com taxa de comunicao varivel.
dado: TXD e RXD.
clock: ajustvel atravs do Timer 1 (no pode ser o Timer 0).
10 bits: 1 start bit, 8 bits de dado, 1 stop bit.
paridade: opcional, por software.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Modos de Operao:
Modo 2: UART de 9 bits com taxa de comunicao 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 programvel, 1 stop bit.
paridade: opcional, por software.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Modos de Operao:
Modo 3: UART de 9 bits com taxa de comunicao varivel.
dado: TXD e RXD.
clock: ajustvel atravs do Timer 1 (no pode ser o Timer 0).
11 bits: 1 start bit, 8 bits de dado, 9o. bit programvel, 1 stop bit.
paridade: opcional, por software.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Modos de Operao:
Modo 2 e Modo 3: permitem comunicao multiprocessadores.
1 mestre, n escravos, cada um com seu endereo.
9o. bit: =1 indica que a mensagem do mestre de endereo (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 tambm transmitir mensagens ao mestre, aps
estabelecida a conexo, mas para tanto no deve setar o 9o. bit.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Usando a UART:
Programar o Timer1 para gerar o "Baud Rate (Modo 1 e Modo 3).
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Timer
Timer1 no modo 2 (auto-reload)
Clculo:
Baud Rate = k x FreqOsc
32 x 12 x [256 - (TH1)]
se SMOD = 0, k=1 SMOD = bit 7 de PCON
se SMOD = 1, k=2
Ou seja:
se SMOD = 0 TH1 = 256 - ((FreqOsc / 384) / Baud)
se SMOD = 1 TH1 = 256 - ((FreqOsc / 192) / Baud)
Comunica
Comunica

o Serial
o Serial

80C51
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.
Impossvel! 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.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Timer:
Timer/Counter mode:
TMOD (89h) bit enderevel
7------T1------4 | 3-----T0--------0
Gate C/T M1 M0
1 0 (modo 2)
contador out timer
TH1 (8Dh) = valor de recarga em TL1
TCON (88h) byte enderevel
---T1---|---T0----|---T1----|---T0----
TF1 TR1TF0 TR0 IE1 IT1 IE0 IT0
TF = overflow
TR = liga /desliga
IE = habilitao de interrupo
Timer 1: sem interrupo: 0100 xxxx
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Canal Serial:
Modo Serial:
SCON (98h) bit enderevel.
7--------------------------------------0
SM0 SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1
modo enable receive interrupt flags
serial reception transmite interrupt flags
(devem ser limpos por software).
SM0 e SM1 definem o modo
0 0 modo 0 = 8 bit Shift Register = Oscillator / 12
0 1 modo 1 = 8 bit UART = Baud Rate set by Timer 1
1 0 modo 2 = 9 bit UART = Oscillator / 32
1 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 recepo seja habilitada.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Canal Serial:
Modo Serial continuao:
SCON (98h) bit enderevel.
7--------------------------------------0
SM0 SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1
modo 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 recepo. 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 prximo byte.
RI: Receive Interrupt
Sempre 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.
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Canal Serial:
Modo Serial continuao:
PCON (87h) byte enderevel
7--------------------------------------0
SM0D X X X X X X X
SMOD = 0: Modo 2: divide clock do 80C51 por 64
SMOD = 0: Modos 1 e 3: divide sada Timer 1 por 32
SMOD = 1: Modo 2: divide clock do 80C51 por 32
SMOD = 1: Modos 1 e 3: divide sada Timer 1 por 16
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Canal Serial:
Interrupes.
IE (A8h) bit enderevel.
7----------------4----------------------0
.
EA ES ET1 EX1 ET0 EX0
Por que usar interrupes?
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 considervel: poderia ser usado no caso de
programas pequenos e simples.
As interrupes so uma maneira mais simples e limpa de fazer o
mesmo servio...
Comunica
Comunica

o Serial
o Serial

80C51
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
Comunica
Comunica

o Serial
o Serial

80C51
80C51
Programando o Canal Serial:
Exemplo de configurao sem interrupo:
; 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 interrupes
Comunica
Comunica

o Serial
o Serial

80C51
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
Comunica
Comunica

o Serial
o Serial

80C51
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
Usando o Canal Serial com interrupes
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 interrupo
MOV DPTR,#9000H ; ponteiro para dado recebido
MOV IE,#10010000B ; habilita interrupes
CLR C ; limpa carry
JNC $ ; aguarda fim de string
LJMP 0000H ; volta ao Programa Monitor...
CIINT: JNB RI, FIM2 ; se for interrupo de transmisso,
MOV A, SBUF ; l dado
MOVX @DPTR, A ; caso contrrio armazena-o
INC DPTR ; incrementa ponteiro de dados
FIM1: CLR RI ; limpa RI=pedido interrupo de recepo
FIM2: CLR TI ; limpa TI=pedido interrupo de transmisso
RETI
FIM3: SETB C ; indica fim de string
AJMP FIM1

Vous aimerez peut-être aussi