ssp spi breve

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.

Upload: alfredo-peralta-abril

Post on 04-Jul-2015

256 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Ssp Spi Breve

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.

Page 2: Ssp Spi Breve

2

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

MÓDULO SSP (SYNCHRONOUS SERIAL PORT)

• Puerto Serie Síncrono: Interface de Comunicación Serie Síncrona

• Pensado para comunicación con otros Microcontroladores o Periféricos:

EEPROM serie (almacenamiento de datos no volátiles)Registros de Desplazamiento (expansión de entradas y/o salidas)Drivers de Displays (reducción de conexiones)Conversores A/D (digitalización externa de señales)....

• Modos de Operación posibles del módulo SSP:

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

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

Page 3: Ssp Spi Breve

3

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

1.- Interface SPI en el módulo SSP• Permite la transmisión y recepción síncrona simultánea de datos de 8 bits

• Para la comunicación debe existir un dispositivo Maestro (genera la señal de reloj)y uno ó varios esclavos (reciben la señal de reloj)

• En los microcontroladores PIC hay 3 pines asociados con la comunicación SPI:

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

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

Selección de Esclavo (SS) Slave Select -> RA5

• La inicialización del Interface SPI se realiza mediante la configuración de los bitsde control SSPCON<5:0> y SSPSTAT<7:6>

Page 4: Ssp Spi Breve

4

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Diagrama de Bloques del Módulo SSP en modo SPI

Entrada serie de bits

Salida serie

Reloj de Salida(Maestro)

Registro de Desplazamientode transmisión/recepción

(no accesible)

Selección Esclavo (opcional si es Esclavo)

Reloj de Entrada(Esclavo)

Registro de Buffer(lectura/escritura)

Page 5: Ssp Spi Breve

5

Comunicación Serie: Módulo 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

Situación Inicial

ENVÍO/RECEPCIÓN SIMULTÁNEA

Page 6: Ssp Spi Breve

6

Comunicación Serie: Módulo 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

Situación Inicial

Situación FinalIntercambiados los 8 bits de datos

Page 7: Ssp Spi Breve

7

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

• SSPSR (registro de desplazamiento) envía y recoge los bits simultáneamente

• SSPBUF tiene doble función: para “cargar” el registro SSPSR para envío 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 través 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 recepción/envío

SSPSR

a7a0 a1 a2 a3 a4 a5 a6

a7a0 a1 a2 a3 a4 a5 a6

SSPBUF

4.- SSPSR carga SSPBUF con recepción

SSPIF=1

SSPIF=0 por software

Page 8: Ssp Spi Breve

8

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

* SSPIF = PIR1<3> (Completada transmisión) Lectura/escritura

Indica que se ha completado un envío/recepción en SSPSRSe debe poner a 0 por software, puede generar interrupción

* BF = SSPSTAT<0> (Buffer de recepción lleno) Sólo lectura

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

* WCOL = SSPCON<7> (Colisión de Escritura) Lectura/escritura

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

* SSPOV = SSPCON<6> (Desbordamiento en Recepción) 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

Flag

s In

dica

dore

s en

mod

o SP

I

Page 9: Ssp Spi Breve

9

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

El módulo SPI puede utilizarse (independientemente de modo Maestro o Esclavo):

a) Para envío y recepción simultánea (SDI y SDO)

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

b) Sólo para enviar datos (SDO)

SSPBUF se puede cargar con un nuevo dato únicamente después de habersecompletado el envío del anterior dato

Si se pretende cargar un dato en SSPBUF durante una transmisión se produceuna colisión y dicha carga será ignorada

c) Sólo para recibir datos (SDI)

Sólo en este caso SSPBUF se utilizaría como buffer intermedio de recepción,se puede iniciar la recepción de un nuevo dato antes de leer el dato que se acaba de recibir

Page 10: Ssp Spi Breve

10

Comunicación Serie: Módulo 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 envío y recepción simultánea

Envío de un dato

b) Sólo 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 envío COLISIÓN

WCOL=1

(1)(2)

Antes de cargar un nuevo envíodebemos leer recepción

Recepción dato

Carga de un dato

Page 11: Ssp Spi Breve

11

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

c) Sólo para recibir datos

b0 b1 b2 b3 b4 b5 b6 b7

b0 b1 b2 b3 b4 b5 b6 b7

SSPBUF

SSPSR

Se completa la recepción de un dato (BF=1)

Se lee el dato recibido (BF=0)

No se escribe nadaen SSPBUF (sólo recibimos)y se inicia una nueva recepción

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 recepción de un nuevo dato, se perdería el dato previamente recibido, se da error de “OVERFLOW” (SSPOV=1).

Este error sólo es posible si el dispositivo es ESCLAVO

Un microcontrolador MAESTRO inicia una nueva transferenciacargando el dato en SSPBUF

Page 12: Ssp Spi Breve

12

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

ESPECIFICACIÓN DEL MODO SPI EN LA INICIALIZACIÓN

* 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: SÓLO SI ES MAESTRO, frecuencia en salida SCK

* Modo de Selección: SÓLO SI ES ESCLAVO

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

Page 13: Ssp Spi Breve

13

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

El dispositivo Maestro inicia la transferencia enviando la señal 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 Conexión

Page 14: Ssp Spi Breve

14

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

HABILITACIÓN DE LOS PINES DE ENTRADA/SALIDA de SSP

• Para habilitar el módulo SSP, es necesario que el bit SSPEN se encuentre a 1. Sise desea “resetear” el módulo 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 configuración, es necesario además que los bits de dirección de datos(en TRISA y en TRISC) tengan la dirección adecuada:

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

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

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

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

Cualquier función no deseada en el puerto serie puede ser omitida si en elregistro de dirección de datos (TRIS) se configura el valor opuesto

P.ej.: Si en modo Maestro sólo se van a enviar datos, SDI puede usarse comouna salida de propósito general del microcontrolador cargando TRISC<4>=0

Page 15: Ssp Spi Breve

15

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Bits

Aso

ciad

os c

on e

l mod

o SP

I

Registro SSPCON<7:5> (0x14)

Page 16: Ssp Spi Breve

16

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Registro SSPCON (0x14)

Bits

Aso

ciad

os c

on e

l mod

o SP

I

Registro SSPCON<4:0> (0x14)

Page 17: Ssp Spi Breve

17

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Bits

Aso

ciad

os c

on e

l mod

o SP

IRegistro SSPSTAT (0x94)

Page 18: Ssp Spi Breve

18

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Registros y bits Asociados con el Modo SPI

Page 19: Ssp Spi Breve

19

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Funcionamiento como MAESTRO

• El Maestro puede iniciar la transferencia en cualquier momento puesto quecontrola la línea SCK. El protocolo software determinará cuando el Esclavo estáen condiciones de enviar datos.

• En modo Maestro, la transmisión/recepción se inicia tan pronto como se escribeen el registro SSPBUF. Si se desea sólo recibir, la línea SDO puede desactivarsedefiniéndola como entrada, los datos presentes en la línea SDI irán 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 máxima velocidad de trasnferencia: 5Mbps (con Fosc=20MHz)

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

Page 20: Ssp Spi Breve

20

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Escrituraen SSPBUF CRONOGRAMA SPI MAESTRO

Muestreo caso SMP=1

Muestreo caso SMP=0

BYTE COMPLETOSSPIF=1

Page 21: Ssp Spi Breve

21

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Funcionamiento como ESCLAVOsin Selección 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 señal de reloj debe cumplir las especificaciones mínimas de tiempos mínimosen los estados alto y bajo

• En modo de bajo consumo (SLEEP) el Esclavo puede transmitir y recibir datospuesto que el registro de desplazamiento es asíncrono con el oscilador. • Al completar una transferencia de un byte, el dispositivo podría despertarse sise encontraba “dormido”

Page 22: Ssp Spi Breve

22

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

CRONOGRAMA SPI ESCLAVO SIN SELECCIÓN 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

Page 23: Ssp Spi Breve

23

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Funcionamiento como ESCLAVOcon Selección Externa

• El pin /SS (nivel activo bajo) permite la conexión 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 activación de la señal /SS (a cero) del elegido, permaneciendoel resto en estado alto

• Se debe configurar el modo SSP Esclavo con SSPCON<3:0> = 0100 y además definirel pin /SS/RA5 como entrada con TRISA<5>=1

• Cuando /SS está a 0, se permite transmisión/recepción y el pin SDO se maneja internamente por parte del registro dedesplazamiento

• Si el pin /SS está a 1, el pin SDO se sitúa en alta impedancia respecto al registrode desplazamiento (podrían necesitarse resistencias de polarización).

• Además, con /SS a “1” (Vdd) el módulo SPI permanecerá reseteado igual que si SSPEN=0 y el contador de bits entrantes permanecerá a cero

Page 24: Ssp Spi Breve

24

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

CRONOGRAMA SPI ESCLAVO CON SELECCIÓN EXTERNA

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

Necesaria señal /SS a 0

Page 25: Ssp Spi Breve

25

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Interface SPI: Posibilidades de conexión

A).- Un Maestro y un Esclavo con conexión a 3 hilos,

MAESTRO ESCLAVO

SDO

SDI

SCK

SDI

SDO

SCK

Transmisión/recepción simultánea

Transmisión/recepción pero no simultáneas

B).- Un Maestro y un Esclavo con conexión a 2 hilos,

MAESTRO ESCLAVO

SDO

SDI

SCK

SDI

SDO

SCK

2 hilos

3 hilos

¡ Conflicto en las Salidas !

Page 26: Ssp Spi Breve

26

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

B).- Un Maestro y un Esclavo con conexión a 2 hilos

MAESTRO ESCLAVO

SDO

SDI

SCK

SDI

SDO

SCK

2 hilos

MAESTRO(TRISC<5>=0)

ESCLAVO(TRISC<5>=1)

SDO

SDI

SCK

SDI

SCK

2 hilos

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

Sólo puede haber una salida activa, el receptor anula su salida de datos SDOpor software mediante el registro de dirección de datos

(TRISC<5>=1 define SDO como entrada)

¡ Conflicto en las Salidas !

Page 27: Ssp Spi Breve

27

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

B).- Un Maestro y un Esclavo con conexión a 2 hilos,

MAESTRO ESCLAVO

SDO

SDI

SCK

SDI

SDO

SCK

Sólo puede haber una salida activa, el receptor anula su salida de datos SDOpor software mediante el registro de dirección de datos

(TRISC<5>=1 define SDO como entrada)

2 hilos

MAESTRO(TRISC<5>=1)

ESCLAVO(TRISC<5>=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 !

Page 28: Ssp Spi Breve

28

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

MAESTRO ESCLAVO1

ESCLAVO2

ESCLAVOn

SDO SDI SDI SDI

......

SCK SCK SCK SCK

C).- Un Maestro emitiendo y varios Esclavos recibiendo, conexión a 2 hilos

No sería necesario el control de la selección del esclavo, todos tendrían la entrada de datos activa

SDO SDO SDOSDI

Page 29: Ssp Spi Breve

29

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

D).- Un Maestro y varios Esclavos con posibilidad de emisión, 3 h. y líneas de selección

MAESTRO ESCLAVO1

ESCLAVO2

ESCLAVOn

SDO SDI SDI SDI

......

SCK SCK SCK SCK

SDO SDO SDOSDI /SS /SS /SS

Circuito deSelección de

Esclavo(directo

o decodif.)

.

.

.

PORT

?

Sólo un Esclavo Seleccionadoque “maneja” la línea SDO

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

Page 30: Ssp Spi Breve

30

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Utilidades de SPI: Expansión 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

MÓDULO SPI

Microcontrolador

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

2.- Aparición 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

Page 31: Ssp Spi Breve

31

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

74HC165: Registro de Desplazamiento

Entrada Paralelo de datos

Activacióncarga paralelo

Entrada serie

Salida serieReloj

Habilitación

Page 32: Ssp Spi Breve

32

Comunicación Serie: Módulo 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 cosa”4.- Detectar SSPIF=15.- Recoger dato en SSPBUF

Page 33: Ssp Spi Breve

33

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Expansión para Puertos de Entrada de mayor tamaño (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 simultáneamente los 3 bytes2.- Borrar SSPIF y escribir en SSPBUF -> se generan 8 flancos y “entra” BYTE 1pasando BYTE 2 a la posición 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

Page 34: Ssp Spi Breve

34

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

Utilidades de SPI: Expansión de Puertos de Salida con Registro de Desplazamiento

RC5/SDO

RC4/SDI

RC3/SCK

RD7

MÓDULO 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

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

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

Page 35: Ssp Spi Breve

35

Comunicación Serie: Módulo SSP_SPI

Microcontroladores PIC ©ATE-Universidad de Oviedo

RC5/SDO

RC4/SDI

RC3/SCK

RD7

MÓDULO 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

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

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)

Page 36: Ssp Spi Breve

36

Comunicación Serie: Módulo 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

MÓDULO 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

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

D

QQSET

CLR

Registro 74HC595

b7

Qué hacer para “escribir” en el puerto adicional

Page 37: Ssp Spi Breve

37

Comunicación Serie: Módulo 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

Expansión para Puertos de Salida de mayor tamaño (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