Você está na página 1de 20

SISTEMAS EMBEBIDOS

COMUNICACIÓN SERIAL SINCRONA


SPI
(Serial Peripherical Interface)
PENSADO PARA COMUNICACIÓN CON
OTROS MICROCONTROLADORES O
PERIFÉRICOS COMO:
 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)
 Etc.

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).


PINES DEL MICROCONTROLADOR
PIC ASOCIADOS A COMUNICACIÓN
SPI
 Salida Serie de Datos (SDO) Serial Data Output ->
RC5
 Entrada Serie de Datos (SDI) Serial Data Input ->
RC4
 Reloj 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 bits
DIAGRAMA DE BLOQUES DEL MÓDULO SSP EN MODO
SPI
SSPSR Y SSPBUF
FLAGS EN MODO SPI
 SSPIF = PIR1<3> (Completada transmisión)
Lectura/escritura
 Indica que se ha completado un envío/recepción en SSPSR
 Se 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 dato
 se pone a 0 por hardware cuando se lee el registro SSPBUF
 Se 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)


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
EJEMPLO DE CONEXION
ENVIO DE DATOS
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. Si
 se 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 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:
 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