TU MEJOR MAESTRO

Logo TTM

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

  • SCLK: Señal de reloj.
  • CS: Selección de chip.
  • MOSI: Salida del maestro y entrada del esclavo.
  • MOSI: Salida del esclavo y entrada del maestro.

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.


Img_01

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.


Img_02

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.


Img_03

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.


Img_04

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.


Img_05

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.


Img_04

Figura 6. Modo 2 de opración SPI



Img_04

Figura 7. Modo 3 de opración SPI


INTRODUCCIÓN

¿Qué es un FPGA?

¿Cómo funciona?

¿Qué es un HDL?

Referencia VHDL

Referencia Verilog

CIRCUITOS DIGITALES

Combinatorios

Secuenciales

Aritmética digital

PROTOCOLOS

Serial

SPI

I2C

Ethernet

PRÁCTICAS

BÁSICOS

LEDs

PWM

Motor CD

Motor PAP

INTERMEDIOS

Matriz de LEDs

Sensor ultrasónico

Display LCD

Display TFT

Display OLED

AVANZADOS

Interfaz VGA

Interfaz HDMI

Interfaz PS2

Interfaz SD