# Serial Peripheral Interface

El bus SPI (de l'anglès Serial Peripheral Interfície, en català Interfície per a perifèrics sèrie) és un estàndard de comunicacions utilitzat principalment per a la transferència de dades entre circuits integrats en equips electrònics. El bus sèrie d'interfície de perifèrics, o bus SPI, és un estàndard per a controlar qualsevol dispositiu electrònic digital que accepti un flux de bits sèrie.

## Propietats

* És un sistema de comunicació d'un IC mestre a un o més IC esclaus (veure Fig.1 ì 2)
* Consta de 4 connexions : rellotge, dades entrada, dades sortida i selecció.

## Mode de funcionament

El SPI és un protocol síncron. La sincronització i la transmissió de dades entre emissor i receptor (Màster/Slave) es realitza utilitzant aquests 4 senyals:
* SCLK (Clock): És el pols del rellotge que marca la sincronització. A cada pols d'aquest rellotge, es llegeix o s'envia un bit.Fig. 2 SPI bus : un mestre i tres esclaus
* MOSI (Màster Output Slave Input): Sortida de dades del Màster i entrada de dades al Slave.
* MISO (Màster Input Slave Output): Sortida de dades del Slave i entrada al Màster.
* SS/Select: Per seleccionar un Slave, o perquè el Màster li digui al Slave que s'activi.
La cadena de bits és enviada de manera síncrona amb els polsos del rellotge, és a dir amb cada pols, el Màster envia un bit. Perquè comenci la transmissió el Màster baixa senyal SS/Select a zero, amb això el Slave s'activa i comença la transmissió, amb un pols de rellotge al mateix temps que el primer bit és llegit. Els polsos de rellotge poden estar programats de manera que la transmissió del bit es realitzi de 4 maneres diferents, la qual cosa s'anomena polaritat i fase de la transmissió:
* 1. Amb el flanc de pujada sense retard.
* 2. Amb el flanc de pujada amb retard.
* 3. Amb el flanc de baixada sense retard.
* 4. Amb el flanc de baixada amb retard.

## Avantatges sobre altres protocols de comunicació similars

* Comunicació Full Dúplex.
* Major velocitat de transmissió que amb els busos I²C o SMBus.
* Protocol flexible en què es pot tenir un control absolut sobre els bits transmesos:
** No està limitat a la transferència de blocs de 8 bits.
** Es pot escollir la grandària de la trama de bits, del seu significat i propòsit.
* La seva implementació en maquinari és extremadament simple:
** Consumeix menys energia que I²C o que SMBus perquè s'implementa amb menys circuits (incloent-hi les resistències pull-up) i aquests són més simples.
** No cal arbitratge o mecanisme de resposta davant de fallides.
** Els dispositius esclaus usen el rellotge que envia el mestre, i per tant, no necessiten el seu propi rellotge.
** No és obligatori implementar un transceptor (emissor i receptor), un dispositiu connectat pot configurar-se perquè només envïi, només rebi o ambdues coses alhora.
* Usa molts menys terminals en cada xip/connector que una interfície paral·lel equivalent.
* Empra com a màxim un únic senyal específic per a cada esclau (senyal SS), els altres senyals poden ser compartits.

## Desavantatges

* Consumeix més terminals de connexió en cada xip que el bus I²C, fins i tot en la variant de 3 fils.
* L'adreçament es fa per mitjà de la línia de connexió SS específica de cada IC, a diferència del que ocorre en I²C, que se selecciona cada xip per mitjà d'una adreça de 7 bits que s'envia per les mateixes línies del bus.
* No hi ha control de flux, ni per línies de connexió ni per programari.
* No hi ha senyal d'assentiment o reconeixement. El mestre podria estar enviant informació sense que estigués connectat cap esclau, ja que no hi ha resposta.
* No permet tenir diversos mestres connectats al bus d'una forma fàcil.
* Només funciona en distàncies curtes a diferència dels busos RS-232, el RS-485, o el Bus CAN.

## Aplicacions SPI

* Fabricants Atmel, Microchip, Texas Instruments, NXP :
** Memòries EEPROM, Flaix.
** Sensors de temperatura.
** Conversors A/D i D/A.
** Controladors tàctils, controladors de pantalles gràfiques TFT.
** Controladors RF.

## Vegeu també

* Bus de dades
* Altres busos de comunicació sèrie : I²C, I²S, M-Bus, SMBus, MIDI, Modbus
* Busos de comunicació en paral·lel : IEEE 488, PXI (PCI eXtensions for Instrumentation), IEEE 1284, PCMCIA, PCI Express

## Referències

* ↑ «SPI Interface in embedded systems» (en anglès). eeherald. [Consulta: 7 febrer 2017].
* ↑ «SPI Background» (en anglès). totalphase. [Consulta: 11 febrer 2017].
* ↑ «SPI Interface - Tutorial» (en anglès). corelis. [Consulta: 7 febrer 2017].
* ↑ «Introduction to I²C and SPI protocols – Byte Paradigm – Speed up embedded system verification» (en anglès). byteparadigm. Arxivat de l'original el 2013-04-24. [Consulta: 7 febrer 2017].

## Enllaços externs

* Pàgina d'informació sobre busos Serial
* SPI Introducció amb diagrames
* SPI - PICmicro Serial Peripheral Interfície Microchip (company) tutorial on SPI. Anglès
* OpenCores Implementació Open Source de SPI escrita en Verilog; simpler MC68HC11 versió