Sci asincrono

36
1 Módulos de Comunicación Serie MicrocontroladoresPIC ©ATE-Universidad de Oviedo COMUNICACIÓN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

Transcript of Sci asincrono

Page 1: Sci asincrono

1

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

COMUNICACIÓN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

Page 2: Sci asincrono

2

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

COMUNICACIÓN SERIE

• Los datos se envían bit a bit por una misma línea y durante un tiempo fijo

• Velocidad de transmisión: número de bits enviados por segundo (baudios)

• Transferencia Síncrona: se envía señal de reloj para sincronizar cada bit

• Transferencia Asíncrona: no se envía la señal de reloj. Se necesitan relojes en el emisor y en el receptor de la misma frecuencia y en fase

EMISOR RECEPTOR

Datos

Referenciade tensión

¿Reloj?

t

t

Datos

Reloj

Bi Bi+1

Page 3: Sci asincrono

3

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

COMUNICACIÓN SERIE (II)

• Se emplean dos registros de desplazamiento (uno en el emisor y otroen el receptor) encadenados para la conversión paralelo/serie en la emisióny la serie/paralelo en la recepción

• Sincronizaciones:

* De los sucesivos bits * De cada paquete de bits (8 ó 9 bits)

• Se envía la señal de reloj si la distancia entre Emisor y Receptor es corta:menores retardos en las transiciones y menores flancos en la señal 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) * ....

Page 4: Sci asincrono

4

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

TRANSFERENCIA SÍNCRONA

• Dispositivo Maestro: el que genera la señal de reloj, es el que tiene capacidadde iniciar o finalizar una transferencia

• Dispositivo Esclavo: recibe la señal de reloj, no tiene capacidad para iniciar una transferencia de información

• Es posible una transmisión continua de bits, no hay limite en tamaño de datos

Maestro Esclavo

Dato

Clk Maestro Esclavo

Dato

Clk

Maestro Emitiendo Maestro Recibiendo

Ref. Ref.

Page 5: Sci asincrono

5

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

TRANSFERENCIA ASÍNCRONA

• Se emplean relojes de igual frecuencia (se acuerda y configura la velocidad de transmisión) pero es necesario que estén en fase (sincronizados)

• Cada paquete de bits de tamaño fijo se “enmarca” con bits de arranque y deparada que sirven para sincronizar los relojes del emisor y del receptor

• La línea de datos inactiva a “1”, si se desea enviar un dato se manda un bitde arranque que sitúa a “0” la línea durante el tiempo correspondiente a un bit

• Al finalizar el envío de un dato, la línea se sitúa a “1” al menos durante eltiempo de un bit: bit de parada

Reg. desplazamiento Reg. desplazamiento

Reloj RelojSincr.

Datos

Referencia

Page 6: Sci asincrono

6

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Microcontroladores PIC: MÓDULOS DE COMUNICACIÓN SERIE

• Módulo SCI (Serial Communication Interface) ó USART (Universal Synchronous Asynchronous Receiver Transmitter)

Dos pines asignados para la comunicación: RC6/TX/CKRC7/RX/DT

Modo Asíncrono (full dúplex)Modo Síncrono (semi dúplex)

• Módulo SSP (Synchronous Serial Port)

Cuatro pines asignados para comunicación: RC5/SDORC4/SDI

Interface Síncrono RC3/SCKSPI (Serial Peripheral Interface) full dúplex RA5/SSI2C (Inter-Integrated Circuit) semi dúplex

Page 7: Sci asincrono

7

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Configurable en tres modos de trabajo:

1.- Asíncrono (full dúplex)

- Recepción y transmisión independientes compartiendo generadorde relación de baudios (BRG)- TX: pin de transmisión (salida)- RX: pin de recepción (entrada)

2.- Síncrono modo Maestro (semi dúplex)

- CK: reloj generado por el PIC (salida)- DT: datos entrantes (recepción) o salientes (transmisión)

3.- Síncrono modo Esclavo (semi dúplex)

- CK: reloj entrante- DT: datos entrantes (recepción) o salientes (transmisión)

MÓDULO SCI

Page 8: Sci asincrono

8

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

MÓDULO SCI (II)

• Los pines relacionados con la comunicación no es necesario que seanconfigurados como salidas en el TRISC, si está operativo el módulo prevalecen sobre el registro de dirección de datos

• Registros asociados al SCI:

Registros de control y estadoTXSTA (0x98) & RCSTA (0x18)

Registro de Relación de BaudiosSPBRG (0x99)

Registro de datos de transmisión:TXREG (0x19)

Registro de recepción de datos:RCSTA (0x18)

Page 9: Sci asincrono

9

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

MÓDULO SCI EN TRANSMISIÓN ASÍNCRONA

• Es la conexión más adecuada para la comunicación con un equipo alejado

• Los niveles lógicos de las señales se corresponden con los niveles eléctricosde alimentación del microcontrolador

• Hay varias normas de transmisión serie asíncrona: RS232, RS485, RS422,...que emplean niveles de tensión más inmunes al ruido (RS232) o que emplean tensiones diferenciales (RS485, RS422) y que son más apropiadas para distancias largas entre dispositivos

• Para implementar estas transmisiones, sería necesario la adaptación de niveles eléctricos mediante los correspondientes circuitos integrados de adaptación (drivers o transceivers) • Si los microcontroladores a comunicar están cercanos podría obviarse esa adaptación

• La transmisión puede ser unidireccional o bidireccional y simultánea

Page 10: Sci asincrono

10

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Ejemplo típico: comunicación PIC - PC mediante puerto serie (RS232)

DriverRS232

(MAX232)

TX

RX

RX

TX

“1” -> 5V“0” -> 0V

“1” -> -3V a -15V“0” -> +3V a +15V

GND GND

Niveles lectura RS232

“1” -> -5V a -15V“0” -> +5V a +15V

Niveles escritura RS232

CONEXIÓN A 3 HILOSFULL DÚPLEX

Page 11: Sci asincrono

11

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

BLOQUES PARA SCI EN MODO ASÍNCRONO:

• Generador de Relación de Baudios (BRG)

- Define la velocidad de transferencia (transmisión y recepción)- Genera reloj de comunicación a partir del oscilador del MCU

• Circuito de Muestreo

- Detección de “1” ó “0” en pin RX- Sincronización de reloj

• Transmisor Asíncrono

- Registro serie de transmisión con buffer de carga

• Receptor Asíncrono

- Registro serie de recepción con doble buffer

Page 12: Sci asincrono

12

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Generador de Relación de Baudios (BRG)

• Se emplea para determinar la frecuencia de reloj para los registros dedesplazamiento de los bloques de transmisión y recepción

• Depende del valor X cargado en el registro de generación de larelación de baudios SPBRG (dirección 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 Asíncrono ( en modo síncrono BRGH se ignora y es otra la fórmula)

Modo Síncrono (1) ó Asíncrono (0)

Page 13: Sci asincrono

13

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Generador de Relación de Baudios (II)

• Al ser SPBRG un registro de 8 bits, puede que no sea posible alcanzar demanera exacta la velocidad de transmisión deseada

• Cálculo 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)

Page 14: Sci asincrono

14

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Ejem

plos

con

BRG

H=0

Ejem

plos

con

BRG

H=1

Page 15: Sci asincrono

15

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Circuito de Muestreo

• Codificación 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 relación de baudios (reloj), pero no lo envía

• El receptor introduce los bits que van apareciendo en su línea RX al ritmode su generador de relación de baudios (que tendrá un valor similar al deltransmisor) pero debe sincronizarse mediante la aparición del bit de start en la línea 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 línea de datosque trata de leer si hay un “uno” o un “cero” en la mitad del periodo decada bit (señal estabilizada tras posible cambio)

Page 16: Sci asincrono

16

Módulos de Comunicación 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 recepciónsi 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

Page 17: Sci asincrono

17

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

• O bien tres muestras tomadas con otro criterio también en el centrode cada bit mediante un reloj de frecuencia 4 veces el de recepción si BRGH=1

Tras el primer flanco de bajada en reloj de baudios x 4 después de Start, se muestrea en los 3 flancos (subida o bajada) del oscilador

anteriores al segundo flanco de subida del reloj

Page 18: Sci asincrono

18

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Transmisor Asíncrono

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 transmisiónTSR

Indica TXREGvacío (TXIF=1)

Indica TSR vacío (TRMT=1)

Config. Datos de 9 bits

Bit 9 si Datos de 9 bits

Módulo SCI activo

Page 19: Sci asincrono

19

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

TXREG

TSR

Si TSR vacío y se escribe en TXREG, el dato pasa a TSR y se inicia transmisión

DATO

vacío

vacío

vacío

DATO

movwf TXREG

Si TSR lleno y se escribe en TXREG, nuevo dato en TXREG hasta que TSR quede vacío

TXREG

TSR

DATO2

vacío

DATO1

DATO2

DATO1

movwf TXREG

Page 20: Sci asincrono

20

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

TSR vacío cuando se envía bit de STOP, el dato en TXREG pasa a TSR

TXREG

TSR

DATO2

vacío (fin transm.DATO1)

vacío

DATO2

FLAGS indicadores:

•TXIF: (PIR1<4>) TXREG vacío (puede activar interrupción). Este flagse pone a cero automáticamente (no por software) si TXREG ocupado.El flag está activo si lo está la transmisión (TXEN=1)

•TRMT: (TXSTA<1>) TSR vacío

Page 21: Sci asincrono

21

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Cronograma del envío de un dato:

Cronograma del envío de dos datos consecutivos:

Page 22: Sci asincrono

22

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Registro RCSTA (0x18)

Conf

igur

ació

n de

Tra

nsm

isió

n Se

rie

Así

ncro

naREGISTROS PARA CONFIGURAR LA TRANSMISIÓN:

TXREG vacío

Máscara de interrupción si TXREG vacío

Page 23: Sci asincrono

23

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Registro TXSTA (0x98)

Bits que afectan a transmisión serie asíncrona

Conf

igur

ació

n de

Tra

nsm

isió

n Se

rie

Así

ncro

na

Page 24: Sci asincrono

24

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Pasos a dar para realizar una Transmisión serie Asíncrona:

1.- Cargar SPBRG para una velocidad de transmisión dada (baudios) yconfigurar velocidad alta o baja (BRGH)

2.- Activar módulo SCI (SPEN=1) y definirlo como Asíncrono (SYNC=0)

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

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

5.- Activar transmisión (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 transmisión)

Page 25: Sci asincrono

25

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Receptor Asíncrono

Entrada Serie

Habilita Recepción RCSTA<4>

Diagrama de Bloques

RSR: Registro Desplazamiento(no accesible directamente)

RCREG: doble buffer recepción(estructura FIFO)RCIF: indica recepción completada

(dato no leido en FIFO)

Datos de 9 bitsSCI activo

Indicadoresde errores

Page 26: Sci asincrono

26

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Llegada de un dato y RCREG vacío

Dato1RSR

Vacío

VacíoRCREG(doble)

VacíoRSR

Vacío

Dato1RCREG(doble)

Llegada de un segundo dato y RCREG no leído

Dato2RSR

Vacío

Dato1RCREG(doble)

VacíoRSR

Dato2

Dato1RCREG(doble)

Page 27: Sci asincrono

27

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Llegada de un tercer dato y RCREG doble no leído

Dato3RSR

Dato2

Dato1RCREG(doble)

Error de Overrun: OERR=1 (grave)

Se pierde el Dato3

Bloqueo total de la Recepción

Se debe resetear el sistema de recepción:CREN=0 y luego CREN=1

FLAGS indicadores:

•RCIF: (PIR1<5>) (puede activar interrupción). Indica dato/s disponible/spara lectura en RCREG. Se pone a cero automáticamente (no por software) cuando RCREG esté vacío (el doble buffer debe estarlo).

•OERR(=RCSTA<1>) Error de Overrun: hay que resetear el receptor para volver a 0

•FERR(=RCSTA<2>) Error de Trama: el bit de STOP debería ser “0” pero se lee “1”(también presenta un doble buffer FIFO)

Page 28: Sci asincrono

28

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Cronograma de recepción de un dato:

RCREG vacío 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 Recepciónpara volver OERR a 0

Lecturas posterioresa la llegada del 3er dato

Page 29: Sci asincrono

29

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Conf

igur

ació

n de

Rec

epci

ón S

erie

Así

ncro

na

REGISTROS PARA CONFIGURAR LA RECEPCIÓN:

Dato en RCREG

Máscara de interrupción si RCREG lleno

SCI asíncronoó síncrono

Velocidadrecepción

Page 30: Sci asincrono

30

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Registro RCSTA (0x18)

Conf

igur

ació

n de

Rec

epci

ón S

erie

Así

ncro

na Bits que afectan a la Recepción serie Asíncrona

Page 31: Sci asincrono

31

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Pasos a dar para preparar una Recepción serie Asíncrona:

1.- Inicializar el registro SPBRG para una velocidad dada (baudios) derecepción y configurar velocidad alta o baja (BRGH)

2.- Activar módulo SCI (SPEN=1) y definirlo como Asíncrono (SYNC=0)

3.- Si se quiere detectar recepción por interrupción RCIE=1

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

5.- Activar recepción (CREN=1)

6.- Al completarse la recepción 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 también si se dio algún error (OERR ó FERR)

8.- Leer el dato en RCREG para obtener el dato recibido

9.- Si se dio algún error resetear con CREN=0

Page 32: Sci asincrono

32

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Detección de “Dirección” en la Recepción

SÓLO es posible en algunos microcontroladores (p.e. PIC16F87x)los que tienen el bit ADDEN en el registro RCSTA

Tiene efecto sólo si estándefinidos los datos de tamaño 9 bits

Si se activa sirve para admitir sólo los datos que lleguen con el bit más signif. a uno y no admitir el resto

Page 33: Sci asincrono

33

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Detección de “Dirección” en la Recepción (II)

• Este procedimiento se emplearía para una comunicación serie en la que hayvarios receptores posibles y se identifican los destinatarios de los mensajes mediante una dirección

• Se distinguen bytes de datos y bytes de direcciones

Dirección del destinatario Dato

EMISOR

Receptor Dirección 1

Receptor Dirección 2

Receptor Dirección 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

Page 34: Sci asincrono

34

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Modificación del diagrama de bloquespara PICs con bit ADDEN

Para que ADDEN tenga efecto se debe tener también RX9=1

Page 35: Sci asincrono

35

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Cronograma recepción: byte de datos seguido de byte de dirección con ADDEN=1

El byte de datos no entra en RCREG debido a que ADDEN=1

Page 36: Sci asincrono

36

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

Cronograma recepción: byte de dirección seguido de byte de datos con ADDEN=1

El byte de datos no entra en RCREG debido a que todavía ADDEN=1

• Tras detectar una dirección (bit 8 a “1”) y comprobar que el resto del byte dedirección 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 continuación (o elresto de la dirección si es mayor de 1 byte el tamaño)