Comunicacion serie con PIC

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

description

Comunicacion serie con PIC

Transcript of Comunicacion serie con PIC

Page 1: Comunicacion serie con PIC

1

Módulos de Comunicación Serie

MicrocontroladoresPIC ©ATE-Universidad de Oviedo

COMUNICACIÓN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

Page 2: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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: Comunicacion serie con PIC

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)