close

Interfață periferică serială

Mergi la navigare Mergi la căutare
Image
Dispozitivele Master (Master) și Slave (Slave) ale interfeței SPI

SPI ( Interfață periferică serială engleză  , magistrală SPI  - interfață periferică serială, magistrală SPI) este un standard de transfer de date sincron serial în modul full duplex , conceput pentru a oferi interfațare simplă și ieftină de mare viteză a microcontrolerelor și perifericelor. SPI este uneori denumit și o interfață cu patru fire . 

Spre deosebire de un port serial standard  , SPI este o interfață sincronă în care orice transmisie este sincronizată cu un semnal de ceas comun generat de gazdă (procesor). Perifericul de recepție (slave) sincronizează recepția secvenței de biți cu semnalul de ceas. Mai multe circuite integrate pot fi conectate la o singură interfață periferică serială a unui circuit integrat principal. Maestrul selectează slave pentru transmisie activând semnalul de selectare a cipului pe cipul slave . Perifericele care nu sunt selectate de procesor nu participă la transferul SPI.  

Interfață

SPI utilizează patru semnale digitale:

  • MOSI - ieșire master, intrare slave ( în engleză  Master Out Slave In ). Folosit pentru a transfera date de la master la slave.
  • MISO - intrare master, ieșire slave ( în engleză  Master In Slave Out ). Servește pentru a transfera date de la slave la master.
  • SCLK sau SCK este un semnal de ceas serial ( Serial Clock ) .  Servește la transmiterea unui semnal de ceas pentru dispozitivele slave.
  • CS sau SS  - selecție cip, selecție slave ( în engleză  Chip Select, Slave Select ).

Numele specifice ale porturilor de interfață SPI pot varia în funcție de producătorul hardware, dar sunt posibile următoarele opțiuni:

  • MISO : SOMI, SDO (pe dispozitiv), DO, DON, SO, MRSR;
  • MOSI : SIMO, SDI (pe dispozitiv), DI, DIN, SI, MTST;
  • SCLK : SCK, CLK, SPC (SPI serial port clock);
  • SS : nCS, CS , CSB , CSN , NSS, nSS, STE , SYNC .

Sincronizare în SPI

Intervalele de biți din liniile de date sunt determinate de semnalul de ceas SCK generat de master, dispozitivele slave folosesc semnalul de ceas pentru a determina când se schimbă biții de pe linia de date, în timp ce dispozitivele slave nu pot influența în niciun fel intervalele de biți. Atât master-ul cât și slave au un contor de impulsuri de ceas (biți). Contorul din dispozitivul slave îi permite acestuia din urmă să determine când s-a încheiat transmisia pachetului. Contorul este resetat atunci când subsistemul SPI este oprit, care este întotdeauna disponibil în master. În slave, contorul este de obicei resetat prin dezactivarea semnalului de interfață SS .

Deoarece acțiunile master și slave sunt tactate de același semnal, nu există cerințe pentru stabilitatea acestui semnal, cu excepția limitării duratei semiciclurilor, care este determinată de frecvența maximă de funcționare a dispozitivului mai lent. . Acest lucru permite SPI să fie utilizat în sisteme cu viteze de ceas stabile scăzute și, de asemenea, facilitează emularea software a masterului.

Primirea și transmiterea datelor în SPI

Image
Structura tipică a conexiunilor și liniilor interfeței SPI

Transmiterea se face în loturi. Lungimea pachetului este de obicei de 1 octet (8 biți), în timp ce implementările SPI sunt cunoscute cu alte lungimi de pachet, cum ar fi 4 biți. Dispozitivul master inițiază un ciclu de comunicare trăgând jos pinul de selectare slave ( SS ) al dispozitivului la care trebuie conectat. Când semnalul SS este scăzut :

  • circuitul slave este în stare activă;
  • pinul MISO este pus în modul „ieșire”;
  • ceasul SCLK de la master este detectat de slave și face ca intrarea MOSI să citească valorile transmise de la master și să schimbe registrul slave.

Datele master și slave care urmează să fie transmise sunt plasate în registre de deplasare. După aceea, dispozitivul principal începe să genereze impulsuri de ceas pe linia SCLK, ceea ce duce la un schimb reciproc de date. Datele sunt transmise bit cu bit de la master pe linia MOSI și de la slave pe linia MISO. Transmisia se realizează, de regulă, începând cu cei mai importanți biți, dar unii producători permit schimbarea ordinii de transmitere a biților prin metode software. După transmiterea fiecărui pachet de date, dispozitivul master poate pune linia SS într-o stare ridicată pentru a sincroniza dispozitivul slave.

Moduri de interfață SPI

Image
Diagrame de timp ale funcționării interfeței SPI:
Când CPHA = 0, o linie verticală roșie
Când CPHA = 1, o linie verticală albastră

Sunt posibile patru moduri de sincronizare. Modul este determinat de combinația biților CPHA și CPOL:

  • CPOL = 0 - starea inițială a semnalului de sincronizare - nivel scăzut;
  • CPOL = 1 - starea inițială a semnalului de sincronizare -- nivel înalt;
  • CPHA = 0 - datele sunt eșantionate pe frontul de creștere (comutație) a semnalului de sincronizare. Adică prin trecerea de la principal la opusul acestuia;
  • CPHA = 1 - datele sunt eșantionate pe marginea de fugă (comutație) a semnalului de sincronizare. Adică, prin trecerea înapoi la principal de la opus;

Următoarea convenție a fost adoptată pentru a desemna modurile de operare ale interfeței SPI:

  • modul 0 (CPOL = 0, CPHA = 0);
  • modul 1 (CPOL = 0, CPHA = 1);
  • modul 2 (CPOL = 1, CPHA = 0);
  • modul 3 (CPOL = 1, CPHA = 1).

Topologia sistemelor de comunicații bazate pe SPI

În cel mai simplu caz, un singur dispozitiv slave este conectat la dispozitivul master și este necesară o comunicare bidirecțională. În acest caz, se utilizează o schemă de conectare cu trei fire. Interfața SPI vă permite să conectați mai multe dispozitive slave la un dispozitiv master, iar conexiunea se poate face în mai multe moduri.

Image
Structură de comunicare radială cu mai multe slave prin SPI

Prima metodă vă permite să implementați o structură de comunicare radială (topologie stea), este considerată a fi principala modalitate de a conecta mai multe dispozitive slave. În acest caz, pentru a comunica cu mai mult de un slave, masterul trebuie să genereze un număr adecvat de semnale de selectare a slave ( SS ). Când se comunică cu un slave, semnalul SS corespunzător este setat în starea activă (scăzută), în timp ce toate celelalte semnale SS sunt în starea inactivă (înaltă). Pinii de date MISO ai dispozitivelor slave sunt conectați în paralel, în timp ce sunt într-o stare inactivă, iar înainte de începerea schimbului, una dintre ieșirile (a dispozitivului slave selectat) intră în modul activ.

Image
Comunicare cu structură de inel cu mai multe slave prin SPI

A doua metodă vă permite să implementați o structură de conexiune de tip „ring”. În acest caz, un semnal SS este utilizat pentru a activa mai multe dispozitive slave în același timp , iar ieșirile de date ale tuturor dispozitivelor sunt conectate în serie și formează un circuit închis. Când un pachet este transmis de la un master, acel pachet este primit de primul slave, care la rândul său transmite pachetul său către următorul slave și așa mai departe. Pentru ca un pachet de la master să ajungă la un anumit slave, masterul trebuie să mai trimită câteva pachete.

Avantajele și dezavantajele interfeței SPI

Beneficii

  • Transmisie full duplex în mod implicit.
  • Debit mai mare decât I²C sau SMBus .
  • Posibilitatea alegerii arbitrare a lungimii pachetului, lungimea pachetului nu este limitată la opt biți.
  • Ușurința implementării hardware:
    • cerințe de putere mai mici în comparație cu I²C și SMBus ;
    • este posibilă utilizarea în sisteme cu frecvență de ceas stabilă scăzută;
    • Dispozitivele slave nu au nevoie de o adresă unică, spre deosebire de interfețele precum I²C , GPIB sau SCSI .
  • Sunt utilizați doar patru pini, ceea ce este mult mai puțin decât pentru interfețele paralele.
  • Natura unidirecțională a semnalelor permite, dacă este necesar, organizarea cu ușurință a izolației galvanice între dispozitivele master și slave.
  • Frecvența maximă de ceas este limitată doar de viteza dispozitivelor implicate în schimbul de date.

Dezavantaje

  • Sunt necesari mai mulți pini decât pentru interfața I²C .
  • Dispozitivul slave nu poate controla fluxul de date.
  • Nu există nicio confirmare de primire a datelor de la dispozitivul slave (dispozitivul master poate transmite date „nicăieri”).
  • Nu există un protocol de detectare a erorilor definit standard.
  • Absența unui standard oficial, care face imposibilă certificarea dispozitivelor.
  • În ceea ce privește domeniul de transmisie a datelor, interfața SPI este inferioară standardelor precum UART și CAN .
  • Prezența multor opțiuni pentru implementarea interfeței.
  • Lipsa suportului pentru dispozitivele de conectare la cald.

Un exemplu de implementare software

Mai jos este un exemplu de implementare software a masterului SPI în limbajul C. Linia CS (selectare cip, selectare cip) trebuie activată (în cele mai multe cazuri, trasă la jos) înainte de începerea schimbului de date și dezactivată după finalizarea schimbului. Majoritatea dispozitivelor necesită mai multe sesiuni de transmisie cu o linie CS activă . Această funcție poate fi apelată de mai multe ori în timp ce linia este activă.

caracter nesemnat SPIBitBang8BitsMode0 ( octet caracter nesemnat )    
{ unsigned char bit ;       
      

    pentru ( bit = 0 ; bit < 8 ; bit ++ ) {        
        /* scrie MOSI pe marginea descendentă a ceasului precedent */
        dacă ( octet și 0x80 )   
            SETMOSI ();
        altfel
            CLRMOSI ();
        octet <<= 1 ;  

        /* așteptați o jumătate de ceas înainte de a genera o margine ascendentă */
        SPIDELAY ( SPISPEED / 2 );
        SETCLK ();

        /* așteptați o jumătate de ceas înainte de a genera o scădere */
        SPIDELAY ( SPISPEED / 2 );

        /* citește MISO în declin */
        octet |= READMISO ();  
        CLRCLK ();
    }

    octet de returnare ; 
}

Vezi și

Literatură

  • Ball Stewart R. Interfețe analogice ale microcontrolerelor. — M. : Dodeka-XXI, 2007. — 360 p. — (Sisteme programabile). - 2000 de exemplare.  — ISBN 978-5-94120-142-6 .
  • Lapin A.A. interfețe. Alegerea și implementarea. - M . : Technosfera, 2005. - 168 p. — (Lumea electronicii). - 5000 de exemplare.  — ISBN 5-94836-058-X .

Link -uri