Serial Peripheral Interface
Serial Peripheral Interface (SPI) is een synchrone seriële datalink tussen ten minste twee mediums. Er is in eerste instantie sprake van één master en één slave. De communicatie tussen de master en de slave gebeurt te allen tijde in full-duplex. De start van de communicatie gebeurt door de masterchip. Het is mogelijk om meerdere slaves te hebben, maar ze moeten dan ieder een aparte chipselect hebben. Er zijn altijd vier verbindingen voor communicatie nodig. Daarom spreken we van een four-wire serial bus.

Benaming
 SCLK: Seriële clock: wordt geleverd door de master.
 MOSI: Master output slave input: op deze lijn wordt de data verzonden die de output van de master en de input van de slave is.
 MISO: Master input slave output: de data van de slave wordt hierover naar de master gestuurd.
 : Slave select: Deze lijn wordt actief laag aangestuurd. De lijn voor de geselecteerde slave zal laag zijn. Wanneer de communicatie met de slave gedaan is, zal de lijn een logische 1 krijgen.

Configuratie
Meestal heeft iedere slave een eigen slave select-lijn, maar in sommige gevallen kunnen verschillende slaves in een keten (daisy-chain) zijn opgenomen, waarbij de MISO-poort van iedere slave is verbonden met de MOSI-poort van de eerstvolgende slave in de keten. De MISO-poort van de laatste slave in de keten is verbonden met de MISO-poort van de master. Alle slave select-poorten in de keten zijn met elkaar verbonden. Deze configuratie maakt individuele adressering overbodig, maar gaat ten koste van de datasnelheid.

Start communicatie
De communicatie start met het selecteren van een juiste kloksnelheid. Deze snelheid kan behoorlijk variëren van 1 MHz tot 100 MHz. De snelheid moet binnen het bereik van de master en de slave liggen. Het is mogelijk dat de master tegen grotere snelheid kan werken dan de slave maar het omgekeerde kan ook. 

Vervolgens zal op de juiste slave select-lijn een logische 0 gestuurd worden. Als er maar 1 chip (slave) is kan men deze lijn permanent op 0 houden. Het is mogelijk dat de chip pas werkt wanneer hij een edge (van hoog naar laag) detecteert. In dit geval mogen we de lijn niet op een logische 0 houden. Deze slave select hangt zeer nauw samen met het sturen van de klokpulsen. Sommige chips hebben een wachtperiode nodig vooraleer je de klokpulsen naar de slave mag sturen zoals een DAC of ADC.
Vervolgens zal er per klokcyclus een full-duplex signaal doorgestuurd worden. Namelijk zowel de master als de slave zullen een bit doorsturen. De master zal over de MOSI lijn sturen en de slave zal van deze lijn aflezen. Het omgekeerde zal op de MISO lijn gebeuren. De slave zal data sturen en de master zal van deze lijn aflezen. 
In vele gevallen wordt er gebruikgemaakt van schuifregisters. Meestal is de registergrootte 8 bits en wordt het minst significante bit eerst gestuurd maar dit is niet altijd het geval. Bij de MS5607-02BA01 Micro Altimeter Module, met LCP cap wordt een register van 24 bits gebruikt en het meest significante bit wordt als eerste gestuurd. Wanneer het complete register is doorgestuurd wordt de data verwerkt. Dit kan inhouden dat de data weggeschreven wordt naar het geheugen. Wanneer er meer data verstuurd moet worden zal de data ingeladen worden en start de communicatie weer vanaf het begin.

Voordelen
 Full-duplex
 Snellere communicatie dan bijvoorbeeld de I²C-bus
 Geen limiet aan woordgrootte
 Eenvoudige hardware
 Adressering niet nodig
 Geen aparte oscillator voor slave
 Laag energieverbruik
 Geen transceivers nodig
 Slechts vier pinnen nodig
 Eén pin per slave extra boven 1
 Kan zeer hoge kloksnelheden aan

Nadelen
 Meer pinnen nodig dan bij I²C
 Geen controle door de slave (master kan de klok vertragen, slave niet)
 Geen controle of er iets verbonden is
 Maximaal één master
 Geen foutcontrole
 Gevoelig voor ruis

Referenties
 SPI Block Guide V03.06

Computerterminologie