View
398
Download
0
Category
Preview:
DESCRIPTION
Comunicacion serie con PIC
Citation preview
1
Módulos de Comunicación Serie
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
COMUNICACIÓN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES 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
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) * ....
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.
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
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
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
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)
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
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
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
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)
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)
14
Módulos de Comunicación Serie
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
Ejem
plos
con
BRG
H=0
Ejem
plos
con
BRG
H=1
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)
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
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
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
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
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
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:
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
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
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)
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
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)
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)
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
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
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
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
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
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
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
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
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)
Recommended