SPI is een seriële bus standaard, die op populaire microcontrollers (zoals de MPC8260, M68HC11, AT89S8252,...,) beschikbaar is.
Het is een synchrone seriële full duplex data link. (Full duplex = data die in beide richtingen simultaan kan verzonden worden.)
Er is dus data-overdracht in beide richtingen mogelijk, maar de kloksignalen worden altijd gegenereed door het master-station.
Meestal zal de master de microcontroller zijn en de slave de periferie. De master bepaald met het kloksignaal de snelheid waarmee
de data overgedragen wordt, hier moet wel rekening gehouden worden met de maximale snelheid van de slave.
De master of de slave moeten zelf bepalen of de verkregen data al dan niet relevant is.
Figuur 1: Point to point verbinding (master <=> slave)
De bus gebruikt maximaal 4 draadverbindingen:
1) S(CLK) : kloklijn ('Serial Clock)
2) MOSI :Master data Output Slave data Input
3) MISO :Master data Input Slave data Output
4) SS of CS : Slave Select of Chip Select
SCLK : Met dit kloksignaal wordt het schuifregister van de slave bestuurd MOSI & MISO : De bits gaan serieel van de SO-uitgang ("Serial Out") van de master naar de SI-Ingang ("Serial In") van de slave.
In de slave worden deze bits ingeklokt in een schuifregister. Als de data-overdracht van een woord klaar is, worden de data door de slave verder
verwerkt vanaf de parallelle uitgang van het schuifregister. De overgedragen "woorden" kunnen zowel data als commando's zijn.
Als de slave op een ontvangen commando moet antwoorden, dan worden de databits van het antwoord klaargezet in een schuifregister. Onder besturing
de kloksignalen van de master worden deze bits daarna overgedragen van de SO- uitgang van de slave naar de SI- ingang van de master. Mocht de slave
geen specifieke gegevens terug willen sturen naar de master, dan worden gewoon de bits overgedragen die toevallig nog in het schuifregister aanwezig waren.
Er is hier dus sprake van dataoverdracht in beide richtingen. (Full duplex). SS of CS : De CS ("Chip Select") kan gebruikt worden om één van de slave stations te selecteren als er in het systeem meerdere slaves
aanwezig zijn (cascade schakeling Figuur 2).
Figuur 2: Cascade schakeling van slaves of een "Daisy Chain- configuratie (master <=> slaves)