COMPILADOR C CCS
SISTEMAS EMBEBIDOS
DIGITALES III: 1
PROTOCOLO SPI
PROTOCOLO SPI
Principio de funcionamiento
SPI se conoce como Serial Peripheral
Interface.
El modo de comunicacin serial SPI,
permite el envi y recepcin simultanea de
8 bit, en donde el bits mas significativo
(MSB) se transmite primero. Esta
comunicacin se realiza entre diferentes
microcontroladores.
Existen cuatro modos de configuracin que
dependen de la polaridad y fase del reloj
(CKP y CKE).
Cada esclavo es seleccionado por un nivel lgico bajo (0) a travs de la lnea
(CS = Chip Select o SS Slave Select ). Los datos sobre este bus pueden ser
transmitidos a una razn de casi cero bits /segundo hasta 1 Mbits/ segundo.
SSPCON
bit 4 CKP: Clock Polarity
Select bit
In SPI mode:
1 = Idle state for clock is a
high
level
detenido
0 = Idle state for clock is a
low level
Lee MISO
Escribe MOSI
Bit de muestra
Bit de muestra
bajada flanco
subida flanco
Modos del
Reloj
En el esclavo
PROTOCOLO SPI
Principio de funcionamiento
Para la comunicacin se requieren tres
pines del microcontrolador:
SDO (Serial Data Out) - RC5
SDI (Serial Data In) - RC4
SCK (Serial Clock) - RC3
Adicionalmente para la operacin en modo
de Esclavo, se usa la terminal, Slave Select
(SS') - RA5.
Cuando un microcontrolador se configura
como esclavo se conecta la lnea SS a
negativo.
PROTOCOLO SPI
Bit de muestra
SSPCON1
(BANCO 0)
SSPCON1. Es el
registro de control
para la comunicacin
SPI, indica si hay una
colisin
de
informacin, ademas
informa
si
existe
overflow el cual indica
que se pierde. Cuenta
con
un
bit
de
habilitacin SSPI, el
bit 4 establece la
polaridad del reloj, y
otras configuraciones
en los bits 0 a 3, entre
ellas como Master o
Slave, y velocidad de
transmisin.
PROTOCOLO SPI
Inicio de comunicacin.
Para iniciar la comunicacin SPI, deben ser configuradas varias opciones, tales
como:
micro maestro: Master Mode - SCK es salida
Micro esclavo: Slave Mode - SCK es entrada
Clock Polarity - Polaridad del Clock
Sample Phase Data Input - Al inicio o final del tiempo de salida
Clock Edge - Salida de informacin al subir o bajar SCK
Clock Rate - Solo se configura en el microcontrolador Master Mode
Slave Select Mode - Solo para Slave Mode
PROTOCOLO SPI
Inicio de operacin.
La informacin a transmitir es escrita en el registro SSPBUF, y pasa al SSPSR.
El SSPSR transmite el byte mandando primero al bit MSb. Si mientras esta
enviando se trata de escribir otro byte a SSPBUF, se pone en uno el bit WCOL
indicando
una
colisin
de
informacin
(limpiar
por
software)
En la recepcin conforme el SSPSR recibe los 8 bits, los va pasando uno a uno
al SSPBUF, cuando termina de enviar el byte, se pone en uno el bit BF (Buffer
Full) y la bandera de interrupcin SSPIF.
SPI
PIC18F4550
DIGITALES III: 19
SPI EN CCS
La
grfica
siguiente ilustra
la
pantalla
desplegada por
CCS:
DIGITALES III: 21
SPI EN CCS
SPI EN CCS
SPI MAESTRO
En
una
aplicacin
maestro
se
deben
seleccionar el modo y el
divisor de frecuencia,
para ello cree un nuevo
proyecto con el asistente
y
establezca
estos
valores.
Una vez presiona el
botn OK CCs despliega
un
cdigo
de
configuracion similar al
siguiente:
SPI EN CCS
spi_read( )
spi_write( )
spi_data_is_in( )
SPI EN CCS
SPI_READ( )
Sintaxis: value = spi_read (data)
Permite leer un dato por el pin correspondiente, siempre y cuando
este listo, en caso contrario se mantiene en espera.Este comando
se acompaa de spi_data_is_in( ).
Ejemplo:
Valor=spi_read();
SPI_WRITE( )
Sintaxis: spi_write (data)
Permite enviar un dato por el pin correspondiente. El valor a enviar
es un entero de 8 bits.
Ejemplo:
spi_write(dato);
SPI EN CCS
SPI_DATA_IS_IN( )
Sintaxis: resultado = spi_data_is_in()
Retorna true si existe un valor que ingreso por la linea de entrada.
Ejemplo:
SPI
APLICACIONES
ENVIAR DATOS DE UN MAESTRO A
UN ESCLAVO
SPI