Escolar Documentos
Profissional Documentos
Cultura Documentos
COMUNICACIÓN SERIE
PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC
MÓDULO SSP (SYNCHRONOUS SERIAL PORT)
EEPROM serie
MCU
Conversores A/D
Registros despl.
2
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
3
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Registro de Buffer
(lectura/escritura)
Selección Esclavo
(opcional si es Esclavo)
Reloj de Entrada
(Esclavo)
Reloj de Salida
(Maestro)
Microcontroladores PIC ©ATE-Universidad de Oviedo
4
Comunicación Serie: Módulo SSP_SPI
ENVÍO/RECEPCIÓN SIMULTÁNEA
Situación Inicial
MAESTRO SPI ESCLAVO SPI
b0 b1 b2 b3 b4 b5 b6 b7 SDO SDI a0 a1 a2 a3 a4 a5 a6 a7
SDI SDO
a7 b0 b1 b2 b3 b4 b5 b6 SDO SDI b7 a0 a1 a2 a3 a4 a5 a6
SDI SDO
5
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Situación Inicial
MAESTRO SPI ESCLAVO SPI
b0 b1 b2 b3 b4 b5 b6 b7 SDO SDI a0 a1 a2 a3 a4 a5 a6 a7
SDI SDO
Flanco 8 en SCK
a0 a1 a2 a3 a4 a5 a6 a7 SDO SDI b0 b1 b2 b3 b4 b5 b6 b7
SDI SDO
Situación Final
Intercambiados los 8 bits de datos
6
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
• SSPBUF tiene doble función: para “cargar” el registro SSPSR para envío de datos
y para “recoger” los datos recibidos en SSPSR
SSPSR SSPSR
b0 b1 b2 b3 b4 b5 b6 b7 a4 a5 a6 a7 b0 b1 b2 b3
1.- Carga de SSPSR a través de SSPBUF 2.- SSPSR enviando/recibiendo
SSPIF=1
SSPBUF SSPBUF
b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7
SSPSR SSPSR
a0 a1 a2 a3 a4 a5 a6 a7 a0 a1 a2 a3 a4 a5 a6 a7
3.- Completada recepción/envío 4.- SSPSR carga SSPBUF con recepción
7
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
9
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
(2)
SSPBUF Recepción dato SSPBUF
b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7
SSPSR SSPSR
SDI SDO SDI SDO
b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7
SSPSR SSPSR
SDO SDO
b0 b1 b2 b3 b4 b5 b6 b7 a4 a5 a6 a7 b0 b1 b2 b3
10
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
SSPBUF
b0 b1 b2 b3 b4 b5 b6 b7
Se lee el dato recibido (BF=0)
SSPSR
SDI
b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF
b0 b1 b2 b3 b4 b5 b6 b7
No se escribe nada
en SSPBUF SSPSR
(sólo recibimos) SDI
a4 a5 a6 a7 b0 b1 b2 b3
y se inicia una nueva
recepción
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
* 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
12
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Ejemplo de Conexión
13
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
• Para que la funcionalidad de los pines SDI, SDO, SCK y /SS sea la determinada por
los 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:
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
P.ej.: Si en modo Maestro sólo se van a enviar datos, SDI puede usarse como
una salida de propósito general del microcontrolador cargando TRISC<4>=0 14
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Registro SSPCON<7:5>
(0x14)
Bits Asociados con el modo SPI
15
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Registro SSPCON
(0x14)
Registro SSPCON<4:0>
(0x14)
16
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
17
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
18
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Fosc/4
Fosc/16
Fosc/64
Frecuencia de Salida de TMR2/2
• La polaridad del reloj y los flancos activos se configuran con los bits CKP y CKE
19
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Escritura
en SSPBUF CRONOGRAMA SPI MAESTRO
Muestreo
caso SMP=0
20
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
• 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
21
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
CKE=0
F.subida
F.bajada
Muestreo
siempre con SMP=0 BYTE COMPLETO
(en mitad del bit) SSPIF=1
con el flanco opuesto
al de salida de los datos
22
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
• 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
• Se debe configurar el modo SSP Esclavo con SSPCON<3:0> = 0100 y además definir
el pin /SS/RA5 como entrada con TRISA<5>=1
• Si el pin /SS está a 1, el pin SDO se sitúa en alta impedancia respecto al registro
de 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
23
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Muestreo
siempre con SMP=0
(en mitad del bit)
con el flanco opuesto
al de salida de los datos
24
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
SDO SDI
Transmisión/recepción simultánea
SDO SDI
SCK SCK
SDO SDI
SCK SCK
Sólo puede haber una salida activa, el receptor anula su salida de datos SDO
por software mediante el registro de dirección de datos
(TRISC<5>=1 define SDO como entrada)
Estado1: Maestro emite (y recibe lo mismo que está emitiendo), Esclavo recibe
SDO SDI
SCK SCK
26
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
SDO SDI
SCK SCK
Sólo puede haber una salida activa, el receptor anula su salida de datos SDO
por software mediante el registro de dirección de datos
(TRISC<5>=1 define SDO como entrada)
Estado 2: Maestro recibe, Esclavo emite (y recibe lo mismo que está emitiendo)
SDI
SCK SCK
27
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
28
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Circuito de
PORT?
29
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
1.- Pulso en RD7 para Lectura del “Puerto” Datos Puerto de entrada
(carga paralelo de 74HC165)
Microcontrolador b7 b6 b5b4b3b2 b1 b0
RD7 SECUENCIA
RC5/SDO LOAD
REGISTRO DE Entrada serie
DESPLAZAMIENTO
RC4/SDI 74HC165
Salida serie
CLOCK
MÓDULO
SPI
RC3/SCK
3.- Tras 8 flancos de subida, entra el dato completo
30
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Activación
carga paralelo
Entrada serie
Reloj
Salida serie
Habilitación
31
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
Microcontrolador b7 b6 b5b4b3b2 b1 b0
RD7
RC5/SDO LOAD
REGISTRO DE Entrada serie
DESPLAZAMIENTO
RC4/SDI 74HC165
Salida serie
CLOCK
MODO
SPI
RC3/SCK
RD7
SCK
(CKP=1, CKE=1)
SDI b7 b6 b5 b4 b3 b2 b1 b0
SCK
Microcontrolador
Q
Reloj
CLR
CLR
CLR
CLR
CLR
CLR
CLR
CLR
SET
SET
SET
SET
SET
SET
SET
SET
sal. paralelo
D
RD7
Ent.serie
RC5/SDO
SET SET SET SET SET SET SET SET
D Q D Q D Q D Q D Q D Q D Q D Q
Q Q Q Q Q Q Q Q
RC4/SDI CLR CLR CLR CLR CLR CLR CLR CLR
34
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
b0 b1 b2 b3 b4 b5 b6 b7
Microcontrolador
Q
CLR
CLR
CLR
CLR
CLR
CLR
CLR
CLR
SET
SET
SET
SET
SET
SET
SET
SET
D
D
RD7
RC5/SDO
SET SET SET SET SET SET SET SET
D Q D Q D Q D Q D Q D Q D Q D Q
Q Q Q Q Q Q Q Q
RC4/SDI CLR CLR CLR CLR CLR CLR CLR CLR
RD7
SCK
(CKP=1, CKE=0)
SDO b7 b6 b5 b4 b3 b2 b1 b0
b0 b1 b2 b3 b4 b5 b6 b7
Microcontrolador
Q
CLR
CLR
CLR
CLR
CLR
CLR
CLR
CLR
SET
SET
SET
SET
SET
SET
SET
SET
D
D
RD7
RC5/SDO
SET SET SET SET SET SET SET SET
D Q D Q D Q D Q D Q D Q D Q D Q
Q Q Q Q Q Q Q Q
RC4/SDI CLR CLR CLR CLR CLR CLR CLR CLR
36
Microcontroladores PIC ©ATE-Universidad de Oviedo
Comunicación Serie: Módulo SSP_SPI
SCK