Interfața serială SPI

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
SPI bus: single master și single slave

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[modificare | modificare sursă]

SPI-ul are patru semnale logice specifice.

  • SCLK - Ceas serial (ieșire din master)
  • MOSI/SIMO - Master Output, Slave Input (ieșire din master)
  • MISO/SOMI - Master Input, Slave Output (ieșire din slave)
  • SS - Slave Select (active low, ieșire din master)

Operare[modificare | modificare sursă]

Interfaț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 nivelele înaltă/high→joasă/low) al slave-selectului 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[modificare | modificare sursă]

Pentru 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 il citește de pe aceeași linie
  • slave-ul trimite un bit pe linia MISO; master-ul il 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.

In mod normal, transmisia implica existenta a doi regiștrii de date de o lungime a 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 transferata începând cu cel mai semnificativ bit (eng: Most Significant Bit - MSB), si continuând bit cu bit pana se transfera si cel mai nesemnificativ bit (eng: Least Significant Bit - LSB) pentru același registru. In aceasta faza, putem afirma ca cele doua dispozitive master/slave și-au schimbat valorile din regiștrii. Imediat dupa, fiecare dispozitiv citește valoarea stocata în registrul de date și o prelucrează, cum ar fi scrierea într-o locatie de memorie. Daca mai sunt date de schimbat, regiștrii de schimb sunt încărcați cu noi date și procesul se repeta.

Transmisiile pot include un număr arbitrar de cicluri de ceas. Când transmisia datelor s-a încheiat, master-ul oprește comutarea ceasului. In mod normal, are loc si deselectarea slave-ul prin intermediul liniei de selecție dedicate.

Adesea transmisiile sunt de cuvinte a opt biți, si 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 sa ia in considerare semnalul de ceas precum si datele de pe linia MOSI si sa nu transmită nimic pe linia MISO. Master-ul trebuie sa selecteze doar un slave la un moment dat.

Polaritatea si faza ceasului[modificare | modificare sursă]

In plus fața de setarea frecvenței ceasului, master-ul trebuie sa configureze polaritatea si faza ceasului respectand datele. Aceste doua opțiuni a fost numite CPOL si CPHA in "Freescale's SPI Block Guide", iar cei mai mulți producatori le-au adoptat.

Diagrama de timp este afisata in dreapta. Timpul este descris mai jos si se aplica atat dispozitivelor master cat si celor slave.

  • La CPOL=0, valoarea inițiala a ceasului este zero logic
    • Pentru CPHA=0 data este capturată pe tranziția "jos→sus" si este propagată pe tranziția "sus→jos" a ceasului.
    • Pentru CPHA=1, data e capturată pe tranziția "sus→jos" si propagată pe tranziția "jos→sus" a ceasului.
  • La CPOL=1, valoarea inițiala a ceasului este unu logic
    • Pentru CPHA=0 daca e capturată pe tranziția "sus→jos" a ceasului si propagată pe tranziția "jos→sus" a ceasului.
    • Pentru CPHA=1 data e capturată pe tranziția "jos→sus" si propagată pe tranziția "sus→jos" a ceasului.

Cu valoarea CPHA=0 data trebuie sa fie stabilă o jumatate de ciclu inainte de primul ciclu de ceas. Pentru toate modurile CPOL si CPHA, valoarea initială a ceasului trebuie să fie stabilă inainte ca chipul să selecteze linia activă.

Note[modificare | modificare sursă]

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]