Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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.
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
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>
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)
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
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
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
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
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
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
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
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
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
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
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)
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)
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)
18
Comunicación Serie: Módulo SSP_SPI
Microcontroladores PIC ©ATE-Universidad de Oviedo
Registros y bits Asociados con el Modo SPI
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
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
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”
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
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
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
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 !
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 !
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 !
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
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)
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
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
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
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
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
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)
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
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