Vous êtes sur la page 1sur 36

Mdulos de Comunicacin Serie

COMUNICACIN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

MicrocontroladoresPIC

ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

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 Datos Datos EMISOR Reloj? Referencia de tensin RECEPTOR Reloj t Bi Bi+1 t

MicrocontroladoresPIC

ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

COMUNICACIN SERIE (II)


Se emplean dos registros de desplazamiento (uno en el emisor y otro en el receptor) encadenados para la conversin paralelo/serie en la emisin y 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 reloj recibida 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) ....
ATE-Universidad de Oviedo

MicrocontroladoresPIC

Mdulos de Comunicacin Serie

TRANSFERENCIA SNCRONA
Dispositivo Maestro: el que genera la seal de reloj, es el que tiene capacidad de 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

Dato

Dato

Maestro

Clk

Esclavo

Maestro

Clk

Esclavo

Ref. Maestro Emitiendo


MicrocontroladoresPIC
ATE-Universidad de Oviedo

Ref. Maestro Recibiendo


4

Mdulos de Comunicacin Serie

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 de


parada que sirven para sincronizar los relojes del emisor y del receptor

de arranque que sita a 0 la lnea durante el tiempo correspondiente a un bit tiempo de un bit: bit de parada

La lnea de datos inactiva a 1, si se desea enviar un dato se manda un bit Al finalizar el envo de un dato, la lnea se sita a 1 al menos durante el

Reg. desplazamiento Reloj


MicrocontroladoresPIC

Datos

Reg. desplazamiento Sincr. Reloj


5

Referencia
ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

Microcontroladores PIC: MDULOS DE COMUNICACIN SERIE Mdulo SCI (Serial Communication Interface) USART (Universal Synchronous Asynchronous Receiver Transmitter) Dos pines asignados para la comunicacin: Modo Asncrono (full dplex) Modo Sncrono (semi dplex) Mdulo SSP (Synchronous Serial Port) Cuatro pines asignados para comunicacin: Interface Sncrono SPI (Serial Peripheral Interface) full dplex I2C (Inter-Integrated Circuit) semi dplex
MicrocontroladoresPIC
ATE-Universidad de Oviedo

RC6/TX/CK RC7/RX/DT

RC5/SDO RC4/SDI RC3/SCK RA5/SS

Mdulos de Comunicacin Serie

Configurable en tres modos de trabajo: 1.- Asncrono (full dplex)

MDULO SCI

- Recepcin y transmisin independientes compartiendo generador de 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)
MicrocontroladoresPIC
ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

MDULO SCI (II)


Los pines relacionados con la comunicacin no es necesario que sean configurados 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 estado TXSTA (0x98) & RCSTA (0x18) Registro de Relacin de Baudios SPBRG (0x99) Registro de datos de transmisin: TXREG (0x19) Registro de recepcin de datos: RCSTA (0x18)
MicrocontroladoresPIC
ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

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 elctricos de 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
MicrocontroladoresPIC
ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

Ejemplo tpico: comunicacin PIC - PC mediante puerto serie (RS232)

1 -> 5V 0 -> 0V RX TX GND Driver RS232 (MAX232)

Niveles escritura RS232 1 -> -5V a -15V 0 -> +5V a +15V TX RX GND Niveles lectura RS232 1 -> -3V a -15V 0 -> +3V a +15V

CONEXIN A 3 HILOS FULL DPLEX


MicrocontroladoresPIC

ATE-Universidad de Oviedo

10

Mdulos de Comunicacin Serie

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
MicrocontroladoresPIC
ATE-Universidad de Oviedo

11

Mdulos de Comunicacin Serie

Generador de Relacin de Baudios (BRG) Se emplea para determinar la frecuencia de reloj para los registros de desplazamiento de los bloques de transmisin y recepcin Depende del valor X cargado en el registro de generacin de la relacin de baudios SPBRG (direccin 0x99) y del estado del bit BRGH del registro TXSTA

Modo Sncrono (1) Asncrono (0)

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)
MicrocontroladoresPIC 12

ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

Generador de Relacin de Baudios (II) Al ser SPBRG un registro de 8 bits, puede que no sea posible alcanzar de manera exacta la velocidad de transmisin deseada Clculo del Error = (Valor calculado - Valor deseado) / Valor deseado Ejemplo: Valor deseado = 9600 baudios fosc = 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)
MicrocontroladoresPIC
ATE-Universidad de Oviedo

13

Mdulos de Comunicacin Serie

Ejemplos con BRGH=1

Ejemplos con BRGH=0

MicrocontroladoresPIC

ATE-Universidad de Oviedo

14

Mdulos de Comunicacin Serie

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 ritmo de su generador de relacin de baudios (que tendr un valor similar al del transmisor) 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 datos que trata de leer si hay un uno o un cero en la mitad del periodo de cada bit (seal estabilizada tras posible cambio)
MicrocontroladoresPIC
ATE-Universidad de Oviedo

15

Mdulos de Comunicacin Serie

Circuito de Muestreo (II)


Se emplea un sistema votado mediante tres muestras tomadas en el centro de cada bit mediante un reloj de frecuencia 16 veces superior al de recepcin si BRGH=0

Tras el flanco de bajada del bit de Start, se muestrea en los flancos de bajada 7, 8 y 9 del reloj de frecuencia 16 veces la del reloj de baudios

MicrocontroladoresPIC

ATE-Universidad de Oviedo

16

Mdulos de Comunicacin Serie

O bien tres muestras tomadas con otro criterio tambin en el centro de 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

MicrocontroladoresPIC

ATE-Universidad de Oviedo

17

Mdulos de Comunicacin Serie

Transmisor Asncrono
Indica TXREG vaco (TXIF=1) TXREG: buffer del Registro de Desplazamiento (accesible para lectura/escritura)

Salida de Datos

Permite entrada de reloj al registro de transmisin TSR Bit 9 si Datos de 9 bits Config. Datos de 9 bits

Mdulo SCI activo Indica TSR vaco (TRMT=1)

Diagrama de Bloques
TSR: Registro de Desplazamiento (no accesible directamente)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

18

Mdulos de Comunicacin Serie

Si TSR vaco y se escribe en TXREG, el dato pasa a TSR y se inicia transmisin DATO

movwf TXREG vaco vaco

TXREG

TSR

vaco

DATO

Si TSR lleno y se escribe en TXREG, nuevo dato en TXREG hasta que TSR quede vaco DATO2

movwf TXREG vaco


DATO2

TXREG

TSR
MicrocontroladoresPIC

DATO1
ATE-Universidad de Oviedo

DATO1
19

Mdulos de Comunicacin Serie

TSR vaco cuando se enva bit de STOP, el dato en TXREG pasa a TSR

TXREG

DATO2

vaco

TSR

vaco (fin transm.DATO1)

DATO2

FLAGS indicadores: TXIF: (PIR1<4>) TXREG vaco (puede activar interrupcin). Este flag se pone a cero automticamente (no por software) si TXREG ocupado. El flag est activo si lo est la transmisin (TXEN=1) TRMT: (TXSTA<1>) TSR vaco

MicrocontroladoresPIC

ATE-Universidad de Oviedo

20

Mdulos de Comunicacin Serie

Cronograma del envo de un dato:

Cronograma del envo de dos datos consecutivos:

MicrocontroladoresPIC

ATE-Universidad de Oviedo

21

Mdulos de Comunicacin Serie

REGISTROS PARA CONFIGURAR LA TRANSMISIN:


Configuracin de Transmisin Serie Asncrona
TXREG vaco

Mscara de interrupcin si TXREG vaco

Registro RCSTA (0x18)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

22

Mdulos de Comunicacin Serie

Configuracin de Transmisin Serie Asncrona

Bits que afectan a transmisin serie asncrona

Registro TXSTA (0x98)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

23

Mdulos de Comunicacin Serie

Pasos a dar para realizar una Transmisin serie Asncrona: 1.- Cargar SPBRG para una velocidad de transmisin dada (baudios) y configurar 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)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

24

Mdulos de Comunicacin Serie

Receptor Asncrono
Habilita Recepcin RCSTA<4>

RSR: Registro Desplazamiento (no accesible directamente) Indicadores de errores

Entrada Serie Datos de 9 bits SCI activo

Diagrama de Bloques
RCIF: indica recepcin completada (dato no leido en FIFO)
MicrocontroladoresPIC

RCREG: doble buffer recepcin (estructura FIFO)

ATE-Universidad de Oviedo

25

Mdulos de Comunicacin Serie

Llegada de un dato y RCREG vaco

RSR

Dato1 Vaco Vaco

RSR

Vaco Vaco Dato1

RCREG (doble)

RCREG (doble)

Llegada de un segundo dato y RCREG no ledo

RSR

Dato2 Vaco Dato1

RSR

Vaco Dato2 Dato1

RCREG (doble)

RCREG (doble)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

26

Mdulos de Comunicacin Serie

Llegada de un tercer dato y RCREG doble no ledo

RSR

Dato3 Dato2 Dato1

Error de Overrun: OERR=1 (grave) Se pierde el Dato3

RCREG (doble)

Bloqueo total de la Recepcin Se debe resetear el sistema de recepcin: CREN=0 y luego CREN=1

FLAGS indicadores: RCIF: (PIR1<5>) (puede activar interrupcin). Indica dato/s disponible/s para lectura en RCREG. Se pone a cero automticamente (no por software) cuando RCREG est vaco (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 debera ser 0 pero se lee 1 (tambin presenta un doble buffer FIFO)
MicrocontroladoresPIC
ATE-Universidad de Oviedo

27

Mdulos de Comunicacin Serie

Cronograma de recepcin de un dato:


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)

Lecturas posteriores a la llegada del 3er dato

RCREG vaco al principio

Reset de Recepcin para volver OERR a 0


28

MicrocontroladoresPIC

ATE-Universidad de Oviedo

Mdulos de Comunicacin Serie

REGISTROS PARA CONFIGURAR LA RECEPCIN:


Configuracin de Recepcin Serie Asncrona
Dato en RCREG

Mscara de interrupcin si RCREG lleno

Velocidad recepcin

SCI asncrono sncrono

MicrocontroladoresPIC

ATE-Universidad de Oviedo

29

Mdulos de Comunicacin Serie

Configuracin de Recepcin Serie Asncrona

Bits que afectan a la Recepcin serie Asncrona

Registro RCSTA (0x18)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

30

Mdulos de Comunicacin Serie

Pasos a dar para preparar una Recepcin serie Asncrona:


1.- Inicializar el registro SPBRG para una velocidad dada (baudios) de recepcin 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
MicrocontroladoresPIC
ATE-Universidad de Oviedo

31

Mdulos de Comunicacin Serie

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 estn definidos 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

MicrocontroladoresPIC

ATE-Universidad de Oviedo

32

Mdulos de Comunicacin Serie

Deteccin de Direccin en la Recepcin (II) Este procedimiento se empleara para una comunicacin serie en la que hay varios 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 TX EMISOR RX Receptor Direccin 1 RX Receptor Direccin 2 RX Receptor Direccin n Dato

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
MicrocontroladoresPIC
ATE-Universidad de Oviedo

33

Mdulos de Comunicacin Serie

Modificacin del diagrama de bloques para PICs con bit ADDEN

Para que ADDEN tenga efecto se debe tener tambin RX9=1

MicrocontroladoresPIC

ATE-Universidad de Oviedo

34

Mdulos de Comunicacin Serie

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

MicrocontroladoresPIC

ATE-Universidad de Oviedo

35

Mdulos de Comunicacin Serie

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 de direccin se corresponde con la asignada al dispositivo, se debe poner el bit ADDEN a 0 para que se admita el byte de datos que viene a continuacin (o el resto de la direccin si es mayor de 1 byte el tamao)

MicrocontroladoresPIC

ATE-Universidad de Oviedo

36

Vous aimerez peut-être aussi