SPI (Serial Peripheral Interface) este o interfața sincronă standard de mare viteză, ce operează în mod full duplex Ea e folosită ca sistem de magistrală serială sincronă pentru transmiterea de date, unde circuitele digitale pot să fie interconectate pe principiul master-slave. Dispozitivul cu rol de master este cel care controlează comunicația, iar dispozitivele de tip slave sunt cele care primesc comenzile de la master și le execută.
Protocolul SPI funcționează pe minim 4 pini:
Protocolul acesta se folosește pentru a stabili un canal de comunicare între cipuri aflate pe aceeași plăcuță, suportând o distanță maximă de câțiva centimetri până la deteriorarea semnalului.
Pentru a vă imagina mai ușor principiul de funcționare al acestui protocol, imaginea din stânga ajută la vizualizarea așezării componentelor funcționale ale protocolului.
Imaginați-vă că există două registre de șiftare care sunt legate în serie (formând o structură circulară), unul din registre aparținând dispozitivului master, iar celălalt aparținând dispozitivului slave.
La fel ca în imagine, în timp ce dispozitivul master "împinde" un byte pe linia MOSI, recepționează în registrul său de date byte-ul ce se afla în registrul de date al dispozitivului slave.
Single Slave: este cel mai simplu mod de conectare între dispozitive pe o magistrală SPI. Magistrala este folosită de un dispozitiv master și unul slave.
Așezarea dispozitivelor pe magistrală se face conform imaginii din dreapta.
Conform cu cele spuse mai sus, în stadiul Master to Slave există transfer de date și de la slave la master doar că depinde de caz dacă acele date ne interesează sau nu.
Multi Slave: Soluția prezentată în imaginea din stânga, arată potențialul acestei interfețe (abilitatea unui master de a controla mai multe dispozitive slave).
Din păcate, această configurație este limitată de numărul de pini digitali pe care suntem dispuși să îi folosim pe post de SS, fiecare pin SS fiind asociat unui dispozitiv de tip slave.
Daisy Chain: Această configurație ne ajută sa economisim pini digitali, dar doar dacă perifericele de tip slave suportă acest comportament (există cel puțin o valoare pe un byte pe care aceste dispozitive o ignoră).
Comunicarea de face trimițând un sir mai lung de date, comanda pentru dispozitivul de interes fiind plasată la locul potrivit, iar pe celelalte poziții de obicei avem valori care sunt ignorate de celelalte dispozitive de tip slave.
Această ultimă configurație mai este limitată și de lungimea maximă a cablurilor necesare pentru SCLK și SS.