Interfață periferică în serie

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Bus SPI: conexiuni între un master și un singur slave
Detaliu hardware în comunicarea dintre master și un singur slave în care puteți vedea prezența unui buffer circular de 8 biți

Serial Peripheral Interface sau SPI (pronunțat: esse pi i sau spi ), în informatică , indică un sistem de comunicații seriale între un microcontroler și alte circuite integrate sau între mai multe microcontrolere.

Descriere

Este o magistrală de comunicație standard proiectată de Motorola și dezvoltată, într-o variantă, și de National Semiconductor sub denumirea de magistrală Microwire TM . Transmiterea are loc între un dispozitiv numit master și unul sau mai mulți sclavi (literalmente de la stăpânul și sclavul englez). Maestrul controlează autobuzul, emite semnalul ceasului , decide când să pornească și să oprească comunicarea [1] .

În ceea ce privește viteza de schimb de date, în practică frecvența ceasului, nu există o limită minimă, deoarece dispozitivele sunt statice și pot menține o stare logică dacă sunt alimentate pentru o perioadă nedeterminată. Cu toate acestea, există o limită maximă care trebuie determinată de fișele tehnice ale dispozitivelor conectate individuale și de numărul acestora, deoarece fiecare dispozitiv conectat la magistrală introduce o capacitate parazită pe liniile de comunicație. Sistemul de comunicație este de obicei utilizat pentru a face schimb de date între dispozitivele montate „pe același card electronic” sau, în orice caz, între cardurile electronice apropiate unele de altele, deoarece nu necesită anumite dispozitive hardware pentru a transfera informații între dispozitivele îndepărtate conectate cu cabluri subiect. la tulburări . Sistemul este de obicei definit ca un sistem cu patru fire, ceea ce înseamnă că liniile de conectare care transportă semnalele sunt în general patru. În orice caz, există o conexiune de referință ( 0 Vcc frecvent și necorespunzător indicată cu GND ) și, prin urmare, fizic există cinci fire. Același lucru se poate spune despre alte magistrale seriale definite ca două fire ( I²C ) sau un singur fir, întrucât sunt luate în considerare doar liniile de semnal și este implicită conexiunea de referință.

Tipuri

Autobuzul SPI este definit ca:

  • tip serial ;
  • sincron datorită prezenței unui ceas care coordonează transmisia și recepția biților unici și determină viteza de transmisie;
  • full-duplex, deoarece „conversația” poate avea loc simultan în transmisie și recepție.

Semnalele

Se bazează pe 4 semnale. Sunt afișate numele semnalelor care pot varia în funcție de producător. Consultați fișa tehnică a componentei pe care intenționați să o utilizați dacă aveți dubii:

  • SCLK - SCK: S erial Cl oc k (emis de comandant)
  • SDI - MISO - SOMI - DI - SO: S erial D ata I nput, M aster I nput S lave O utput (intrare pentru master și ieșire pentru slave)
  • SDO - MOSI - SIMO - DO - SI: S erial D ata O utput, M aster O utput S lave I nput (ieșire de la master)
  • CS - SS - nCS - nSS - STE: C hip S elect, S lave S elect, emis de comandant pentru a alege cu ce dispozitiv sclav dorește să comunice (din figură, semnalul SS refuzat, se înțelege că pentru a comunica cu dispozitivul slave trebuie pus la un nivel logic scăzut)

Dintre acestea, Chip Select (CS sau SS) nu este indispensabil în toate aplicațiile.

Este ușor să vă confundați cu numele adesea ambigue pe semnalele de transfer de date (intrări și ieșiri). În orice caz, consultarea fișelor tehnice ale dispozitivelor alese ar trebui să clarifice orice îndoieli. Denumirile MOSI (Master Output Slave Input), MISO (Master Input Slave Output) par a fi cele care implică o mai mică neînțelegere. Semnalul SCLK este ceasul serial care scanează momentele de emisie și citire a biților de pe liniile de date. Este un semnal emis de comandant și, prin urmare, acesta din urmă solicită din când în când transmiterea unui „cuvânt” [2] . Semnalul SDI / MISO este linia prin care dispozitivul (master sau slave) primește datele seriale emise de omolog. Pe aceeași față de comutare a ceasului, dispozitivul emite ieșirea la aceeași rată, plasând datele pe linia SDO / MOSI (linia de ieșire a datelor).

În dispozitivele slave controlate individual

Exemplu de conexiune directă între un maestru și trei sclavi controlați individual

Avantaje: Comunicare mai rapidă între stăpân și sclavi individuali.
Dezavantaje: trebuie să aveți un pin SS pentru fiecare dispozitiv sclav.
Linia CS este dedicată activării dispozitivului slave de către comandant, care poate permite transmiterea oricărui dispozitiv slave conectat. Linia CS, activă în mod normal scăzută, în caz de dezactivare (nivel logic ridicat) părăsește dispozitivul sclav cu ieșire cu impedanță ridicată și, prin urmare, complet izolat de magistrală, indiferent de existența semnalului de ceas. Numărul de dispozitive slave care pot fi conectate la magistrală este limitat exclusiv de numărul de linii posibile de selectare a cipurilor care pot fi gestionate de dispozitivul principal. Frecvența ceasului și, în consecință, viteza autobuzului, pot atinge, cu acest standard, chiar și niveluri ridicate în ordinea zecilor de MHz și chiar mai mult.

În dispozitivele slave cu lanțuri de margaretă

Master conectat la trei sclavi conectați conform terminologiei comune în lanțul Daisy (ieșirea unui dispozitiv conectat la intrarea dispozitivului următor din lanț)

Avantaje: utilizarea unui singur pin pentru a selecta dispozitivele.
Dezavantaje: rata mai mică de actualizare a sclavilor individuali, eșecul unui element poate provoca întreruperea semnalului în alte dispozitive.
În acest caz, linia SS este utilizată pentru a indica sclavilor când trebuie să probeze datele prezente în registru: masterul injectează biții de pe linia MOSI, începând de la bitul cel mai semnificativ pentru a fi trimis ultimului slave. Procedând astfel, odată ce toți biții destinați tuturor sclavilor din această secvență au fost transmiși, poate semnaliza sclavilor că datele aflate în posesia lor în registrul de comunicații sunt de fapt cele destinate lor. Dacă Slave Select ar fi conectat, de exemplu, fixat la masă, sclavii nu ar fi în măsură să știe dacă datele prezente în registrul lor de comunicare sunt complete și dacă vor fi eșantionate, sau poate destinate unui slave ulterior, sau nu sunt aliniate la dimensiunea registrului în sine. În această configurație este imposibil să aveți un conflict pe linia MOSI a masterului, spre deosebire de ceea ce s-ar întâmpla în conexiunea dispozitivelor slave controlate individual, în cazul în care posibila activare a mai multor sclavi ar crea un conflict pe linia MISO, creând probleme în comunicare. În plus, utilizarea dispozitivelor cu ieșiri conflictuale nu ajută la fiabilitatea lor în timp.

Comunicarea

Transmiterea datelor pe magistrala SPI se bazează pe funcționarea registrelor de schimbare . Fiecare dispozitiv, master sau slave, este echipat cu un registru de schimb intern al cărui biți sunt emiși și introduși simultan, respectiv prin ieșirea SDO / MOSI și intrarea SDI / MISO. Registrul poate avea dimensiuni arbitrare, dar același pentru dispozitivele master și slave și are de obicei dimensiunea de 8 biți . Registrul de schimbare este o interfață completă prin care sunt date și transmise comenzi care ajung în modul serial și care sunt colectate intern, la sfârșitul transmisiei, în modul paralel.

La fiecare impuls de ceas, dispozitivele care comunică pe liniile de autobuz emit un pic din registrul lor intern, înlocuindu-l cu un bit emis de celălalt interlocutor. Sincronizarea se face pe marginile ceasului în creștere sau în scădere reglate de 2 parametri setabili: CPOL și CPHA. CPOL reglează polaritatea ceasului, adică discriminează starea normală de repaus în care este adusă linia ceasului atunci când nu este activă. Când CPOL este setat la 0, ceasul, în starea sa inactivă, merge la un nivel logic scăzut; invers, ceasul trece la un nivel logic ridicat în timpul inactivității dacă CPOL este setat la 1. CPHA reglează faza ceasului, adică marginea ceasului în care receptorul eșantionează semnalul de intrare. Dacă CPOL = 0 atunci cu CPHA putem alege să prelevăm date pe marginea ascendentă a semnalului de ceas, setând CPHA = 0 sau pe marginea descendentă, setând CPHA la 1. Inversul se întâmplă dacă CPOL este setat la 1.

Diagrama de sincronizare a semnalului care ilustrează polaritatea posibilă a ceasului și a fazelor datelor seriale. Comunicarea afișată este de 8 biți („Z” indică starea de impedanță ridicată )

În general, aceste opțiuni pot fi setate pe dispozitivul master și permit adaptarea acestuia la toate variantele posibile de dispozitive slave care sunt proiectate în mod normal pentru a avea unul dintre cele 4 moduri de comunicare posibile (toate combinațiile de CPOL și CPHA). Modurile de operare cele mai des utilizate de dispozitivele de pe piață sunt cele cu CPHA = CPOL = 0 și cu CPHA = CPOL = 1. Datele de ieșire sunt întotdeauna transmise la prima tranziție de ceas. Comunicarea se realizează întotdeauna la inițiativa dispozitivului master, care permite sclavului prin CS și ulterior impune ceasul pe linia dedicată. Cu această procedură, începe schimbul de biți între cele două registre. La sfârșitul fiecărui cuvânt transmis, conținutul registrului de sclavi va fi transmis către comandant și invers. Cu cuvinte de identificare adecvate, comenzile pot fi trimise dispozitivului receptor care poate efectua procesarea atribuită, plasând astfel datele solicitate în registrul său de schimbare care va fi transmis solicitantului la următorul ciclu de transmisie.

Multe microcontrolere au hardware dedicat pentru gestionarea SPI programabilă în detaliu. Acest lucru nu este strict necesar pentru a putea comunica cu un dispozitiv slave SPI, cum ar fi o memorie EEPROM : în orice caz, este posibil să implementați funcții dedicate interviului în firmware, care pot fi mai lente și ocupă mai mult spațiu în firmware - ul decât cele disponibile cu un bloc hardware dedicat, dar care, în orice caz, vă va permite să comunicați eficient cu perifericul SPI, deoarece nu există o limită maximă de timp care să fie respectată în sincronizarea datelor. De fapt, acestea sunt dispozitive statice, care, prin urmare, pot suspenda comunicarea la nesfârșit fără a pierde date: doar viteza lor maximă de transmisie este limitată și pot funcționa și la o viteză foarte mică comparativ cu cea maximă.

Notă

  1. ^ Masterul trebuie să fie unic, dar calificarea de master poate fi schimbată între diferite dispozitive conectate la magistrală (atâta timp cât sunt capabili să facă acest lucru, adică nu s-au născut ca simpli sclavi)
  2. ^ Poate fi selectabil să comunici cu un octet (8 biți) sau mai mult (16 biți). De obicei primul bit transmis este cel mai semnificativ .

Elemente conexe

Alte autobuze seriale

  • I²C - Autobuz cu trei fire: două fire de semnal (linia de ceas și linia de date bidirecțională) și o referință comună. Denumit în mod obișnuit serial cu două fire.
  • S / PDIF , AES / EBU - Standard utilizat în câmpul audio.
  • EIA RS-485 - Standard industrial semi-duplex cu două fire .
  • EIA RS-422 - Standard industrial cu patru fire, full-duplex.
  • Controler Area Network - Standard numit CAN bus . Născut pentru mediul auto (vehicule mobile) este utilizat și în mediul industrial pentru imunitatea sa la perturbări.
  • USB - Standard pentru interfața perifericelor cu computerele.
  • EIA RS-232 - Standard folosit în trecut pe computere și de la începutul secolului 21 retrogradat în zone specifice. Adesea realizat într-un mod simplificat folosind doar trei fire: două linii de semnal (transmisie și recepție) și o referință comună.
  • MIDI - Standard utilizat în domeniul instrumentelor muzicale electronice.

Alte proiecte

linkuri externe