Anda di halaman 1dari 29

GAMA ALTA DE MICROCONTROLADORES

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.

Modos del Reloj


Todos la transferencia de los datos, son sincronizados por la lnea de reloj de este
bus. Un BIT es transferido por cada ciclo de reloj. La mayora de las interfaces SPI
tienen 2 bits de configuracin, llamados:
CPOL (Clock Polarity = Polaridad de Reloj)
CPOL determina si el estado detenido de la lnea de reloj esta en bajo (CPOL=0) o
si se encuentra en un estado alto (CPOL=1).
CPHA (Clock Phase = Reloj de Fase).
CPHA determina en que flanco de reloj los datos son desplazados hacia dentro o
hacia fuera.
Si CPHA=0 los datos sobre la lnea MOSI(maestro salida esclavo entrada) son
detectados cada flanco de bajada y los datos sobre la lnea MISO(maestro entrada
esclavo salida) son detectados cada flanco de subida.
Cada BIT tiene 2 estados, lo cual permite 4 diferentes combinaciones, las cuales
son incompatibles una de la otra. Por lo que si dos dispositivos SPI desean
comunicarse entre si, estos deben tener el mismo la misma Polaridad de Reloj
(CPOL) y la misma Fase de Reloj (CPHA).

Modos del Reloj


SSPSTAT
bit 6 CKE: SPI Clock Edge Select
(Figure 9-2, Figure 9-3 and Figure
9-4)
SPI mode:
subida flanco
For CKP = 0
1 = Data transmitted on rising edge of
SCK
0 = Data transmitted on falling edge
of SCK
bajada flanco
For CKP = 1
bajada flanco
1 = Data transmitted on falling edge
of SCK
0 = Data transmitted on rising edge of
subida flanco
SCK

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

PROTOCOLO SPI - SSPSTAT(BANCO 1)

Lee MISO

Escribe MOSI

Bit de muestra

Se debe misma Polaridad de Reloj (CPOL) y la misma Fase de Reloj (CPHA).

PROTOCOLO SPI - SSPSTAT(BANCO 1)

Bit de muestra

bajada flanco

subida flanco

Modos del Reloj

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

Registros Utilizados en el protocolo


Los registros que se utilizan para configurar y establecer la comunicacin SPI
son:
SSPCON1 - Control Register
SSPSTAT - Status Register
SSPBUF - Buffer Register
SSPSR - Shift Register (no implementado fisicamente, pero se puede
direccionar)

PROTOCOLO SPI - SSPSTAT(BANCO 1)


Muestra el Status de la transmisin , el bit BF indica cuando la transmisin
del dato esta completa si este es igual a 1, en caso contrario aun esta
pendiente; El bit 7 permite establecer si el micro es maestro o es esclavo;
los bit que no estn indicados en la figura no se usan en modo 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.

REGISTROS ASOCIADOS A LA OPEACION SPI

CONEXIN TIPICA EN SPI

Para configurar los microcontroladores es necesario recordar que estos


se encuentran en el registro SSPCON1, bit del 0 al 3. Tal como se
observa en la siguiente figura:

CONEXIN TIPICA EN SPI - SSPCON1


bit 3-0 SSPM3:SSPM0: Synchronous Serial Port Mode Select bits
0000 = SPI Master mode, clock = FOSC/4
0001 = SPI Master mode, clock = FOSC/16
0010 = SPI Master mode, clock = FOSC/64
0011 = SPI Master mode, clock = TMR2 output/2
0100 = SPI Slave mode, clock = SCK pin. SS pin control enabled.
0101 = SPI Slave mode, clock = SCK pin. SS pin control disabled. SS can be
used as I/O pin.
0110 = I2C Slave mode, 7-bit address
0111 = I2C Slave mode, 10-bit address
1000 = I2C Master mode, clock = FOSC / (4 * (SSPADD+1))
1011 = I2C Firmware Controlled Master mode (slave idle)
1110 = I2C Firmware Controlled Master mode, 7-bit address with START and
STOP bit interrupts enabled
1111 = I2C Firmware Controlled Master mode, 10-bit address with START and
STOP bit interrupts enabled
1001, 1010, 1100, 1101 = Reserved

GAMA ALTA DE MICROCONTROLADORES

SPI

PIC18F4550

DIGITALES III: 19

SPI EN CCS

CCS simplifica el proceso de configuracin de los diferentes


registros cuando se trabaja con ensamblador, para ello cuenta
con una opcin en el asistente en la cual se puede configurar este
protocolo.
Esta opcin le permite configurar fcilmente si el micro es
maestro o esclavo, adems de la seleccin del reloj, el modo de
funcionamiento SPI y las opciones de configuracin cuando se
trabaja como esclavo

SPI EN CCS - WIZARD

La
grfica
siguiente ilustra
la
pantalla
desplegada por
CCS:

DIGITALES III: 21

SPI EN CCS

En CCS cuando se elige la opcin de esclavo se habilitan las


casillas de verificacin para determinar si la lnea RA5 se
establece como selector de esclavo, se deshabilita la
configuracin de reloj y el modo SPI.

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

Una vez se establece el modo de trabajo es necesario


utilizar las funciones de lectura y escritura.

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_data_is_in() && input(PIN_B2) );*/


if( spi_data_is_in() )
data = spi_read();

SPI

APLICACIONES
ENVIAR DATOS DE UN MAESTRO A
UN ESCLAVO

SPI

Anda mungkin juga menyukai