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