More Related Content
Similar to Sci asincrono (20)
Sci asincrono
- 1. Módulos de Comunicación Serie
COMUNICACIÓN SERIE
PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC
1
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 2. Módulos de Comunicación Serie
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
Datos
Datos
Bi Bi+1 t
¿Reloj?
EMISOR RECEPTOR Reloj
Referencia t
de tensión
2
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 3. Módulos de Comunicación Serie
COMUNICACIÓN SERIE (II)
• Se emplean dos registros de desplazamiento (uno en el emisor y otro
en el receptor) encadenados para la conversión paralelo/serie en la emisión
y 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 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)
* ....
3
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 4. Módulos de Comunicación Serie
TRANSFERENCIA SÍNCRONA
• Dispositivo Maestro: el que genera la señal de reloj, es el que tiene capacidad
de 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
Dato Dato
Maestro Clk Esclavo Maestro Clk Esclavo
Ref. Ref.
Maestro Emitiendo Maestro Recibiendo
4
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 5. Módulos de Comunicación Serie
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 de
parada 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 bit
de 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 el
tiempo de un bit: bit de parada
Datos
Reg. desplazamiento Reg. desplazamiento
Referencia Sincr. Reloj
Reloj
5
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 6. Módulos de Comunicación Serie
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/CK
RC7/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/SDO
RC4/SDI
Interface Síncrono RC3/SCK
SPI (Serial Peripheral Interface) full dúplex RA5/SS
I2C (Inter-Integrated Circuit) semi dúplex
6
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 7. Módulos de Comunicación Serie
Configurable en tres modos de trabajo:
MÓDULO SCI
1.- Asíncrono (full dúplex)
- Recepción y transmisión independientes compartiendo generador
de 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)
7
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 8. Módulos de Comunicación Serie
MÓDULO SCI (II)
• Los pines relacionados con la comunicación no es necesario que sean
configurados 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 estado
TXSTA (0x98) & RCSTA (0x18)
Registro de Relación de Baudios
SPBRG (0x99)
Registro de datos de transmisión:
TXREG (0x19)
Registro de recepción de datos:
RCSTA (0x18)
8
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 9. Módulos de Comunicación Serie
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éctricos
de 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
9
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 10. Módulos de Comunicación Serie
Ejemplo típico: comunicación PIC - PC mediante puerto serie (RS232)
Niveles escritura RS232
“1” -> 5V “1” -> -5V a -15V
“0” -> 0V “0” -> +5V a +15V
RX Driver TX
RS232
TX RX
(MAX232)
GND GND
Niveles lectura RS232
“1” -> -3V a -15V
CONEXIÓN A 3 HILOS “0” -> +3V a +15V
FULL DÚPLEX
10
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 11. Módulos de Comunicación Serie
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
11
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 12. Módulos de Comunicación Serie
Generador de Relación de Baudios (BRG)
• Se emplea para determinar la frecuencia de reloj para los registros de
desplazamiento de los bloques de transmisión y recepción
• Depende del valor X cargado en el registro de generación de la
relación de baudios SPBRG (dirección 0x99) y del estado del bit BRGH
del registro TXSTA
Modo Síncrono (1) ó Asíncrono (0)
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)
12
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 13. Módulos de Comunicación Serie
Generador de Relación de Baudios (II)
• Al ser SPBRG un registro de 8 bits, puede que no sea posible alcanzar de
manera exacta la velocidad de transmisión deseada
• Cálculo 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)
13
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 14. Módulos de Comunicación Serie
Ejemplos con BRGH=0
Ejemplos con BRGH=1
14
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 15. Módulos de Comunicación Serie
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 ritmo
de su generador de relación de baudios (que tendrá un valor similar al del
transmisor) 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 datos
que trata de leer si hay un “uno” o un “cero” en la mitad del periodo de
cada bit (señal estabilizada tras posible cambio)
15
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 16. Módulos de Comunicación 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 recepción
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
16
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 17. Módulos de Comunicación Serie
• O bien tres muestras tomadas con otro criterio también en el centro
de 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
17
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 18. Módulos de Comunicación Serie
Transmisor Asíncrono
Indica TXREG
vacío (TXIF=1) TXREG: buffer del Registro de Desplazamiento
(accesible para lectura/escritura)
Salida de Datos
Módulo SCI activo
Permite entrada
de reloj al registro
de transmisión Indica TSR vacío (TRMT=1)
TSR Diagrama de Bloques
Bit 9 si Datos de 9 bits TSR: Registro de Desplazamiento
(no accesible directamente)
Config. Datos de 9 bits
18
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 19. Módulos de Comunicación Serie
Si TSR vacío y se escribe en TXREG, el dato pasa a TSR y se inicia transmisión
movwf TXREG
DATO
TXREG vacío vacío
TSR vacío DATO
Si TSR lleno y se escribe en TXREG, nuevo dato en TXREG hasta que TSR quede vacío
movwf TXREG
DATO2
TXREG vacío DATO2
TSR DATO1 DATO1
19
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 20. Módulos de Comunicación Serie
TSR vacío cuando se envía bit de STOP, el dato en TXREG pasa a TSR
TXREG DATO2 vacío
TSR vacío (fin transm.DATO1) DATO2
FLAGS indicadores:
•TXIF: (PIR1<4>) TXREG vacío (puede activar interrupción). Este flag
se 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
20
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 21. Módulos de Comunicación Serie
Cronograma del envío de un dato:
Cronograma del envío de dos datos consecutivos:
21
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 22. Módulos de Comunicación Serie
REGISTROS PARA CONFIGURAR LA TRANSMISIÓN:
Configuración de Transmisión Serie Asíncrona
TXREG vacío
Máscara de interrupción si TXREG vacío
Registro RCSTA (0x18)
22
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 23. Módulos de Comunicación Serie
Configuración de Transmisión Serie Asíncrona
Bits que afectan a transmisión
serie asíncrona
Registro TXSTA (0x98)
23
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 24. Módulos de Comunicación Serie
Pasos a dar para realizar una Transmisión serie Asíncrona:
1.- Cargar SPBRG para una velocidad de transmisión dada (baudios) 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 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)
24
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 25. Módulos de Comunicación Serie
Receptor Asíncrono RSR: Registro Desplazamiento
(no accesible directamente)
Habilita Recepción RCSTA<4>
Indicadores
de errores
Entrada Serie
Datos de 9 bits
SCI activo
Diagrama de Bloques
RCREG: doble buffer recepción
RCIF: indica recepción completada (estructura FIFO)
(dato no leido en FIFO)
25
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 26. Módulos de Comunicación Serie
Llegada de un dato y RCREG vacío
RSR Dato1 RSR Vacío
Vacío Vacío
RCREG RCREG
(doble) Vacío (doble) Dato1
Llegada de un segundo dato y RCREG no leído
RSR Dato2 RSR Vacío
Vacío Dato2
RCREG RCREG
(doble) Dato1 (doble) Dato1
26
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 27. Módulos de Comunicación Serie
Llegada de un tercer dato y RCREG doble no leído
RSR Dato3 Error de Overrun: OERR=1 (grave)
Se pierde el Dato3
Dato2
RCREG Bloqueo total de la Recepción
(doble) Dato1 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/s
para 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)
27
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 28. Módulos de Comunicación Serie
Cronograma de recepción de un dato:
Llegada de un segundo dato:
Llegada de un primer dato: bit de STOP Tercer dato
bit de STOP sin haber realizado lectura
(error de Overrun)
Lecturas posteriores
a la llegada del 3er dato
RCREG vacío al principio Reset de Recepción
para volver OERR a 0
28
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 29. Módulos de Comunicación Serie
REGISTROS PARA CONFIGURAR LA RECEPCIÓN:
Dato en RCREG
Configuración de Recepción Serie Asíncrona
Máscara de interrupción Velocidad
si RCREG lleno recepción
SCI asíncrono
ó síncrono
29
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 30. Módulos de Comunicación Serie
Configuración de Recepción Serie Asíncrona Bits que afectan a la Recepción serie Asíncrona
Registro RCSTA (0x18)
30
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 31. Módulos de Comunicación Serie
Pasos a dar para preparar una Recepción serie Asíncrona:
1.- Inicializar el registro SPBRG para una velocidad dada (baudios) de
recepció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
31
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 32. Módulos de Comunicación Serie
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án
definidos 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
32
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 33. Módulos de Comunicación Serie
Detección de “Dirección” en la Recepción (II)
• Este procedimiento se emplearía para una comunicación serie en la que hay
varios 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
TX
EMISOR RX RX RX
Receptor Receptor Receptor
Dirección 1 Dirección 2 Dirección n
• 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
33
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 34. Módulos de Comunicación Serie
Modificación del diagrama de bloques
para PICs con bit ADDEN
Para que ADDEN tenga efecto
se debe tener también RX9=1
34
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 35. Módulos de Comunicación Serie
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
35
MicrocontroladoresPIC ©ATE-Universidad de Oviedo
- 36. Módulos de Comunicación Serie
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 de
dirección 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 continuación (o el
resto de la dirección si es mayor de 1 byte el tamaño)
36
MicrocontroladoresPIC ©ATE-Universidad de Oviedo