Introducción
SPI es el acrónimo de "Serial Peripheral Interface'' que se traduciría como interfaz periférica serial. Este protocolo de comunicación serial es uno de los más utilizados para la comunicación entre microcontroladores y circuitos periféricos como sensores, memorias, displays, etc.
SPI es un protocolo de comunicación síncrono de tipo maestro-esclavo, donde los datos del maestro o del esclavo se sincronizan en el flanco de reloj ascendente o descendente, dependiendo el modo de operación. La interfaz SPI puede ser de 3 o 4 hilos, permitiendo lograr una comunicación bidireccional simultanea llamada full-duplex (4 hilos).
Las señales utilizadas en la comunicación SPI de 4 hilos son
Una red SPI debe tener un solo maestro y al menos un esclavo. El dispositivo que actúa como maestro siempre inicia la comunicación y genera la señal de reloj. En general la comunicación SPI admite frecuencias de reloj más altas en comparación con las interfaces I2C. En la Figura 1 se muestra la conexión SPI entre el maestro y el esclavo para 3 y 4 hilos.
Figura 1. Interfaz SPI de 3 y 4 hilos
Al ser una interfaz full-duplex el maestro puede enviar y recibir datos al mismo tiempo a través de las líneas MOSI y MISO respectivamente. Los flancos del reloj sincronizan el desplazamiento (envío) y el muestreo (recepción) de los datos. La interfaz SPI proporciona al usuario flexibilidad para seleccionar los flancos ascendentes o descendentes para muestrear o desplazar los datos, de acuerdo con 4 modos de operación.
Protocolo
Antes de inicial la comunicación SPI, el maestro debe generar la señal de reloj (SCLK). La señal de selección de chip (CS) se utiliza para seleccionar a un esclavo en particular, por lo general esta señal permanece en alto y cuando el maestro quiere iniciar la comunicación la pone en estado bajo. Cuando se utilizan múltiples esclavos, es necesario asignar una señal de selección de chip a cada uno de los esclavos, tal y como se observa en la Figura 2.
Figura 2. Red SPI con más de un esclavo
La interfaz SPI puede trabajar en 4 modos de operación distintos, de acuerdo con polaridad del reloj (CPOL) la la fase de reloj (CPHA). Ya que cada fabricante decide en que modo de operación trabajaran sus dispositivos (ver Tabla 1) es necesario que el maestro seleccione la polaridad del reloj y la fase del reloj, según los requisitos del esclavo.
La polaridad de reloj establece el estado de la señal de selección de chip cuando el módulo esclavo está en estado de espera (IDLE), es decir, si CPOL=1 la señal CS estará en alto mientras el esclavo esté inactivo. La fase de reloj establece en que flanco del reloj se enviaran y recibirán los datos, por ejemplo, si CPHA=0 se enviarán los datos en los flancos de bajada y se recibirán en los flancos de subida, si CPHA=1 se enviarán los datos en los flancos de subida y se recibirán en los flancos de bajada.
Figura 3. Modos de comunicación SPI
A continuación se ilustra la comunicación SPI en los cuatro modos de operación para la configuración de 4 hilos. En estos ejemplos, los datos se muestran en la línea MOSI y MISO. El inicio y el final de la transmisión se indican mediante la línea verde punteada, el borde de muestreo se indica en naranja y el borde de desplazamiento se indica en azul. Tenga en cuenta que estas cifras son solo para fines ilustrativos. Para una comunicación SPI exitosa, los usuarios deben consultar la hoja de datos del producto y asegurarse de que se cumplan las especificaciones de tiempo para la pieza.
La Figura 3 muestra el diagrama de temporización para el Modo SPI 1. En este modo, la polaridad del reloj es 0, lo que indica que el estado inactivo de la señal del reloj es bajo. La fase del reloj en este modo es 1, lo que indica que los datos se muestrean en el borde descendente (mostrado por la línea punteada naranja) y los datos se desplazan en el borde ascendente (mostrado por la línea azul punteada) de la señal del reloj.
Figura 4. Modo 0 de opración SPI
La Figura 4 muestra el diagrama de temporización para el Modo SPI 2. En este modo, la polaridad del reloj es 1, lo que indica que el estado inactivo de la señal del reloj es alto. La fase del reloj en este modo es 1, lo que indica que los datos se muestrean en el borde descendente (mostrado por la línea punteada naranja) y los datos se desplazan en el borde ascendente (mostrado por la línea azul punteada) de la señal del reloj.
Figura 5. Modo 1 de opración SPI
La Figura 5 muestra el diagrama de temporización para el Modo SPI 3. En este modo, la polaridad del reloj es 1, lo que indica que el estado inactivo de la señal del reloj es alto. La fase del reloj en este modo es 0, lo que indica que los datos se muestrean en el borde ascendente (mostrado por la línea punteada naranja) y los datos se desplazan en el borde descendente (mostrado por la línea azul punteada) de la señal del reloj.
Figura 6. Modo 2 de opración SPI
Figura 7. Modo 3 de opración SPI
INTRODUCCIÓN
CIRCUITOS DIGITALES
PROTOCOLOS
PRÁCTICAS
BÁSICOS
INTERMEDIOS
AVANZADOS