Está en la página 1de 37

1

Comunicacin 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.
2
Comunicacin 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
3
Comunicacin 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 -> RC5
Entrada Serie de Datos (SDI) Serial Data Input -> RC4
Reloj 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 bits
de control SSPCON<5:0> y SSPSTAT<7:6>
4
Comunicacin 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 Desplazamiento
de transmisin/recepcin
(no accesible)
Seleccin Esclavo
(opcional si es Esclavo)
Reloj de Entrada
(Esclavo)
Registro de Buffer
(lectura/escritura)
5
Comunicacin 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
SDO SDI
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
SDO SDI
SDI
MAESTRO SPI ESCLAVO SPI
SCK SCK
Flanco 1 en reloj SCK
Situacin Inicial
ENVO/RECEPCIN SIMULTNEA
6
Comunicacin 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
SDO SDI
SDI
MAESTRO SPI ESCLAVO SPI
SCK SCK
a7 b0 b1 b3 b4 b7 a0 a1 a2 a3 a4 a5 a6
Reloj
SDO
SDO SDI
SDI
MAESTRO SPI ESCLAVO SPI
SCK SCK
b6 b5
Flanco 8 en SCK
b2
Situacin Inicial
Situacin Final
Intercambiados los 8 bits de datos
7
Comunicacin 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 datos
y 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 b3 a4 a5 a6
b0 b1 b2 b3 b4 b5 b6 b7
SSPBUF
SSPSR
2.- SSPSR enviando/recibiendo
SSPBUF
b0 b1 b2 b3 b4 b5 b6 b7
SSPSR
a7 a0 a1 a2 a3 a4 a5 a6
3.- Completada recepcin/envo
SSPSR
a7 a0 a1 a2 a3 a4 a5 a6
a7 a0 a1 a2 a3 a4 a5 a6
SSPBUF
4.- SSPSR carga SSPBUF con recepcin
SSPIF=1
SSPIF=0 por software
8
Comunicacin Serie: Mdulo SSP_SPI
Microcontroladores PIC
ATE-Universidad de Oviedo
* SSPIF = PIR1<3> (Completada transmisin) Lectura/escritura
Indica que se ha completado un envo/recepcin en SSPSR
Se debe poner a 0 por software, puede generar interrupcin
* BF = SSPSTAT<0> (Buffer de recepcin lleno) Slo lectura
Se pone a 1 cuando se ha completado la recepcin de un dato
se pone a 0 por hardware cuando se lee el registro SSPBUF
Se emplear normalmente nicamente en modo de recepcin
* WCOL = SSPCON<7> (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<6> (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 ya
no 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
9
Comunicacin 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 haberse
completado el envo del anterior dato
Si se pretende cargar un dato en SSPBUF durante una transmisin se produce
una 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
SSPSR
SDI SDO
SSPSR
a7 a0 a1 a2 a3 a4 a5 a6
a7 a0 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
SSPSR
SDO
a7 b0 b1 b2 b3 a4 a5 a6
b0 b1 b2 b3 b4 b5 b6 b7
SSPBUF
SSPSR
SDO
Intento de carga de Dato2
en SSPBUF durante envo
COLISIN
WCOL=1
(1) (
2
)
Antes de cargar un nuevo envo
debemos 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 nada
en SSPBUF
(slo recibimos)
y se inicia una nueva
recepcin
SDI
SSPBUF
a7 b0 b1 b2 b3 a4 a5 a6
b0 b1 b2 b3 b4 b5 b6 b7
SSPSR
SDI
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 transferencia
cargando 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 misma
POLARIDAD 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. Si
se 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 por
los 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<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 MAESTRO
y TRSC<3> = 1 si se define como ESCLAVO
/SS (RA5) debe ser TRISA<5> = 1 si es ESCLAVO y tiene control externo
Cualquier funcin no deseada en el puerto serie puede ser omitida si en el
registro 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 como
una salida de propsito general del microcontrolador cargando TRISC<4>=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<7:5>
(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<4:0>
(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 que
controla la lnea SCK. El protocolo software determinar cuando el Esclavo est
en condiciones de enviar datos.
En modo Maestro, la transmisin/recepcin se inicia tan pronto como se escribe
en el registro SSPBUF. Si se desea slo recibir, la lnea SDO puede desactivarse
definindola como entrada, los datos presentes en la lnea SDI irn entrando al
registro SSPSR a la velocidad marcada por el reloj de transferencia
La velocidad de transferencia del modo SPI es programable entre los valores:
Fosc/4
Fosc/16
Fosc/64
Frecuencia 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
Escritura
en SSPBUF
CRONOGRAMA SPI MAESTRO
Muestreo
caso SMP=1
Muestreo
caso SMP=0
BYTE COMPLETO
SSPIF=1
21
Comunicacin Serie: Mdulo SSP_SPI
Microcontroladores PIC
ATE-Universidad de Oviedo
Funcionamiento como ESCLAVO
sin Seleccin Externa
El Esclavo el dato es transmitido/recibido cuando aparecen los pulsos en la
entrada 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 mnimos
en los estados alto y bajo
En modo de bajo consumo (SLEEP) el Esclavo puede transmitir y recibir datos
puesto que el registro de desplazamiento es asncrono con el oscilador.

Al completar una transferencia de un byte, el dispositivo podra despertarse si
se encontraba dormido
22
Comunicacin Serie: Mdulo SSP_SPI
Microcontroladores PIC
ATE-Universidad de Oviedo
CRONOGRAMA SPI ESCLAVO SIN SELECCIN EXTERNA
CKE=0
F.subida
F.bajada
Muestreo
siempre con SMP=0
(en mitad del bit)
con el flanco opuesto
al de salida de los datos
Esperando a que el Maestro genere flancos
BYTE COMPLETO
SSPIF=1
23
Comunicacin Serie: Mdulo SSP_SPI
Microcontroladores PIC
ATE-Universidad de Oviedo
Funcionamiento como ESCLAVO
con 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, permaneciendo
el resto en estado alto
Se debe configurar el modo SSP Esclavo con SSPCON<3:0> = 0100 y adems definir
el pin /SS/RA5 como entrada con TRISA<5>=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 registro
de 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 opuesto
al 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<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
Slo puede haber una salida activa, el receptor anula su salida de datos SDO
por software mediante el registro de direccin de datos
(TRISC<5>=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 SDO
por software mediante el registro de direccin 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 !
28
Comunicacin Serie: Mdulo SSP_SPI
Microcontroladores PIC
ATE-Universidad de Oviedo
MAESTRO
ESCLAVO
1
ESCLAVO
2
ESCLAVO
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 SDO SDI
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
ESCLAVO
1
ESCLAVO
2
ESCLAVO
n
SDO SDI SDI SDI
......
SCK SCK SCK SCK
SDO SDO SDO SDI /SS /SS /SS
Circuito de
Seleccin de
Esclavo
(directo
o decodif.)
.
.
.
P
O
R
T
?
Slo un Esclavo Seleccionado
que 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 serie
REGISTRO DE
DESPLAZAMIENTO
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 SSPBUF
se 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
Activacin
carga paralelo
Entrada serie
Salida serie
Reloj
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 b6b5b4b3b2b1 b0
Salida serie
Entrada serie
REGISTRO DE
DESPLAZAMIENTO
74HC165
MODO
SPI
Microcontrolador
RD7
SCK
(CKP=1, CKE=1)
SDI
Escritura en SSPBUF
b0
Dato completo en SSPBUF
Cronograma del proceso de lectura del puerto adicional
Desde el MCU PIC:
1.- Bajar y subir RD7
2.- Poner SSPIF=0
3.- Escribir en SSPBUF cualquier cosa
4.- Detectar SSPIF=1
5.- 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 74HC165
Sal Sal Sal Ent 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 bytes
2.- Borrar SSPIF y escribir en SSPBUF -> se generan 8 flancos y entra BYTE 1
pasando BYTE 2 a la posicin de BYTE 1 y BYTE 3 a la de BYTE 2
3.- Se recoge BYTE 1 en SSPBUF y se almacena
4.- Borrar SSPIF y escribir en SSPBUF -> 8 flancos en SCK y entra BYTE 2...
5.- Se recoge BYTE 2 en SSPBUF y se almacena
6.- 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
b6 b5 b4 b3 b2
b1 b0
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
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 RD7
para que salga el dato al exterior
4.- Dato retenido y disponible en la salida
Reloj
ent. serie
Reloj
sal. 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
b6 b5 b4 b3 b2 b1 b0
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
Registro 74HC595
b7
Cronograma del proceso de escritura en el puerto adicional
b7
b6
b2 b5 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 subida
para salida al exterior
Los bits salen por SDO
en los flancos de bajada
Los bits entran al
registro 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=0
2.- Escribir en SSPBUF el dato a sacar
3.- Detectar SSPIF=1
4.- Bajar y subir RD7 (flanco de subida)
RC5/SDO
RC4/SDI
RC3/SCK
RD7
MDULO
SPI
Microcontrolador
b6 b5 b4 b3 b2 b1 b0
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q
Q
SET
CLR
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
S
E
T
C
L
R
D
Q Q
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 74HC595
Sal Sal Ent 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 flancos
y pasa BYTE 3 al registro central, entrando BYTE 2 en el de la izquierda
4.- 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 izquierda
5.- Pulso bajo en RD7 para generar un flanco de subida que haga que los bytes
almacenados internamente en los registros salgan al exterior todos a la vez

También podría gustarte