37
1 Comunicación Serie: Módulo SSP_SPI Microcontroladores PIC ©ATE-Universidad de Oviedo COMUNICACIÓN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC MÓDULO SSP (SYNCHRONOUS SERIAL PORT) Fernando Nuño García MCU Conversores A/D EEPROM serie LCD con SPI Registros despl.

Comunicacion Serie Pic

Embed Size (px)

Citation preview

  • 1Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    COMUNICACIN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC

    MDULO SSP (SYNCHRONOUS SERIAL PORT)

    Fernando Nuo Garca

    MCU

    Conversores A/D

    EEPROM serie

    LCD con SPI

    Registros despl.

  • 2Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    MDULO SSP (SYNCHRONOUS SERIAL PORT)

    Puerto Serie Sncrono: Interface de Comunicacin Serie Sncrona

    Pensado para comunicacin con otros Microcontroladores o Perifricos:

    EEPROM serie (almacenamiento de datos no voltiles)Registros de Desplazamiento (expansin de entradas y/o salidas)Drivers de Displays (reduccin de conexiones)Conversores A/D (digitalizacin externa de seales)....

    Modos de Operacin posibles del mdulo SSP:

    - SPI (Serial Peripheral Interface): Interface de Perifricos Serie SPI: Es una Marca Registrada de Motorola Corporation

    - I2C (Inter-Integrated Circuit): Entre Circuitos Integrados I2C: Es una Marca Registrada de Philips

  • 3Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    1.- Interface SPI en el mdulo SSP Permite la transmisin y recepcin sncrona simultnea de datos de 8 bits

    Para la comunicacin debe existir un dispositivo Maestro (genera la seal de reloj)y uno varios esclavos (reciben la seal de reloj)

    En los microcontroladores PIC hay 3 pines asociados con la comunicacin SPI:

    Salida Serie de Datos (SDO) Serial Data Output -> RC5Entrada Serie de Datos (SDI) Serial Data Input -> RC4Reloj de comunicacin Serie (SCK) Serial Clock -> RC3

    De manera adicional, hay un 4 pin que se puede utilizar cuando el microcontrolador se configura como dispositivo Esclavo:

    Seleccin de Esclavo (SS) Slave Select -> RA5

    La inicializacin del Interface SPI se realiza mediante la configuracin de los bitsde control SSPCON y SSPSTAT

  • 4Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Diagrama de Bloques del Mdulo SSP en modo SPI

    Entrada serie de bits

    Salida serie

    Reloj de Salida(Maestro)

    Registro de Desplazamientode transmisin/recepcin

    (no accesible)

    Seleccin Esclavo (opcional si es Esclavo)

    Reloj de Entrada(Esclavo)

    Registro de Buffer(lectura/escritura)

  • 5Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7

    Reloj

    SDO

    SDOSDI

    SDI

    MAESTRO SPI ESCLAVO SPI

    SCK SCK

    a7 b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6

    Reloj

    SDO

    SDOSDI

    SDI

    MAESTRO SPI ESCLAVO SPI

    SCK SCK

    Flanco 1 en reloj SCK

    Situacin Inicial

    ENVO/RECEPCIN SIMULTNEA

  • 6Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7

    Reloj

    SDO

    SDOSDI

    SDI

    MAESTRO SPI ESCLAVO SPI

    SCK SCK

    a7 b0 b1 b3 b4 b7a0 a1 a2 a3 a4 a5 a6

    Reloj

    SDO

    SDOSDI

    SDI

    MAESTRO SPI ESCLAVO SPI

    SCK SCK

    b6b5

    Flanco 8 en SCK

    b2

    Situacin Inicial

    Situacin FinalIntercambiados los 8 bits de datos

  • 7Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    SSPSR (registro de desplazamiento) enva y recoge los bits simultneamente

    SSPBUF tiene doble funcin: para cargar el registro SSPSR para envo de datosy para recoger los datos recibidos en SSPSR

    b0 b1 b2 b3 b4 b5 b6 b7

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSR

    1.- Carga de SSPSR a travs de SSPBUF

    a7 b0 b1 b2 b3a4 a5 a6

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSR

    2.- SSPSR enviando/recibiendo

    SSPBUFb0 b1 b2 b3 b4 b5 b6 b7

    SSPSR

    a7a0 a1 a2 a3 a4 a5 a6

    3.- Completada recepcin/envo

    SSPSR

    a7a0 a1 a2 a3 a4 a5 a6

    a7a0 a1 a2 a3 a4 a5 a6

    SSPBUF

    4.- SSPSR carga SSPBUF con recepcin

    SSPIF=1

    SSPIF=0 por software

  • 8Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    * SSPIF = PIR1 (Completada transmisin) Lectura/escritura

    Indica que se ha completado un envo/recepcin en SSPSRSe debe poner a 0 por software, puede generar interrupcin

    * BF = SSPSTAT (Buffer de recepcin lleno) Slo lectura

    Se pone a 1 cuando se ha completado la recepcin de un datose pone a 0 por hardware cuando se lee el registro SSPBUFSe emplear normalmente nicamente en modo de recepcin

    * WCOL = SSPCON (Colisin de Escritura) Lectura/escritura

    Indica que se ha intentado escribir en SSPBUF mientras se est transmitiendo un dato previo. Si se da tal situacin, se debe poner a 0 por software

    * SSPOV = SSPCON (Desbordamiento en Recepcin) Lectura/escritura

    Indica que se ha recibido un byte nuevo mientras SSPBUF contiene un dato recibido anteriormente no leido. El nuevo dato se pierde y yano se actualiza SSPBUF. Se pondr a 0 por software

    F

    l

    a

    g

    s

    I

    n

    d

    i

    c

    a

    d

    o

    r

    e

    s

    e

    n

    m

    o

    d

    o

    S

    P

    I

  • 9Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    El mdulo SPI puede utilizarse (independientemente de modo Maestro o Esclavo):

    a) Para envo y recepcin simultnea (SDI y SDO)

    SSPBUF debe leerse antes de cargarlo con el nuevo dato a enviar

    b) Slo para enviar datos (SDO)

    SSPBUF se puede cargar con un nuevo dato nicamente despus de habersecompletado el envo del anterior dato

    Si se pretende cargar un dato en SSPBUF durante una transmisin se produceuna colisin y dicha carga ser ignorada

    c) Slo para recibir datos (SDI)

    Slo en este caso SSPBUF se utilizara como buffer intermedio de recepcin,se puede iniciar la recepcin de un nuevo dato antes de leer el dato que se acaba de recibir

  • 10

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    b0 b1 b2 b3 b4 b5 b6 b7

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSRSDI SDO

    SSPSR

    a7a0 a1 a2 a3 a4 a5 a6

    a7a0 a1 a2 a3 a4 a5 a6

    SSPBUF

    SDI SDO

    a) Para envo y recepcin simultnea

    Envo de un dato

    b) Slo para enviar datos

    b0 b1 b2 b3 b4 b5 b6 b7

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSRSDO a7 b0 b1 b2 b3a4 a5 a6

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSRSDO

    Intento de carga de Dato2 en SSPBUF durante envo COLISIN

    WCOL=1

    (1)(2)

    Antes de cargar un nuevo envodebemos leer recepcin

    Recepcin dato

    Carga de un dato

  • 11

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    c) Slo para recibir datos

    b0 b1 b2 b3 b4 b5 b6 b7

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPBUF

    SSPSR

    Se completa la recepcin de un dato (BF=1)

    Se lee el dato recibido (BF=0)

    No se escribe nadaen SSPBUF (slo recibimos)y se inicia una nueva recepcin

    SDISSPBUF

    a7 b0 b1 b2 b3a4 a5 a6

    b0 b1 b2 b3 b4 b5 b6 b7

    SSPSRSDI

    Si antes de leer el dato anterior se completa la recepcin de un nuevo dato, se perdera el dato previamente recibido, se da error de OVERFLOW (SSPOV=1).

    Este error slo es posible si el dispositivo es ESCLAVO

    Un microcontrolador MAESTRO inicia una nueva transferenciacargando el dato en SSPBUF

  • 12

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    ESPECIFICACIN DEL MODO SPI EN LA INICIALIZACIN

    * Modo de funcionamiento: Maestro (SCK salida) o Esclavo (SCK entrada)

    * Polaridad del Reloj: Estado Inactivo del Reloj (SCK) a 1 a 0

    * Flancos activos del Reloj: Salida de bits en flancos de subida o bajada en SCK

    * Muestreo bits de datos: Muestreo de entrada en el centro o al final del bit

    * Frecuencia de Reloj: SLO SI ES MAESTRO, frecuencia en salida SCK

    * Modo de Seleccin: SLO SI ES ESCLAVO

    - Control externo de SDI y SDO con entrada SS- Sin control externo con pin SS

  • 13

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    El dispositivo Maestro inicia la transferencia enviando la seal de reloj SCK, los datos salen en los flancos programados y se capturan las entradas en el

    momento indicado con el bit SMP si es Maestro.

    Los dos dispositivos deben ser programados con la mismaPOLARIDAD DE RELOJ para que reciban y emitan a la vez

    Ejemplo de Conexin

  • 14

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    HABILITACIN DE LOS PINES DE ENTRADA/SALIDA de SSP

    Para habilitar el mdulo SSP, es necesario que el bit SSPEN se encuentre a 1. Sise desea resetear el mdulo SSP, se debe poner a 0 este bit y luego volverlo a 1

    Para que la funcionalidad de los pines SDI, SDO, SCK y /SS sea la determinada porlos bits de configuracin, es necesario adems que los bits de direccin de datos(en TRISA y en TRISC) tengan la direccin adecuada:

    SDI (RC4) debe tener TRISC = 1 para ser entrada de datos

    SDO (RC5) debe tener TRISC = 0 para que sea salida de datos

    SCK (RC3)debe tener TRISC = 0 si el microcontrolador es MAESTROy TRSC = 1 si se define como ESCLAVO

    /SS (RA5) debe ser TRISA = 1 si es ESCLAVO y tiene control externo

    Cualquier funcin no deseada en el puerto serie puede ser omitida si en elregistro de direccin de datos (TRIS) se configura el valor opuesto

    P.ej.: Si en modo Maestro slo se van a enviar datos, SDI puede usarse comouna salida de propsito general del microcontrolador cargando TRISC=0

  • 15

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    B

    i

    t

    s

    A

    s

    o

    c

    i

    a

    d

    o

    s

    c

    o

    n

    e

    l

    m

    o

    d

    o

    S

    P

    I

    Registro SSPCON (0x14)

  • 16

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Registro SSPCON (0x14)

    B

    i

    t

    s

    A

    s

    o

    c

    i

    a

    d

    o

    s

    c

    o

    n

    e

    l

    m

    o

    d

    o

    S

    P

    I

    Registro SSPCON (0x14)

  • 17

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    B

    i

    t

    s

    A

    s

    o

    c

    i

    a

    d

    o

    s

    c

    o

    n

    e

    l

    m

    o

    d

    o

    S

    P

    I

    Registro SSPSTAT (0x94)

  • 18

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Registros y bits Asociados con el Modo SPI

  • 19

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Funcionamiento como MAESTRO

    El Maestro puede iniciar la transferencia en cualquier momento puesto quecontrola la lnea SCK. El protocolo software determinar cuando el Esclavo esten condiciones de enviar datos.

    En modo Maestro, la transmisin/recepcin se inicia tan pronto como se escribeen el registro SSPBUF. Si se desea slo recibir, la lnea SDO puede desactivarsedefinindola como entrada, los datos presentes en la lnea SDI irn entrando alregistro SSPSR a la velocidad marcada por el reloj de transferencia

    La velocidad de transferencia del modo SPI es programable entre los valores:

    Fosc/4Fosc/16Fosc/64Frecuencia de Salida de TMR2/2

    siendo por tanto la mxima velocidad de trasnferencia: 5Mbps (con Fosc=20MHz)

    La polaridad del reloj y los flancos activos se configuran con los bits CKP y CKE

  • 20

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Escrituraen SSPBUF CRONOGRAMA SPI MAESTRO

    Muestreo caso SMP=1

    Muestreo caso SMP=0

    BYTE COMPLETOSSPIF=1

  • 21

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Funcionamiento como ESCLAVOsin Seleccin Externa

    El Esclavo el dato es transmitido/recibido cuando aparecen los pulsos en laentrada SCK

    Cuando el ltimo bit termina de ser muestreado, el flag SSPIF se pone a uno

    La polaridad del reloj y los flancos activos se configuran con los bits CKP y CKE

    El muestreo de los bits de datos se realiza siempre en la mitad de un bit en el modo Esclavo (SMP=0 siempre en modo Esclavo)

    La seal de reloj debe cumplir las especificaciones mnimas de tiempos mnimosen los estados alto y bajo

    En modo de bajo consumo (SLEEP) el Esclavo puede transmitir y recibir datospuesto que el registro de desplazamiento es asncrono con el oscilador. Al completar una transferencia de un byte, el dispositivo podra despertarse sise encontraba dormido

  • 22

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    CRONOGRAMA SPI ESCLAVO SIN SELECCIN EXTERNA

    CKE=0F.subida

    F.bajada

    Muestreo siempre con SMP=0(en mitad del bit)con el flanco opuestoal de salida de los datos

    Esperando a que el Maestro genere flancos

    BYTE COMPLETOSSPIF=1

  • 23

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Funcionamiento como ESCLAVOcon Seleccin Externa

    El pin /SS (nivel activo bajo) permite la conexin de varios esclavos con un Maestro, habilitando en cada instante nicamente la transferencia con un Esclavo

    El dispositivo Maestro debe seleccionar para la transferencia nicamente uno de los Esclavos mediante la activacin de la seal /SS (a cero) del elegido, permaneciendoel resto en estado alto

    Se debe configurar el modo SSP Esclavo con SSPCON = 0100 y adems definirel pin /SS/RA5 como entrada con TRISA=1

    Cuando /SS est a 0, se permite transmisin/recepcin y el pin SDO se maneja internamente por parte del registro dedesplazamiento

    Si el pin /SS est a 1, el pin SDO se sita en alta impedancia respecto al registrode desplazamiento (podran necesitarse resistencias de polarizacin).

    Adems, con /SS a 1 (Vdd) el mdulo SPI permanecer reseteado igual que si SSPEN=0 y el contador de bits entrantes permanecer a cero

  • 24

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    CRONOGRAMA SPI ESCLAVO CON SELECCIN EXTERNA

    Muestreo siempre con SMP=0(en mitad del bit)con el flanco opuestoal de salida de los datos

    Necesaria seal /SS a 0

  • 25

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Interface SPI: Posibilidades de conexin

    A).- Un Maestro y un Esclavo con conexin a 3 hilos,

    MAESTRO ESCLAVO

    SDO

    SDI

    SCK

    SDI

    SDO

    SCK

    Transmisin/recepcin simultnea

    Transmisin/recepcin pero no simultneas

    B).- Un Maestro y un Esclavo con conexin a 2 hilos,

    MAESTRO ESCLAVO

    SDO

    SDI

    SCK

    SDI

    SDO

    SCK

    2 hilos

    3 hilos

    Conflicto en las Salidas !

  • 26

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    B).- Un Maestro y un Esclavo con conexin a 2 hilos

    MAESTRO ESCLAVO

    SDO

    SDI

    SCK

    SDI

    SDO

    SCK

    2 hilos

    MAESTRO(TRISC=0)

    ESCLAVO(TRISC=1)

    SDO

    SDI

    SCK

    SDI

    SCK

    2 hilos

    Estado1: Maestro emite (y recibe lo mismo que est emitiendo), Esclavo recibe

    Slo puede haber una salida activa, el receptor anula su salida de datos SDOpor software mediante el registro de direccin de datos

    (TRISC=1 define SDO como entrada)

    Conflicto en las Salidas !

  • 27

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    B).- Un Maestro y un Esclavo con conexin a 2 hilos,

    MAESTRO ESCLAVO

    SDO

    SDI

    SCK

    SDI

    SDO

    SCK

    Slo puede haber una salida activa, el receptor anula su salida de datos SDOpor software mediante el registro de direccin de datos

    (TRISC=1 define SDO como entrada)

    2 hilos

    MAESTRO(TRISC=1)

    ESCLAVO(TRISC=0)

    SDI

    SCK

    SDI

    SDO

    SCK

    2 hilos

    Estado 2: Maestro recibe, Esclavo emite (y recibe lo mismo que est emitiendo)

    Conflicto en las Salidas !

  • 28

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    MAESTRO ESCLAVO1ESCLAVO

    2ESCLAVO

    n

    SDO SDI SDI SDI

    ......

    SCK SCK SCK SCK

    C).- Un Maestro emitiendo y varios Esclavos recibiendo, conexin a 2 hilos

    No sera necesario el control de la seleccin del esclavo, todos tendran la entrada de datos activa

    SDO SDO SDOSDI

  • 29

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    D).- Un Maestro y varios Esclavos con posibilidad de emisin, 3 h. y lneas de seleccin

    MAESTRO ESCLAVO1ESCLAVO

    2ESCLAVO

    n

    SDO SDI SDI SDI

    ......

    SCK SCK SCK SCK

    SDO SDO SDOSDI /SS /SS /SS

    Circuito deSeleccin de

    Esclavo(directo

    o decodif.)

    .

    .

    .

    P

    O

    R

    T

    ?

    Slo un Esclavo Seleccionadoque maneja la lnea SDO

    y que recibe por SDI(/SS=0, resto /SS=1)

  • 30

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Utilidades de SPI: Expansin de Puertos de Entrada con Registro de Desplazamiento

    RC5/SDO

    RC4/SDI

    RC3/SCK

    RD7

    LOAD

    CLOCK

    b7 b6b5b4b3b2b1 b0

    Salida serie

    Entrada serieREGISTRO DEDESPLAZAMIENTO

    74HC165

    MDULO SPI

    Microcontrolador

    1.- Pulso en RD7 para Lectura del Puerto (carga paralelo de 74HC165)

    2.- Aparicin de flancos en SCK por escritura interna en SSPBUFse debe configurar CKP=1, CKE=1

    3.- Tras 8 flancos de subida, entra el dato completo

    Datos Puerto de entrada

    SECUENCIA

  • 31

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    74HC165: Registro de Desplazamiento

    Entrada Paralelo de datos

    Activacincarga paralelo

    Entrada serie

    Salida serieReloj

    Habilitacin

  • 32

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    b7 b6 b5 b4 b3 b2 b1 b0

    RC5/SDO

    RC4/SDI

    RC3/SCK

    RD7

    LOAD

    CLOCK

    b7 b6b5b4b3b2 b1 b0

    Salida serie

    Entrada serieREGISTRO DEDESPLAZAMIENTO

    74HC165

    MODO SPI

    Microcontrolador

    RD7

    SCK (CKP=1, CKE=1)

    SDI

    Escritura en SSPBUF

    b0Dato completo en SSPBUF

    Cronograma del proceso de lectura del puerto adicional

    Desde el MCU PIC:

    1.- Bajar y subir RD72.- Poner SSPIF=03.- Escribir en SSPBUF cualquier cosa4.- Detectar SSPIF=15.- Recoger dato en SSPBUF

  • 33

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Expansin para Puertos de Entrada de mayor tamao (p.e. 3 bytes)

    74HC165 74HC165 74HC165Sal Sal SalEnt Ent Ent

    RD7

    SDI

    SCK

    PIC

    BYTE 1 BYTE 2 BYTE 3

    Procedimiento para leer los 3 bytes:

    1.- Pulso bajo en RD7 para leer simultneamente los 3 bytes2.- Borrar SSPIF y escribir en SSPBUF -> se generan 8 flancos y entra BYTE 1pasando BYTE 2 a la posicin de BYTE 1 y BYTE 3 a la de BYTE 23.- Se recoge BYTE 1 en SSPBUF y se almacena4.- Borrar SSPIF y escribir en SSPBUF -> 8 flancos en SCK y entra BYTE 2...5.- Se recoge BYTE 2 en SSPBUF y se almacena6.- Borrar SSPIF y escribir en SSPBUF -> 8 flancos en SCK y entra BYTE 3...7.- Se recoge BYTE 3 en SSPBUF y se almacena

    Carga Carga Carga

    3 Registros de Desplazamiento Encadenados

  • 34

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Utilidades de SPI: Expansin de Puertos de Salida con Registro de Desplazamiento

    RC5/SDO

    RC4/SDI

    RC3/SCK

    RD7

    MDULO SPI

    Microcontrolador

    b6b5b4b3b2b1b0

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    Registro 74HC595

    b7

    SECUENCIA A SEGUIR

    1.- Escribir el dato a sacar en SSPBUF

    2.- Aparecen 8 flancos en SCK que cargan el dato en los biestables D internos del 74HC595

    3.- Generar flanco de subida en RD7para que salga el dato al exterior 4.- Dato retenido y disponible en la salida

    Relojent. serie

    Relojsal. paralelo

    Ent.serie

  • 35

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    RC5/SDO

    RC4/SDI

    RC3/SCK

    RD7

    MDULO SPI

    Microcontrolador

    b6b5b4b3b2b1b0

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    Registro 74HC595

    b7

    Cronograma del proceso de escritura en el puerto adicional

    b7 b6 b2b5 b4 b3 b1 b0

    SCK (CKP=1, CKE=0)

    SDO

    RD7

    Escritura en SSPBUF(antes pondremos

    SSPIF=0)

    Dato completo en Registro(nos enteramos por SSPIF=1)

    Flanco de subidapara salida al exterior

    Los bits salen por SDOen los flancos de bajada

    Los bits entran alregistro en los flancos de subida

    (ya estables los bi)

  • 36

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    Desde el punto de vista del MCU PIC:

    1.- Poner SSPIF=02.- Escribir en SSPBUF el dato a sacar3.- Detectar SSPIF=14.- Bajar y subir RD7 (flanco de subida)

    RC5/SDO

    RC4/SDI

    RC3/SCK

    RD7

    MDULO SPI

    Microcontrolador

    b6b5b4b3b2b1b0

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    Q

    QSET

    CLR

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    D

    QQ

    S

    E

    T

    C

    L

    R

    Registro 74HC595

    b7

    Qu hacer para escribir en el puerto adicional

  • 37

    Comunicacin Serie: Mdulo SSP_SPI

    Microcontroladores PIC ATE-Universidad de Oviedo

    74HC595 74HC595 74HC595Sal SalEnt Ent Ent

    RD7

    SDO

    SCK

    PIC

    BYTE 1 BYTE 2 BYTE 3

    R.par.

    3 Registros de Desplazamiento Encadenados

    Expansin para Puertos de Salida de mayor tamao (p.e. 3 bytes)

    R.par. R.par.

    Procedimiento para escribir los 3 bytes de salida:

    1.- Borrar SSPIF y escribir en SSPBUF el BYTE 3, se generan 8 flancos y entra BYTE 3 en el registro interno de la izquierda (lo detectamos por SSPIF=1)2.- Se borra SSPIF y se escribe BYTE 2 en SSPBUF, se generan otros 8 flancosy pasa BYTE 3 al registro central, entrando BYTE 2 en el de la izquierda4.- Borrar SSPIF y escribir en SSPBUF el BYTE 1, otros 8 flancos en SCK y entra BYTE 3 a la derecha, queda BYTE 2 en el centro y BYTE 1 a la izquierda5.- Pulso bajo en RD7 para generar un flanco de subida que haga que los bytesalmacenados internamente en los registros salgan al exterior todos a la vez