1
SPI
(Serial Peripheral Interface)
Luis Romano Tllez 1-6
Jos Eduardo Ramrez Alonso 7-9
Vicente Torres Mendoza 10-13
Toms Orozco Urbieta 14-17
Qu es el SPI?
Es
un estndar de comunicaciones creado por Motorola, usado principalmente para
la transferencia de informacin entre circuitos integrados en equipos electrnicos,
cada dispositivo puede actuar como transmisor y receptor al mismo tiempo.
El
bus SPI es un modulo para controlar casi cualquier dispositivo electrnico tal que
acepte un flujo de bits regulado por un reloj, dato entrante, dato saliente y un pin de
chip select, que conecta o desconecta la operacin del dispositivo con el que uno
desea comunicarse. De esta forma, este estndar permite multiplexar las lneas de
reloj.
Tiene mayor velocidad de transmisin que IC( Inter-Integrated Circuit ) o SMBus. Su
implementacin en hardware es simple, aunque no permite control de flujo y slo
funciona en las distancias cortas.
El
SPI es un bus de 3 lneas para transferencia de informacin de 8 bits,
los dispositivos conectados al bus pueden actuar como transmisor o
receptor al mismo tiempo (Full-Duplex).
Dos
Los
de las lneas transfieren datos y la tercera es la que maneja el reloj
dispositivos conectados se caracterizan por ser Maestro y Esclavo, el
Maestro es el que inicia la transferencia de datos y genera seales de reloj
y control
El
Esclavo es el dispositivo controlado por el Maestro; es controlado sobre
el bus por una de las lneas selectoras (usualmente solo poseen una lnea
selectora Select Slave) y slo se activa cuando esta lnea es seleccionada.
En
un tiempo determinado solo habr un Maestro sobre el bus, mientras
cualquier otro dispositivo se debe deshabilitar a travs de su lnea selectora.
Transmisin de Datos
Para comenzar la
comunicacin, el
maestro primero
configura el reloj, con
una frecuencia menor
o igual a la frecuencia
mxima que soporta
el dispositivo esclavo.
El maestro activa el
seleccionador de
esclavo del chip
deseado; si un
periodo de espera es
necesario, el maestro
debe esperar ese
periodo antes de
comenzar a emitir los
ciclos de reloj.
Todas las transmisiones del bus se hacen sobre
una direccin:
SCLK (Clock): generada por el maestro y sincroniza la
transferencia de datos.
MOSI (Master Output Slave Input): transporta los datos del
maestro hacia el esclavo
MISO (Master Input Slave Output): transporta los datos del
esclavo hacia el maestro
SS/Select: Para seleccionar un Esclavo, o para que el
Maestro le diga al Esclavo que se active.
Seales del sistema SPI
SCLK: reloj serial
Es una entrada al dispositivo esclavo, generada por el maestro y sincroniza el
movimiento de datos dentro y fuera de las lneas MISO y MOSI.Los dispositivos
maestro y esclavo pueden cambiar un byte de informacin durante una secuencia de
8 ciclos de reloj.
MISO: Entrada del maestro / salida del esclavo
MISO es una de dos seales unidireccionales seriales de datos es una entrada a un
dispositivo maestro y es una salida de un dispositivo esclavo la lnea MISO de un
dispositivo esclavo es puesta en un estado alto de impedancia si el dispositivo
esclavo no est seleccionado.
MOSI: Salida del maestro /entrada del esclavo
La lnea MOSI es una salida del maestro y es una entrada del esclavo. El dispositivo
maestro pone datos sobre la lnea MOSI medio ciclo antes del final del flanco de reloj que
usa el dispositivo esclavo para tomar el dato.
SS: Seleccin esclavo
La entrada de seleccin esclavo (SS-) de un esclavo debe ser externamente activada
antes de que un maestro pueda intercambiar datos con el esclavo. SS- debe ser baja
permitiendo transacciones de datos y debe permanecer baja por la duracin de la
transaccin. La lnea SS- de un maestro debe ser alta. Si sta fuera a bajo, una bandera
de error de modo de falla (MODF) es puesta a 1 en el registro de estado perifrico serial
(SPSR).
Cada
esclavo es elegido por un nivel lgico bajo por el Slave Select, y su velocidad de
transmision puede ser de 1 Mbit/seg; se transfieren en bloques de 8 bits, el ms
significativo se envia primero.
Las
interfaces SPI tienen 2 bits de configuracin CPOL (Clock Polarity) determina si el
estado del Idle esta en alto o en bajo y CPHA (Clock Phase) determina en que flanco de
reloj los datos son desplazados.
Cada
bit tiene 2 estados, con 4 combinaciones posibles y si desean comunicarse entre si
deben tener la misma CPOL y CHPA.
Eleccin Slave/Mster
Obviamente
la primera eleccin es decidir si el PIC ser el mster o un dispositivo Slave
en la comunicacin. Los contenidos de los 4 bits mas bajos de SSPCON1 determinan
esta eleccin. Sus posibles valores son:
Opciones modo mster:
0011 == clock = TMR2/2
0010 == clock = TMR2/64
0001 == clock = TMR2/16
0000 == clock = TMR2/4
Opciones modo Slave:
0101 == No se usa SS
0100 == Se usa SS
10
11
Como
se ve el primer bit (SSPCON1, SSPM3)es siempre 0 para ambos modos
(esto sucede porque al estar compartiendo el puerto SSP, estos cuatro bits
tambin son usados para la configuracin de modo i2C).
El
segundo bit (SSPCON1, SSPM2) determina si el dispositivo es mster (0) o
Slave (1).
El
modo mster los dos ltimos bits (SSPCON1, SSPM1 y SSPCON, SSPM0)
determinan las cuatro posibles frecuencias del reloj. La frecuencia del reloj ser
una fraccin (4, 16, 64) del oscilador principal o puede asociarse al ritmo del
Timer2.
Si
hemos escogido el modo Slave, los bits restantes determinan si usaremos o
no el pin dedicado para SS (Slave select).
Si
vamos a ser un dispositivo Slave ya no hay nada mas que configurar. Lo
nico recomendable es hacer SSPSTAT, SMP = 0 aunque no es estrictamente
necesario ya que ese es su valor por defecto.
En
cambio, si nuestro dispositivo va a actuar como Mster debemos configurar
el modo SPI en el que vamos a trabajar.
Modos del SPI
12
Modo Master:
Solamente un SPI master inicia la transmisin.
Los datos son desplazados hacia afuera a travs de la lnea Master Out
Stave In (MOSI).
Los datos son desplazados hacia adentro a travs de la lnea Master In
Stave Out (MISO).
La transmisin finaliza despus de 8 ciclos del serial clock (SPSCK), ya
que se trata de una transmisin serial sincronizada con el Clock generado
por el master y cada dato esta sincronizado con dicho clock.
13
Modo Slave:
Los datos son desplazados hacia afuera a travs de la lnea Master In
Slave Out (MISO).
Los datos son desplazados hacia adentro a travs de la lnea Master Out
Stave In (MOSI).
Transferencia sincronizada al serial clock (SPSCR) desde el Master.
14
En el SPI tambin se puede configurar la polaridad y la fase del reloj, permitiendo al
SPI comunicar con la mayora del perifricos serie. Se puede configurar el SPI para
generar dos eventos de interrupcin separados: transmisor vaco y receptor lleno.
Cada interrupcin tiene un vector separado que permite transferencias eficaces.
Existen cuatro modos de reloj definidos por el protocolo SPI, estos modos
son :
Modo A
Modo B
Modo C
Modo D
Estos determinan el valor de la polaridad del reloj (CPOL = Clock Polarity) y el bit
de fase del reloj (CPHA = Clock Phase). La mayora de los dispositivos SPI
pueden soportar al menos 2 modos de los 4 modos.
15
El BIT de Polaridad del reloj determina el nivel del estado de Idle del reloj y el BIT de Fase
de reloj determina que flanco recibe un nuevo dato sobre el bus. El modo requerido para una
determinada aplicacin, esta dado por el dispositivo esclavo. La capacidad de multi-modo
combinada con un simple registro de desplazamiento hace que el bus SPI sea muy verstil.
Polaridad del reloj (CPOL=Clock Polarity)
-Si CPOL esta en un 0 lgico y ningn dato esta siendo transferido(Estado Idle), el maestro
mantiene la lnea SCLK en bajo.
-Si CPOL esta en un 1 lgico, el maestro desocupa la lnea SCLK alta.
Fase Del Reloj (CPHA)
CPHA, conjuntamente con CPOL, controlan cuando los nuevos datos son colocados en el
bus. Si CPHA es 1 lgico, los datos son desplazados sobre la lnea MOSI segn lo
determinado
por
el
valor
de
CPOL.
Ventajas
Comunicacin
Mayor
velocidad de transmisin que con PC o SMBus
Protocolo
No
flexible en que se puede tener un control absoluto sobre los bits transmitidos.
esta limitado a la transferencia de bloques de 8 bits
Eleccin
Su
Full Dplex
del tamao de la trama de bits, de su significado y propsito
implementacin en hardware es extremadamente simple
Consume
menos energa que PC O que SMBus debido a que posee menos circuitos (incluyendo
las resistencias pull-up) y estos son mas simples
No
es necesario arbitraje o mecanismos de respuesta ante fallos.
Los
No
dispositivos clientes usan el reloj que enva el servidor, no necesitan por tanto su propio reloj
es obligatorio implementar un transceptor (emisor y receptor), un dispositivo conectado puede
configurarse para que solo envi, solo reciba o ambas cosas a la vez.
17
Desventajas
Consume
mas pines que cada chip que I2C, incluso en la variante de 3 hilos
El
direccionamiento se hace mediante lneas especificas (sealizacin fuera
de banda) a diferencia de lo que ocurre en I2C que selecciona cada chip
mediante una direccin de 7 bits que se enva por las mismas lneas del bus
No
hay control de flujo por hardware
No
hay seal de asentamiento. El servidor podra estar enviando informacin
sin que estuviese conectado ningn cliente y no se dara cuenta.
No
permite fcilmente tener varios servidores conectados al bus
Solo
funciona en las distancias cortas a diferencia por ejemplo, de RS-232,
RS-485
18