Interfața serială SPI
Interfața seriala SPI (Serial Peripheral Interface) este o interfața sincronă standard de mare viteză, ce operează în mod full duplex. Numele ei a fost dat de Motorola. Ea e folosită ca sistem de magistrală serială sincronă pentru transmiterea de date, unde circuitele digitale pot să fie interconectate pe principiul master-slave. Aici, modul master/slave înseamnă că dispozitivul (circuitul) digital master inițiază cuvântul de date. Mai multe dispozitive (circuite) digitale slave sunt permise cu slave select individual, adică cu selectare individuală.
Interfața
modificareSPI-ul are patru semnale logice specifice.
- SCLK - Ceas serial (ieșire din master).
- MOSI/SIMO - Master Output, Slave Input (ieșire master, intrare slave).
- MISO/SOMI - Master Input, Slave Output (intrare master, iesire slave).
- SS - Slave Select (active low, ieșire din master).
Operare
modificareInterfața SPI poate opera cu un singur dispozitiv master și unul sau mai multe dispozitive slave.
Dacă un singur dispozitiv slave este utilizat, pinul pentru SS poate fi setat pe nivelul logic low ("jos") dacă dispozitivul permite. Unele slave-uri necesită pentru selecție, "falling edge" (tranziție de la nivelurile înalt/high → jos/low) al slave-select-ului pentru a iniția o acțiune, precum circuitul ADC (convertor analogic-digital) Maxim MAX1242, care începe conversia la tranziția respectivă. Cu multiple slave-uri, un semnal SS independent este necesar de la master pentru fiecare dispozitiv (circuit) digital slave.
Majoritatea dispozitivelor slave au trei stări logice (en. tri-state), așa că semnalul MISO devine "deconectat" (ieșire în gol) atunci când dispozitivul nu este selectat. Dispozitivele fără trei stări logice nu pot împărți (nu pot participa la) magistrala SPI cu alte dispozitive; doar acele slave-uri pot comunica cu master-ul și doar dacă au activat chip-selectul.
Transmisia de date
modificarePentru a începe comunicarea, master-ul mai întâi configurează ceasul, folosind o frecvență mai mică sau egală cu maximul frecvenței suportata de slave. Aceste frecvențe sunt de obicei în intervalul 1-70 MHz. Atunci master-ul setează slave select-ul pe nivelul 'jos' (en. low) pentru chip-ul dorit. Dacă este necesară o perioada de așteptare (ca la conversia analog-digitală) atunci master-ul așteaptă cel puțin acea perioadă de timp înainte de a începe ciclurile de ceas.
În timpul fiecărui ciclu de ceas SPI, apare o transmisie full duplex:
- master-ul trimite un bit pe linia MOSI; slave-ul îl citește de pe aceeași linie;
- slave-ul trimite un bit pe linia MISO; master-ul îl citește de pe aceeași linie.
Nu toate transmisiile de date necesita toate aceste operații (de ex. transmisia unidirecționala) deși acestea se petrec.
În mod normal, transmisia implică existența a doi regiștri de date de o lungime oarecare a cuvântului, cum ar fi opt biți, unul situat în dispozitivul master și celalalt în dispozitivul slave; ei sunt conectați într-o configurație de tip inel. Informația este de obicei transferată începând cu cel mai semnificativ bit (eng: Most Significant Bit - MSB), și continuând bit cu bit până se transferă și cel mai nesemnificativ bit (eng: Least Significant Bit - LSB) pentru același registru. În această fază putem afirma că cele două dispozitive master/slave și-au schimbat valorile din regiștri. Imediat după, fiecare dispozitiv citește valoarea stocată în registrul de date și o prelucrează, cum ar fi scrierea într-o locație de memorie. Dacă mai sunt date de schimbat, regiștrii de schimb sunt încărcați cu noi date și procesul se repetă.
Transmisiile pot include un număr arbitrar de cicluri de ceas. Când transmisia datelor s-a încheiat, master-ul oprește comutarea ceasului. În mod normal, are loc și deselectarea slave-ului prin intermediul liniei de selecție dedicate.
modificareAdesea transmisiile sunt de cuvinte a opt biți, și master-ul poate iniția multiple transmisii dacă are nevoie. Cu toate astea, alte mărimi ale cuvântului sunt obișnuite, cum ar fi cuvinte de 16 biți pentru controller-ul de touch-screen sau codec-uri audio ca TSC2101 de la Texas Instruments sau cuvinte de 12 biți pentru diverse convertoare digitale-analog sau convertoare analog-digitale.
Fiecare slave de pe magistrala care nu a fost activat folosind slave select-ul aferent, nu trebuie să ia în considerare semnalul de ceas precum și datele de pe linia MOSI și să nu transmită nimic pe linia MISO. Master-ul trebuie să selecteze doar un slave la un moment dat.
Polaritatea și faza ceasului
modificareÎn plus față de setarea frecvenței ceasului, master-ul trebuie să configureze polaritatea și faza ceasului respectând datele. Aceste două opțiuni au fost numite CPOL și CPHA în "Freescale's SPI Block Guide", iar cei mai mulți producători le-au adoptat.
Diagrama de timp este afișată în dreapta. Timpul este descris mai jos și se aplică atât dispozitivelor master, cât și celor slave.
- La CPOL = 0, valoarea inițială a semnalului de tact este zero logic.
- Pentru CPHA = 0, data este capturată pe tranziția "jos" → "sus"', și este propagată pe tranziția "sus" → "jos" a ceasului.
- Pentru CPHA = 1, data este capturată pe tranziția "sus" → "jos", și este propagată pe tranziția "jos" → "sus" a ceasului.
- La CPOL = 1, valoarea inițială a semnalului de tact este unu logic.
- Pentru CPHA = 0, dacă e capturată pe tranziția "sus" → "jos" a ceasului și propagată pe tranziția "jos" → "sus" a ceasului.
- Pentru CPHA = 1, dată e capturată pe tranziția "jos" → "sus" și propagată pe tranziția "sus" → "jos" a ceasului.
Cu valoarea CPHA = 0, data trebuie să fie stabilă o jumătate de ciclu înainte de primul ciclu de ceas. Pentru toate modurile CPOL și CPHA, valoarea inițială a ceasului trebuie să fie stabilă înainte ca cip-ul să selecteze linia activă.