sci asincrono
TRANSCRIPT
-
1Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
COMUNICACIN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC
-
2Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
COMUNICACIN SERIE
Los datos se envan bit a bit por una misma lnea y durante un tiempo fijo
Velocidad de transmisin: nmero de bits enviados por segundo (baudios)
Transferencia Sncrona: se enva seal de reloj para sincronizar cada bit
Transferencia Asncrona: no se enva la seal de reloj. Se necesitan relojes en el emisor y en el receptor de la misma frecuencia y en fase
EMISOR RECEPTOR
Datos
Referenciade tensin
Reloj?
t
t
Datos
Reloj
Bi Bi+1
-
3Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
COMUNICACIN SERIE (II)
Se emplean dos registros de desplazamiento (uno en el emisor y otroen el receptor) encadenados para la conversin paralelo/serie en la emisiny la serie/paralelo en la recepcin
Sincronizaciones:
* De los sucesivos bits * De cada paquete de bits (8 9 bits)
Se enva la seal de reloj si la distancia entre Emisor y Receptor es corta:menores retardos en las transiciones y menores flancos en la seal de relojrecibida
Codificaciones posibles de cada bit:
* NRZ (nivel alto: 1 / nivel bajo: 0) * NRZI (cambio de nivel: 1 / sin cambio de nivel: 0) * RZ (impulso: 1 / sin impulso: 0) * ....
-
4Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
TRANSFERENCIA SNCRONA
Dispositivo Maestro: el que genera la seal de reloj, es el que tiene capacidadde iniciar o finalizar una transferencia
Dispositivo Esclavo: recibe la seal de reloj, no tiene capacidad para iniciar una transferencia de informacin
Es posible una transmisin continua de bits, no hay limite en tamao de datos
Maestro Esclavo
Dato
Clk Maestro Esclavo
Dato
Clk
Maestro Emitiendo Maestro Recibiendo
Ref. Ref.
-
5Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
TRANSFERENCIA ASNCRONA
Se emplean relojes de igual frecuencia (se acuerda y configura la velocidad de transmisin) pero es necesario que estn en fase (sincronizados)
Cada paquete de bits de tamao fijo se enmarca con bits de arranque y deparada que sirven para sincronizar los relojes del emisor y del receptor
La lnea de datos inactiva a 1, si se desea enviar un dato se manda un bitde arranque que sita a 0 la lnea durante el tiempo correspondiente a un bit
Al finalizar el envo de un dato, la lnea se sita a 1 al menos durante eltiempo de un bit: bit de parada
Reg. desplazamiento Reg. desplazamiento
Reloj RelojSincr.
Datos
Referencia
-
6Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Microcontroladores PIC: MDULOS DE COMUNICACIN SERIE
Mdulo SCI (Serial Communication Interface) USART (Universal Synchronous Asynchronous Receiver Transmitter)
Dos pines asignados para la comunicacin: RC6/TX/CKRC7/RX/DT
Modo Asncrono (full dplex)Modo Sncrono (semi dplex)
Mdulo SSP (Synchronous Serial Port)
Cuatro pines asignados para comunicacin: RC5/SDORC4/SDI
Interface Sncrono RC3/SCKSPI (Serial Peripheral Interface) full dplex RA5/SSI2C (Inter-Integrated Circuit) semi dplex
-
7Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Configurable en tres modos de trabajo:
1.- Asncrono (full dplex)
- Recepcin y transmisin independientes compartiendo generadorde relacin de baudios (BRG)- TX: pin de transmisin (salida)- RX: pin de recepcin (entrada)
2.- Sncrono modo Maestro (semi dplex)
- CK: reloj generado por el PIC (salida)- DT: datos entrantes (recepcin) o salientes (transmisin)
3.- Sncrono modo Esclavo (semi dplex)
- CK: reloj entrante- DT: datos entrantes (recepcin) o salientes (transmisin)
MDULO SCI
-
8Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
MDULO SCI (II)
Los pines relacionados con la comunicacin no es necesario que seanconfigurados como salidas en el TRISC, si est operativo el mdulo prevalecen sobre el registro de direccin de datos
Registros asociados al SCI:
Registros de control y estadoTXSTA (0x98) & RCSTA (0x18)
Registro de Relacin de BaudiosSPBRG (0x99)
Registro de datos de transmisin:TXREG (0x19)
Registro de recepcin de datos:RCSTA (0x18)
-
9Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
MDULO SCI EN TRANSMISIN ASNCRONA
Es la conexin ms adecuada para la comunicacin con un equipo alejado
Los niveles lgicos de las seales se corresponden con los niveles elctricosde alimentacin del microcontrolador
Hay varias normas de transmisin serie asncrona: RS232, RS485, RS422,...que emplean niveles de tensin ms inmunes al ruido (RS232) o que emplean tensiones diferenciales (RS485, RS422) y que son ms apropiadas para distancias largas entre dispositivos
Para implementar estas transmisiones, sera necesario la adaptacin de niveles elctricos mediante los correspondientes circuitos integrados de adaptacin (drivers o transceivers) Si los microcontroladores a comunicar estn cercanos podra obviarse esa adaptacin
La transmisin puede ser unidireccional o bidireccional y simultnea
-
10
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Ejemplo tpico: comunicacin PIC - PC mediante puerto serie (RS232)
DriverRS232
(MAX232)
TX
RX
RX
TX
1 -> 5V0 -> 0V
1 -> -3V a -15V0 -> +3V a +15V
GND GND
Niveles lectura RS232
1 -> -5V a -15V0 -> +5V a +15V
Niveles escritura RS232
CONEXIN A 3 HILOSFULL DPLEX
-
11
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
BLOQUES PARA SCI EN MODO ASNCRONO:
Generador de Relacin de Baudios (BRG)
- Define la velocidad de transferencia (transmisin y recepcin)- Genera reloj de comunicacin a partir del oscilador del MCU
Circuito de Muestreo
- Deteccin de 1 0 en pin RX- Sincronizacin de reloj
Transmisor Asncrono
- Registro serie de transmisin con buffer de carga
Receptor Asncrono
- Registro serie de recepcin con doble buffer
-
12
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Generador de Relacin de Baudios (BRG)
Se emplea para determinar la frecuencia de reloj para los registros dedesplazamiento de los bloques de transmisin y recepcin
Depende del valor X cargado en el registro de generacin de larelacin de baudios SPBRG (direccin 0x99) y del estado del bit BRGHdel registro TXSTA
BRGH = 1 (velocidad alta): baudios = fosc /(16*(X+1))
BRGH = 0 (velocidad baja): baudios = fosc /(64*(X+1))
SCI Asncrono ( en modo sncrono BRGH se ignora y es otra la frmula)
Modo Sncrono (1) Asncrono (0)
-
13
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Generador de Relacin de Baudios (II)
Al ser SPBRG un registro de 8 bits, puede que no sea posible alcanzar demanera exacta la velocidad de transmisin deseada
Clculo del Error = (Valor calculado - Valor deseado) / Valor deseado
Ejemplo: Valor deseado = 9600 baudiosfosc = 16MHz
BRGH = 0 -> 9600 = 16000000 / (64 * (X+1))X = 25,042 -> SPBRG = 25
Valor calculado = 16000000 / (64 * (25+1)) = 9615 baudios
Error = (9615 - 9600)/9600 = 0,16 %
Puede alcanzarse menor error configurando velocidad alta (BRGH=1)
-
14
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
E
j
e
m
p
l
o
s
c
o
n
B
R
G
H
=
0
E
j
e
m
p
l
o
s
c
o
n
B
R
G
H
=
1
-
15
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Circuito de Muestreo
Codificacin de los bits de los datos NRZ (Non Return to Zero) con un bit de start,8 9 bits de datos y un bit de stop
El transmisor saca sus bits por TX (empezando por B0) con los flancos que marca su generador de relacin de baudios (reloj), pero no lo enva
El receptor introduce los bits que van apareciendo en su lnea RX al ritmode su generador de relacin de baudios (que tendr un valor similar al deltransmisor) pero debe sincronizarse mediante la aparicin del bit de start en la lnea de datos
Es materialmente imposible hacer coincidir flancos de relojes de TX y RX
Por tal motivo se necesita un circuito de muestreo de la lnea de datosque trata de leer si hay un uno o un cero en la mitad del periodo decada bit (seal estabilizada tras posible cambio)
-
16
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Circuito de Muestreo (II)
Se emplea un sistema votado mediante tres muestras tomadas en el centrode cada bit mediante un reloj de frecuencia 16 veces superior al de recepcinsi BRGH=0
Tras el flanco de bajada del bit de Start, se muestreaen los flancos de bajada 7, 8 y 9 del reloj
de frecuencia 16 veces la del reloj de baudios
-
17
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
O bien tres muestras tomadas con otro criterio tambin en el centrode cada bit mediante un reloj de frecuencia 4 veces el de recepcin si BRGH=1
Tras el primer flanco de bajada en reloj de baudios x 4 despus de Start, se muestrea en los 3 flancos (subida o bajada) del oscilador
anteriores al segundo flanco de subida del reloj
-
18
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Transmisor Asncrono
Diagrama de Bloques
TSR: Registro de Desplazamiento(no accesible directamente)
TXREG: buffer del Registro de Desplazamiento(accesible para lectura/escritura)
Salida de Datos
Permite entradade reloj al registro
de transmisinTSR
Indica TXREGvaco (TXIF=1)
Indica TSR vaco (TRMT=1)
Config. Datos de 9 bits
Bit 9 si Datos de 9 bits
Mdulo SCI activo
-
19
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
TXREG
TSR
Si TSR vaco y se escribe en TXREG, el dato pasa a TSR y se inicia transmisin
DATO
vaco
vaco
vaco
DATO
movwf TXREG
Si TSR lleno y se escribe en TXREG, nuevo dato en TXREG hasta que TSR quede vaco
TXREG
TSR
DATO2
vaco
DATO1
DATO2
DATO1
movwf TXREG
-
20
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
TSR vaco cuando se enva bit de STOP, el dato en TXREG pasa a TSR
TXREG
TSR
DATO2
vaco (fin transm.DATO1)
vaco
DATO2
FLAGS indicadores:
TXIF: (PIR1) TXREG vaco (puede activar interrupcin). Este flagse pone a cero automticamente (no por software) si TXREG ocupado.El flag est activo si lo est la transmisin (TXEN=1)
TRMT: (TXSTA) TSR vaco
-
21
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Cronograma del envo de un dato:
Cronograma del envo de dos datos consecutivos:
-
22
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Registro RCSTA (0x18)
C
o
n
f
i
g
u
r
a
c
i
n
d
e
T
r
a
n
s
m
i
s
i
n
S
e
r
i
e
A
s
n
c
r
o
n
a
REGISTROS PARA CONFIGURAR LA TRANSMISIN:
TXREG vaco
Mscara de interrupcin si TXREG vaco
-
23
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Registro TXSTA (0x98)
Bits que afectan a transmisin serie asncrona
C
o
n
f
i
g
u
r
a
c
i
n
d
e
T
r
a
n
s
m
i
s
i
n
S
e
r
i
e
A
s
n
c
r
o
n
a
-
24
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Pasos a dar para realizar una Transmisin serie Asncrona:
1.- Cargar SPBRG para una velocidad de transmisin dada (baudios) yconfigurar velocidad alta o baja (BRGH)
2.- Activar mdulo SCI (SPEN=1) y definirlo como Asncrono (SYNC=0)
3.- Si se quiere detectar buffer vaco por interrupcin TXIE=1
4.- Si se desea tamao de datos de 9 bits configurar TX9=1
5.- Activar transmisin (TXEN=1) que har que TXIF=1
6.- Si se seleccionaron 9 bits, cargar el 9 en TX9D
7.- Cargar el dato en TXREG (se inicia la transmisin)
-
25
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Receptor Asncrono
Entrada Serie
Habilita Recepcin RCSTA
Diagrama de Bloques
RSR: Registro Desplazamiento(no accesible directamente)
RCREG: doble buffer recepcin(estructura FIFO)RCIF: indica recepcin completada
(dato no leido en FIFO)
Datos de 9 bitsSCI activo
Indicadoresde errores
-
26
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Llegada de un dato y RCREG vaco
Dato1RSR
Vaco
VacoRCREG(doble)
VacoRSR
Vaco
Dato1RCREG(doble)
Llegada de un segundo dato y RCREG no ledo
Dato2RSR
Vaco
Dato1RCREG(doble)
VacoRSR
Dato2
Dato1RCREG(doble)
-
27
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Llegada de un tercer dato y RCREG doble no ledo
Dato3RSR
Dato2
Dato1RCREG(doble)
Error de Overrun: OERR=1 (grave)
Se pierde el Dato3
Bloqueo total de la Recepcin
Se debe resetear el sistema de recepcin:CREN=0 y luego CREN=1
FLAGS indicadores:
RCIF: (PIR1) (puede activar interrupcin). Indica dato/s disponible/spara lectura en RCREG. Se pone a cero automticamente (no por software) cuando RCREG est vaco (el doble buffer debe estarlo).
OERR(=RCSTA) Error de Overrun: hay que resetear el receptor para volver a 0
FERR(=RCSTA) Error de Trama: el bit de STOP debera ser 0 pero se lee 1(tambin presenta un doble buffer FIFO)
-
28
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Cronograma de recepcin de un dato:
RCREG vaco al principio
Llegada de un primer dato:bit de STOP
Llegada de un segundo dato:bit de STOP Tercer dato
sin haber realizado lectura(error de Overrun)
Reset de Recepcinpara volver OERR a 0
Lecturas posterioresa la llegada del 3er dato
-
29
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
C
o
n
f
i
g
u
r
a
c
i
n
d
e
R
e
c
e
p
c
i
n
S
e
r
i
e
A
s
n
c
r
o
n
a
REGISTROS PARA CONFIGURAR LA RECEPCIN:
Dato en RCREG
Mscara de interrupcin si RCREG lleno
SCI asncrono sncrono
Velocidadrecepcin
-
30
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Registro RCSTA (0x18)
C
o
n
f
i
g
u
r
a
c
i
n
d
e
R
e
c
e
p
c
i
n
S
e
r
i
e
A
s
n
c
r
o
n
a
Bits que afectan a la Recepcin serie Asncrona
-
31
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Pasos a dar para preparar una Recepcin serie Asncrona:
1.- Inicializar el registro SPBRG para una velocidad dada (baudios) derecepcin y configurar velocidad alta o baja (BRGH)
2.- Activar mdulo SCI (SPEN=1) y definirlo como Asncrono (SYNC=0)
3.- Si se quiere detectar recepcin por interrupcin RCIE=1
4.- Si se desea tamao de datos de 9 bits configurar RX9=1
5.- Activar recepcin (CREN=1)
6.- Al completarse la recepcin de un dato RCIF=1 y si se habilitaron interrupciones, se generar una
7.- Si se seleccionaron 9 bits, leer el 9 en RX9D de RCSTA. Se determina tambin si se dio algn error (OERR FERR)
8.- Leer el dato en RCREG para obtener el dato recibido
9.- Si se dio algn error resetear con CREN=0
-
32
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Deteccin de Direccin en la Recepcin
SLO es posible en algunos microcontroladores (p.e. PIC16F87x)los que tienen el bit ADDEN en el registro RCSTA
Tiene efecto slo si estndefinidos los datos de tamao 9 bits
Si se activa sirve para admitir slo los datos que lleguen con el bit ms signif. a uno y no admitir el resto
-
33
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Deteccin de Direccin en la Recepcin (II)
Este procedimiento se empleara para una comunicacin serie en la que hayvarios receptores posibles y se identifican los destinatarios de los mensajes mediante una direccin
Se distinguen bytes de datos y bytes de direcciones
Direccin del destinatario Dato
EMISOR
Receptor Direccin 1
Receptor Direccin 2
Receptor Direccin n
TX
RX RX RX
Los bytes de direcciones se pueden diferenciar de los de datos en que tienen el 9 bit a uno y se pueden emplear para filtrar mediante ADDEN
-
34
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Modificacin del diagrama de bloquespara PICs con bit ADDEN
Para que ADDEN tenga efecto se debe tener tambin RX9=1
-
35
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Cronograma recepcin: byte de datos seguido de byte de direccin con ADDEN=1
El byte de datos no entra en RCREG debido a que ADDEN=1
-
36
Mdulos de Comunicacin Serie
MicrocontroladoresPIC ATE-Universidad de Oviedo
Cronograma recepcin: byte de direccin seguido de byte de datos con ADDEN=1
El byte de datos no entra en RCREG debido a que todava ADDEN=1
Tras detectar una direccin (bit 8 a 1) y comprobar que el resto del byte dedireccin se corresponde con la asignada al dispositivo, se debe poner el bitADDEN a 0 para que se admita el byte de datos que viene a continuacin (o elresto de la direccin si es mayor de 1 byte el tamao)