You are on page 1of 4

SPI es un acrónimo de "Interfaz Periférica Serial".

Es un bus de datos en serie síncrono: los


datos pueden viajar en ambas direcciones al mismo tiempo, a diferencia de (por ejemplo) el
bus I2C que no puede hacerlo. Para permitir la transmisión de datos sincrónicos, el bus SPI
utiliza cuatro cables. Se les llama:

 MOSI - Master-out, Slave-in. Esta línea transporta datos de nuestro Arduino a los
dispositivos controlados por SPI;
 MISO - Master-in, Slave out. Esta línea transporta datos de los dispositivos controlados
por SPI a Arduino;
 SS - Selección de esclavo. Esta línea le dice al dispositivo en el autobús que deseamos
comunicarnos con él. Cada dispositivo SPI necesita una línea SS única de regreso a
Arduino;
 SCK - Reloj serial.

Por ejemplo, para un dispositivo el cableado sería:

Los datos viajan hacia adelante y hacia atrás a lo largo de las líneas MOSI y MISO entre nuestro
Arduino y el dispositivo SPI. Esto solo puede suceder cuando la línea SS está configurada en
BAJO. En otras palabras, para comunicarnos con un dispositivo SPI particular en el bus,
establecemos la línea SS en ese dispositivo en BAJO, luego nos comunicamos con él, luego
establecemos la línea nuevamente en ALTO. Si tenemos dos o más dispositivos SPI en el bus, el
cableado se parecería a lo siguiente:
Observe cómo hay dos líneas SS: necesitamos una para cada dispositivo SPI en el bus. Puede
usar cualquier pin de salida digital en su Arduino como una línea SS. Solo recuerde tener todas
las líneas SS altas a excepción de la línea conectada al dispositivo SPI que desea usar en ese
momento.

Los datos se envían al dispositivo SPI en forma de byte. Debería saber ahora que ocho bits
forman un byte, por lo tanto, representan un número binario con un valor de entre cero y 255.
Al comunicarse con nuestros dispositivos SPI, necesitamos saber de qué manera trata el
dispositivo los datos: primero MSB o LSB. . MSB (bit más significativo) es el lado izquierdo del
número binario, y LSB (bit menos significativo) es el lado derecho del número. Es decir:

Además de enviar valores numéricos a lo largo del bus SPI, los números binarios también
pueden representar comandos. Puede representar ocho configuraciones de encendido /
apagado utilizando un byte de datos, de modo que los parámetros de un dispositivo se pueden
configurar enviando un byte de datos. Estos parámetros variarán con cada dispositivo y se
deben ilustrar en la hoja de datos del dispositivo en particular. Por ejemplo, un potenciómetro
digital IC con seis potes:
¿Cómo enviamos datos a dispositivos SPI en nuestros sketches?

Antes que nada, necesitamos usar la biblioteca SPI. Se incluye con la instalación Arduino IDE
por defecto, así que ponga lo siguiente al comienzo de su sketch:

#include "SPI.h"

Luego, en void.setup () declara qué pin (s) se usarán para SS y los establece como OUTPUT. Por
ejemplo,

pinMode(ss, OUTPUT);

donde ss ha sido declarado previamente como un número entero de valor diez. Ahora, para
activar el bus SPI:

SPI.begin();

y finalmente necesitamos decirle al sketch de qué manera enviar datos, MSB o LSB primero
usando:

SPI.setBitOrder(MSBFIRST); ó SPI.setBitOrder(LSBFIRST);

Cuando llega el momento de enviar datos por el bus SPI a nuestro dispositivo, deben ocurrir
tres cosas. Primero, configure el pin digital con SS a bajo:

digitalWrite(SS, LOW);

Luego envíe los datos en bytes, un byte a la vez usando:

SPI.transfer(value);

El valor puede ser un entero / byte entre cero y 255. Finalmente, cuando termine de enviar
datos a su dispositivo, finalice la transmisión configurando SS alto:

digitalWrite (ss, HIGH);

You might also like