Académique Documents
Professionnel Documents
Culture Documents
MicrocontroladoresPIC
ATE-Universidad de Oviedo
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
MicrocontroladoresPIC
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
TRANSFERENCIA ASNCRONA Se emplean relojes de igual frecuencia (se acuerda y configura la velocidad
de transmisin) pero es necesario que estn en fase (sincronizados)
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
Datos
Referencia
ATE-Universidad de Oviedo
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
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
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
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
ATE-Universidad de Oviedo
10
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
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
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
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
MicrocontroladoresPIC
ATE-Universidad de Oviedo
14
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
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
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
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
Diagrama de Bloques
TSR: Registro de Desplazamiento (no accesible directamente)
MicrocontroladoresPIC
ATE-Universidad de Oviedo
18
Si TSR vaco y se escribe en TXREG, el dato pasa a TSR y se inicia transmisin DATO
TXREG
TSR
vaco
DATO
Si TSR lleno y se escribe en TXREG, nuevo dato en TXREG hasta que TSR quede vaco DATO2
TXREG
TSR
MicrocontroladoresPIC
DATO1
ATE-Universidad de Oviedo
DATO1
19
TSR vaco cuando se enva bit de STOP, el dato en TXREG pasa a TSR
TXREG
DATO2
vaco
TSR
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
MicrocontroladoresPIC
ATE-Universidad de Oviedo
21
MicrocontroladoresPIC
ATE-Universidad de Oviedo
22
MicrocontroladoresPIC
ATE-Universidad de Oviedo
23
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
Receptor Asncrono
Habilita Recepcin RCSTA<4>
Diagrama de Bloques
RCIF: indica recepcin completada (dato no leido en FIFO)
MicrocontroladoresPIC
ATE-Universidad de Oviedo
25
RSR
RSR
RCREG (doble)
RCREG (doble)
RSR
RSR
RCREG (doble)
RCREG (doble)
MicrocontroladoresPIC
ATE-Universidad de Oviedo
26
RSR
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
MicrocontroladoresPIC
ATE-Universidad de Oviedo
Velocidad recepcin
MicrocontroladoresPIC
ATE-Universidad de Oviedo
29
MicrocontroladoresPIC
ATE-Universidad de Oviedo
30
31
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
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
MicrocontroladoresPIC
ATE-Universidad de Oviedo
34
MicrocontroladoresPIC
ATE-Universidad de Oviedo
35
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