Dark Mode

Sari la continut

Interfata seriala SPI

De la Wikipedia, enciclopedia libera
(Redirectionat de la Serial Peripheral Interface)
SPI bus: single master si single slave

Interfata seriala SPI (Serial Peripheral Interface) este o interfata sincrona standard de mare viteza, ce opereaza in mod full duplex. Numele ei a fost dat de Motorola. Ea e folosita ca sistem de magistrala seriala sincrona pentru transmiterea de date, unde circuitele digitale pot sa fie interconectate pe principiul master-slave. Aici, modul master/slave inseamna ca dispozitivul (circuitul) digital master initiaza cuvantul de date. Mai multe dispozitive (circuite) digitale slave sunt permise cu slave select individual, adica cu selectare individuala.

SPI-ul are patru semnale logice specifice.

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

Interfata SPI poate opera cu un singur dispozitiv master si unul sau mai multe dispozitive slave.

Daca un singur dispozitiv slave este utilizat, pinul pentru SS poate fi setat pe nivelul logic low ("jos") daca dispozitivul permite. Unele slave-uri necesita pentru selectie, "falling edge" (tranzitie de la nivelurile inalt/high - jos/low) al slave-select-ului pentru a initia o actiune, precum circuitul ADC (convertor analogic-digital) Maxim MAX1242, care incepe conversia la tranzitia respectiva. Cu multiple slave-uri, un semnal SS independent este necesar de la master pentru fiecare dispozitiv (circuit) digital slave.

Majoritatea dispozitivelor slave au trei stari logice (en. tri-state), asa ca semnalul MISO devine "deconectat" (iesire in gol) atunci cand dispozitivul nu este selectat. Dispozitivele fara trei stari logice nu pot imparti (nu pot participa la) magistrala SPI cu alte dispozitive; doar acele slave-uri pot comunica cu master-ul si doar daca au activat chip-selectul.

Transmisia de date

[modificare | modificare sursa]

Pentru a incepe comunicarea, master-ul mai intai configureaza ceasul, folosind o frecventa mai mica sau egala cu maximul frecventei suportata de slave. Aceste frecvente sunt de obicei in intervalul 1-70 MHz. Atunci master-ul seteaza slave select-ul pe nivelul 'jos' (en. low) pentru chip-ul dorit. Daca este necesara o perioada de asteptare (ca la conversia analog-digitala) atunci master-ul asteapta cel putin acea perioada de timp inainte de a incepe ciclurile de ceas.

In timpul fiecarui ciclu de ceas SPI, apare o transmisie full duplex:

  • master-ul trimite un bit pe linia MOSI; slave-ul il citeste de pe aceeasi linie;
  • slave-ul trimite un bit pe linia MISO; master-ul il citeste de pe aceeasi linie.

Nu toate transmisiile de date necesita toate aceste operatii (de ex. transmisia unidirectionala) desi acestea se petrec.

In mod normal, transmisia implica existenta a doi registri de date de o lungime oarecare a cuvantului, cum ar fi opt biti, unul situat in dispozitivul master si celalalt in dispozitivul slave; ei sunt conectati intr-o configuratie de tip inel. Informatia este de obicei transferata incepand cu cel mai semnificativ bit (eng: Most Significant Bit - MSB), si continuand bit cu bit pana se transfera si cel mai nesemnificativ bit (eng: Least Significant Bit - LSB) pentru acelasi registru. In aceasta faza putem afirma ca cele doua dispozitive master/slave si-au schimbat valorile din registri. Imediat dupa, fiecare dispozitiv citeste valoarea stocata in registrul de date si o prelucreaza, cum ar fi scrierea intr-o locatie de memorie. Daca mai sunt date de schimbat, registrii de schimb sunt incarcati cu noi date si procesul se repeta.

Transmisiile pot include un numar arbitrar de cicluri de ceas. Cand transmisia datelor s-a incheiat, master-ul opreste comutarea ceasului. In mod normal, are loc si deselectarea slave-ului prin intermediul liniei de selectie dedicate.

[modificare | modificare sursa]

Adesea transmisiile sunt de cuvinte a opt biti, si master-ul poate initia multiple transmisii daca are nevoie. Cu toate astea, alte marimi ale cuvantului sunt obisnuite, cum ar fi cuvinte de 16 biti pentru controller-ul de touch-screen sau codec-uri audio ca TSC2101 de la Texas Instruments sau cuvinte de 12 biti 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 transmita nimic pe linia MISO. Master-ul trebuie sa selecteze doar un slave la un moment dat.

Polaritatea si faza ceasului

[modificare | modificare sursa]

In plus fata de setarea frecventei ceasului, master-ul trebuie sa configureze polaritatea si faza ceasului respectand datele. Aceste doua optiuni au fost numite CPOL si CPHA in "Freescale's SPI Block Guide", iar cei mai multi 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 initiala a semnalului de tact este zero logic.
    • Pentru CPHA = 0, data este capturata pe tranzitia "jos" - "sus"', si este propagata pe tranzitia "sus" - "jos" a ceasului.
    • Pentru CPHA = 1, data este capturata pe tranzitia "sus" - "jos", si este propagata pe tranzitia "jos" - "sus" a ceasului.
  • La CPOL = 1, valoarea initiala a semnalului de tact este unu logic.
    • Pentru CPHA = 0, daca e capturata pe tranzitia "sus" - "jos" a ceasului si propagata pe tranzitia "jos" - "sus" a ceasului.
    • Pentru CPHA = 1, data e capturata pe tranzitia "jos" - "sus" si propagata pe tranzitia "sus" - "jos" a ceasului.

Cu valoarea CPHA = 0, data trebuie sa fie stabila o jumatate de ciclu inainte de primul ciclu de ceas. Pentru toate modurile CPOL si CPHA, valoarea initiala a ceasului trebuie sa fie stabila inainte ca cip-ul sa selecteze linia activa.

Legaturi externe

[modificare | modificare sursa]
Generale
Standarde
Stocare de date
Periferice
Dispozitive audio
Dispozitive mobile
Sisteme inglobate