Вы находитесь на странице: 1из 24

Comunicación Serie: SCI Síncrono

COMUNICACIÓN SERIE
PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

MÓDULO SCI EN MODO SÍNCRONO

1
Microcontroladores PIC ©ATE-Universidad de Oviedo
Fernando Nuño García
Comunicación Serie: SCI Síncrono

SCI MODO SÍNCRONO Dos líneas:


SYNC = 1 (TXSTA<4>) DT: datos
SPEN=1 (RCSTA<7>) CK: reloj

Modo MAESTRO:
CSRC = 1 (TXSTA<7>)

Semi dúplex
EMITIENDO uno de los RECIBIENDO
TXEN=1 (TXSTA<5>) 2 estados CREN y/o SREN (RCSTA<5:4>)

(no simultáneos) DT
DT
MAESTRO MAESTRO
EMISOR CK RECEPTOR CK

En modo Maestro, la línea de reloj es siempre de salida


la línea de datos es de salida o entrada dependiendo de TXEN y CREN/SREN
prevalece la definición de entrada sobre la de salida
2
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

SCI MODO SÍNCRONO Dos líneas:


SYNC = 1 (TXSTA<4>) DT: datos
SPEN=1 (RCSTA<7>) CK: reloj

Modo ESCLAVO:
CSRC = 0 (TXSTA<7>)

Semi dúplex
EMITIENDO uno de los RECIBIENDO
TXEN=1 (TXSTA<5>) 2 estados CREN = 1 (RCSTA<4>)

DT (no simultáneos) DT
ESCLAVO ESCLAVO
EMISOR CK RECEPTOR CK

En modo Esclavo, la línea de reloj es siempre de entrada,


la línea de datos es de salida o entrada dependiendo de TXEN y CREN
prevalece la definición de entrada (CREN) sobre la de salida (TXEN)
3
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Generador de Relación de Baudios (BRG)


sólo tiene sentido en Modo Maestro
porque en modo Esclavo el reloj es el que entre por CK

• Se determina la frecuencia de reloj para la transmisión y la recepción


en modo Maestro: se genera y envía la señal de reloj

• Valor X cargado en el registro SPBRG (dirección 0x99)

Registro TXSTA

Modo Síncrono (1) No importa BRGH


como sucedía en el modo
Asíncrono

Velocidad de transmisión (baudios) = fosc /(4*(X+1))

4
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

TRANSMISIÓN SÍNCRONA COMO MAESTRO

TXREG “carga” TSR


(registro de transmisión)
TSR no es accesible directamente

DT

CK
Control

Durante el Estado Inactivo (sin transmisión) no hay flancos en el reloj (CK)

Cuando se inicia una transmisión, empiezan a aparecer flancos en el reloj.


Al finalizar el envío del dato, desaparecen los flancos

¡Ahora no hay bit de START ni de STOP como en el caso Asíncrono!


5
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

• TSR no se “carga” hasta que no se haya enviado el último bit de una carga previa,
en cuanto este bit es enviado, TSR se carga con un nuevo dato almacenado en TXREG
(si es que ya estaba disponible)

• Una vez que TXREG carga a TSR, TXREG queda vacío y el flag TXIF=1
(posible interrupción si se activaron las máscaras),
TXIF=0 cuando TXREG vuelva a estar ocupado
(OJO: TXIF es de sólo lectura y no se puede poner a 0 por software)

• TRMT es bit de sólo lectura e indica estado de TSR (a 1 si TSR vacío y 0 si lleno)
no existe ninguna interrupción asociada el estado de este bit

Dato1 Dato2 Fin del envío


a TXREG a TXREG de Dato1

TXREG: vacío vacío Dato2 vacío

TSR: vacío Dato1 Dato1 Dato2

TXIF = 1 TXIF = 1 TXIF = 0 TXIF = 1


TRMT = 1 TRMT = 0 TRMT = 0 TRMT = 0

6
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

INICIO DE UNA TRANSMISIÓN SÍNCRONA

Existen dos posibilidades:

1ª Posibilidad.- Se habilita TXEN=1 y a continuación se carga TXREG

Cronograma de envío de dos bytes seguidos

(los bits “salen” en los flancos de subida de CK y estarán estables en flancos de bajada)

7
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

2ª Posibilidad.- Se carga TXREG primero y luego se pone TXEN=1

El inicio de la transmisión es más rápido porque ahora el dato ya está


cargado y disponible en el registro de desplazamiento TSR para el envío

Mientras TXEN=0 el generador de relación de baudios permanecerá


parado y reseteado
8
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

TXEN bit de activación de transmisión:

• Este bit junto con CREN y/o SREN define si la línea de datos es de transmisión
(TXEN=1) o de recepción (CREN=1 recepción continua, SREN=1 recepción simple).
Si están activos simultáneamente, prevalece recepción sobre transmisión

•Si TXEN se pone a cero durante una transmisión, ésta se interrumpe y se resetea
el bloque de transmisión

• Si TXEN está a cero, y no está activa la recepción (CREN=0, SREN=0), las líneas
DT y CK se sitúan en un estado de alta impedancia respecto a los pines del PORTC
(DT y CK no salen al exterior)

• Si se activa una recepción (CREN=1 ó SREN=1) durante una transmisión, se aborta


la transmisión y la línea de datos del registro TSR pasa a un estado de alta
impedancia (desconexión de la línea exterior). El módulo transmisor no se
resetea, sólo queda desconectado de la línea de datos.
Si se volvieran anular CREN ó SREN, volvería a transmitir saliendo de alta impedancia:
la salida de TSR se conectaría de nuevo a la línea de datos exterior DT.

• Sólo se resetea la transmisión si TXEN=0

9
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Pasos a dar para realizar una Transmisión Serie Síncrona


como Maestro:

1.- Cargar SPBRG para una velocidad de transmisión dada (baudios)

2.- Activar módulo SCI (SPEN=1), definirlo como Síncrono (SYNC=1)


y Maestro (CSRC=1)

3.- Si se quiere detectar buffer vacío por interrupción TXIE=1,


PEIE=1, GIE=1

4.- Si se desea tamaño de datos de 9 bits configurar TX9=1

5.- Activar transmisión (TXEN=1)

6.- Si se seleccionaron 9 bits, cargar el 9º en TX9D

7.- Cargar el dato en TXREG (se inicia la transmisión)

Los pasos 5 y 7 podrían intercambiarse


10
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Registros Asociados
con Transmisión Síncrona
en Modo Maestro

11
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

RECEPCIÓN SÍNCRONA COMO MAESTRO

CK
Control SREN SREN: para recibir sólo un dato
CREN: para recepción continua de datos

CREN

b8
DT
No hay bits
de START
ni STOP

Cuando se inicia una recepción se generan


flancos en CK y entran los datos por DT

12
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

RECEPCIÓN DEL MAESTRO


• Por tratarse de Maestro, se genera la señal de reloj cuando se inicie recepción
que puede ser:

a) Para recibir un solo dato (SREN=1):


Se generan 8 ó 9 flancos en el reloj y se para éste al completarse el dato,
SREN se pone a 0 por hardware
b) Para recibir datos de manera continua (CREN=1).
Si CREN=1 y SREN=1 simultáneamente, prevalece la recepción continua
Se generan flancos en el reloj de manera continua hasta que CREN=0

8 periodos de reloj

Recepción de un dato con SREN=1

13
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

• Tras entrar el último bit en RSR, el dato completo se transfiere a RCREG


(si no hay error: OERR=0), el flag RCIF (solo lectura) se pone a 1 (¿interrupción?)

• RCREG es un doble buffer de tipo FIFO.


Cuando el buffer esté vacío, RCIF se pondrá a 0 por hardware

• Pueden estar dos datos en el buffer y recibiéndose un tercer dato en RSR, pero
si se completa el tercer byte con RCREG doble lleno, se pierde RSR y se da error
de overrun (OERR=1). Se podrían leer los dos datos de RCREG pero se debe eliminar
el error para desbloquear pasos de RSR a RCEG.
¿Cómo? -> CREN=0 -> OERR=0 ¡ OERR = 1 !
Se completa Se completa Se completa Bloqueo
Dato1 Dato2 Dato3 RSR->RCREG

Entrando... Entrando... Entrando... Dato3


RSR:
vacío vacío Dato2 Dato2
RCREG: vacío Dato1 Dato1 Dato1

RCIF = 0 RCIF = 1 RCIF = 1 RCIF = 1

14
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Pasos para preparar Recepción Serie Síncrona como Maestro:

1.- Inicializar SPBRG para una velocidad de transmisión dada (baudios)

2.- Activar módulo SCI (SPEN=1), definirlo como Síncrono (SYNC=1)


y Maestro (CSRC=1)

3.- Borrar CREN y SREN al principio

4.- Si se desean interrupciones, activar máscaras RCIE, PEIE, GIE

5.- Si se desea tamaño de datos de 9 bits configurar RX9=1

6.- Si se desea recibir un dato (SREN=1), si recepción continua (CREN=1)

7.- Al completarse un dato RCIF=1 (¿interrupción?)

8.- Si el dato es de 9 bits, recoger RX9D en registro RCSTA

9.- Recoger los 8 bits del dato en RCREG

10.- Si se dio algún error (OERR=1), resetear poniendo CREN=0

15
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Registros Asociados
con Recepción Síncrona
en Modo Maestro

16
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

TRANSMISIÓN SÍNCRONA COMO ESCLAVO

• En Modo Esclavo, la señal de reloj es una entrada externa por el pin CK,
podría transmitir o recibir incluso en modo SLEEP

DT

CK

Se cargará TSR a través de TXREG pero sin capacidad de iniciar transferencia.


Se debe esperar a que aparezcan flancos en la línea CK para el envío

17
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

• La transferencia TXREG -> TSR es idéntica a la del modo Maestro y los


flags indicadores (TXIF y TRMT) también

• En modo Maestro, la carga de TXREG desencadenaba la aparición de flancos en CK

•Se podrían cargar dos datos en TXREG, el primero pasaría a TSR y el segundo
quedaría a la “espera” en TXREG. Podriamos mandar a modo de bajo consumo (SLEEP)
al micro. En cuanto se haya enviado el primer dato, TXREG le “pasa” el segundo a TSR
y queda vacío TXREG, provocando TXIF=1 (pudiendo despertarse el microcontrolador
para que sitúe el siguiente dato en TXREG)

Cargamos
Dato1 Despierta
Dato2
enviado y cargamos
y SLEEP
Dato3
TXREG: vacío Dato2 vacío Dato3

TSR: Dato1 Dato1 Dato2 Dato2

TXIF = 1 TXIF = 0 TXIF = 1 TXIF = 0


TRMT = 0 TRMT = 0 TRMT = 0 TRMT = 0

18
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Pasos a dar para realizar una Transmisión Serie Síncrona


como Esclavo:

1.- Activar módulo SCI (SPEN=1), definirlo como Síncrono (SYNC=1)


y Esclavo (CSRC=0)

2.- Asegurar que CREN=0 y SREN=0

3.- Si se desean interrupciones, activar máscaras TXIE, PEIE, GIE

4.- Si se desean enviar datos de 9 bits configurar TX9=1

5.- Si se seleccionaron 9 bits, cargar el 9º en TX9D

6.- Cargar el dato en TXREG

7.- Permitir transmisión poniendo TXEN=1

19
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Registros Asociados
con la Transmisión Síncrona
en Modo Esclavo

20
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

RECEPCIÓN SÍNCRONA COMO ESCLAVO

En modo Esclavo, la señal de reloj (CK) es entrada externa

CK
CREN

b8

SREN sin sentido en modo esclavo

Se podrían recibir datos estando dormido el microcontrolador

21
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

• Tras entrar el último bit en RSR, el dato completo se transfiere a RCREG (si está
vacío), el flag RCIF (solo lectura) se pone a 1 y puede generar una interrupción

• RCREG es un doble buffer de tipo FIFO, cuando esté vacío RCIF=0 (hardware)

• Pueden estar dos datos en el buffer y recibiéndose un tercer dato en RSR,


si se completa el tercer byte con RCREG doble lleno, se pierde RSR y error
(OERR=1). Se podrían leer los dos datos de RCREG pero se debe eliminar el error
para desbloquear el paso de RSR a RCEG. ¿Cómo? CREN=0 -> OERR=0
¡ OERR = 1 !
Se completa Se completa Se completa Bloqueo
Dato1 Dato2 Dato3 RSR->RCREG
RSR:
Entrando... Entrando... Entrando... Dato3

RCREG: vacío vacío Dato2 Dato2


vacío Dato1 Dato1 Dato1

RCIF = 0 RCIF = 1 RCIF = 1 RCIF = 1

22
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Pasos a dar para preparar Recepción Serie Síncrona como Esclavo:

1.- Activar módulo SCI (SPEN=1), definirlo como Síncrono (SYNC=1)


y Esclavo (CSRC=0)

2.- Si se desean interrupciones activar máscaras RCIE, PEIE, GIE

3.- Si se desea tamaño de datos de 9 bits configurar RX9=1

4.- Activar recepción con CREN=1

5.- Al completarse un dato RCIF=1 (¿interrupción?)

6.- Si el dato es de 9 bits, recoger RX9D en registro RCSTA

7.- Recoger 8 bits del dato en RCREG

8.- Si se dio algún error (OERR=1) -> resetear poniendo CREN=0

23
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: SCI Síncrono

Registros Asociados
con Recepción Síncrona
en Modo Esclavo

24
Microcontroladores PIC ©ATE-Universidad de Oviedo

Вам также может понравиться