SCI Asincrono

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

Transcript of SCI Asincrono

  • 1Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    COMUNICACIN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

  • 2Mdulos de Comunicacin Serie

    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

    EMISOR RECEPTOR

    Datos

    Referenciade tensin

    Reloj?

    t

    t

    Datos

    Reloj

    Bi Bi+1

  • 3Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    COMUNICACIN SERIE (II)

    Se emplean dos registros de desplazamiento (uno en el emisor y otroen el receptor) encadenados para la conversin paralelo/serie en la emisiny 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 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) * ....

  • 4Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    TRANSFERENCIA SNCRONA

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

    Maestro Esclavo

    Dato

    Clk Maestro Esclavo

    Dato

    Clk

    Maestro Emitiendo Maestro Recibiendo

    Ref. Ref.

  • 5Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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 deparada que sirven para sincronizar los relojes del emisor y del receptor

    La lnea de datos inactiva a 1, si se desea enviar un dato se manda un bitde arranque que sita a 0 la lnea durante el tiempo correspondiente a un bit

    Al finalizar el envo de un dato, la lnea se sita a 1 al menos durante eltiempo de un bit: bit de parada

    Reg. desplazamiento Reg. desplazamiento

    Reloj RelojSincr.

    Datos

    Referencia

  • 6Mdulos de Comunicacin Serie

    MicrocontroladoresPIC 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: RC6/TX/CKRC7/RX/DT

    Modo Asncrono (full dplex)Modo Sncrono (semi dplex)

    Mdulo SSP (Synchronous Serial Port)

    Cuatro pines asignados para comunicacin: RC5/SDORC4/SDI

    Interface Sncrono RC3/SCKSPI (Serial Peripheral Interface) full dplex RA5/SSI2C (Inter-Integrated Circuit) semi dplex

  • 7Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Configurable en tres modos de trabajo:

    1.- Asncrono (full dplex)

    - Recepcin y transmisin independientes compartiendo generadorde 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)

    MDULO SCI

  • 8Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    MDULO SCI (II)

    Los pines relacionados con la comunicacin no es necesario que seanconfigurados 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 estadoTXSTA (0x98) & RCSTA (0x18)

    Registro de Relacin de BaudiosSPBRG (0x99)

    Registro de datos de transmisin:TXREG (0x19)

    Registro de recepcin de datos:RCSTA (0x18)

  • 9Mdulos de Comunicacin Serie

    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 elctricosde 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

  • 10

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

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

    DriverRS232

    (MAX232)

    TX

    RX

    RX

    TX

    1 -> 5V0 -> 0V

    1 -> -3V a -15V0 -> +3V a +15V

    GND GND

    Niveles lectura RS232

    1 -> -5V a -15V0 -> +5V a +15V

    Niveles escritura RS232

    CONEXIN A 3 HILOSFULL DPLEX

  • 11

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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

  • 12

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Generador de Relacin de Baudios (BRG)

    Se emplea para determinar la frecuencia de reloj para los registros dedesplazamiento de los bloques de transmisin y recepcin

    Depende del valor X cargado en el registro de generacin de larelacin de baudios SPBRG (direccin 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 Asncrono ( en modo sncrono BRGH se ignora y es otra la frmula)

    Modo Sncrono (1) Asncrono (0)

  • 13

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Generador de Relacin de Baudios (II)

    Al ser SPBRG un registro de 8 bits, puede que no sea posible alcanzar demanera exacta la velocidad de transmisin deseada

    Clculo 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

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    E

    j

    e

    m

    p

    l

    o

    s

    c

    o

    n

    B

    R

    G

    H

    =

    0

    E

    j

    e

    m

    p

    l

    o

    s

    c

    o

    n

    B

    R

    G

    H

    =

    1

  • 15

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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 ritmode su generador de relacin de baudios (que tendr un valor similar al deltransmisor) 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 datosque trata de leer si hay un uno o un cero en la mitad del periodo decada bit (seal estabilizada tras posible cambio)

  • 16

    Mdulos de Comunicacin 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 recepcinsi 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

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

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

  • 18

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Transmisor Asncrono

    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 transmisinTSR

    Indica TXREGvaco (TXIF=1)

    Indica TSR vaco (TRMT=1)

    Config. Datos de 9 bits

    Bit 9 si Datos de 9 bits

    Mdulo SCI activo

  • 19

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    TXREG

    TSR

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

    DATO

    vaco

    vaco

    vaco

    DATO

    movwf TXREG

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

    TXREG

    TSR

    DATO2

    vaco

    DATO1

    DATO2

    DATO1

    movwf TXREG

  • 20

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

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

    TXREG

    TSR

    DATO2

    vaco (fin transm.DATO1)

    vaco

    DATO2

    FLAGS indicadores:

    TXIF: (PIR1) TXREG vaco (puede activar interrupcin). Este flagse pone a cero automticamente (no por software) si TXREG ocupado.El flag est activo si lo est la transmisin (TXEN=1)

    TRMT: (TXSTA) TSR vaco

  • 21

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Cronograma del envo de un dato:

    Cronograma del envo de dos datos consecutivos:

  • 22

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Registro RCSTA (0x18)

    C

    o

    n

    f

    i

    g

    u

    r

    a

    c

    i

    n

    d

    e

    T

    r

    a

    n

    s

    m

    i

    s

    i

    n

    S

    e

    r

    i

    e

    A

    s

    n

    c

    r

    o

    n

    a

    REGISTROS PARA CONFIGURAR LA TRANSMISIN:

    TXREG vaco

    Mscara de interrupcin si TXREG vaco

  • 23

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Registro TXSTA (0x98)

    Bits que afectan a transmisin serie asncrona

    C

    o

    n

    f

    i

    g

    u

    r

    a

    c

    i

    n

    d

    e

    T

    r

    a

    n

    s

    m

    i

    s

    i

    n

    S

    e

    r

    i

    e

    A

    s

    n

    c

    r

    o

    n

    a

  • 24

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Pasos a dar para realizar una Transmisin serie Asncrona:

    1.- Cargar SPBRG para una velocidad de transmisin dada (baudios) yconfigurar 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)

  • 25

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Receptor Asncrono

    Entrada Serie

    Habilita Recepcin RCSTA

    Diagrama de Bloques

    RSR: Registro Desplazamiento(no accesible directamente)

    RCREG: doble buffer recepcin(estructura FIFO)RCIF: indica recepcin completada

    (dato no leido en FIFO)

    Datos de 9 bitsSCI activo

    Indicadoresde errores

  • 26

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Llegada de un dato y RCREG vaco

    Dato1RSR

    Vaco

    VacoRCREG(doble)

    VacoRSR

    Vaco

    Dato1RCREG(doble)

    Llegada de un segundo dato y RCREG no ledo

    Dato2RSR

    Vaco

    Dato1RCREG(doble)

    VacoRSR

    Dato2

    Dato1RCREG(doble)

  • 27

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Llegada de un tercer dato y RCREG doble no ledo

    Dato3RSR

    Dato2

    Dato1RCREG(doble)

    Error de Overrun: OERR=1 (grave)

    Se pierde el Dato3

    Bloqueo total de la Recepcin

    Se debe resetear el sistema de recepcin:CREN=0 y luego CREN=1

    FLAGS indicadores:

    RCIF: (PIR1) (puede activar interrupcin). Indica dato/s disponible/spara lectura en RCREG. Se pone a cero automticamente (no por software) cuando RCREG est vaco (el doble buffer debe estarlo).

    OERR(=RCSTA) Error de Overrun: hay que resetear el receptor para volver a 0

    FERR(=RCSTA) Error de Trama: el bit de STOP debera ser 0 pero se lee 1(tambin presenta un doble buffer FIFO)

  • 28

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Cronograma de recepcin de un dato:

    RCREG vaco 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 Recepcinpara volver OERR a 0

    Lecturas posterioresa la llegada del 3er dato

  • 29

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    C

    o

    n

    f

    i

    g

    u

    r

    a

    c

    i

    n

    d

    e

    R

    e

    c

    e

    p

    c

    i

    n

    S

    e

    r

    i

    e

    A

    s

    n

    c

    r

    o

    n

    a

    REGISTROS PARA CONFIGURAR LA RECEPCIN:

    Dato en RCREG

    Mscara de interrupcin si RCREG lleno

    SCI asncrono sncrono

    Velocidadrecepcin

  • 30

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Registro RCSTA (0x18)

    C

    o

    n

    f

    i

    g

    u

    r

    a

    c

    i

    n

    d

    e

    R

    e

    c

    e

    p

    c

    i

    n

    S

    e

    r

    i

    e

    A

    s

    n

    c

    r

    o

    n

    a

    Bits que afectan a la Recepcin serie Asncrona

  • 31

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Pasos a dar para preparar una Recepcin serie Asncrona:

    1.- Inicializar el registro SPBRG para una velocidad dada (baudios) derecepcin 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

  • 32

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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 estndefinidos 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

  • 33

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Deteccin de Direccin en la Recepcin (II)

    Este procedimiento se empleara para una comunicacin serie en la que hayvarios 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 Dato

    EMISOR

    Receptor Direccin 1

    Receptor Direccin 2

    Receptor Direccin 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

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    Modificacin del diagrama de bloquespara PICs con bit ADDEN

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

  • 35

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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

  • 36

    Mdulos de Comunicacin Serie

    MicrocontroladoresPIC ATE-Universidad de Oviedo

    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 dedireccin 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 continuacin (o elresto de la direccin si es mayor de 1 byte el tamao)