19.01.2026

Što je SPI?

What is SPI?

Table of contents

SPI komunikacijski protokol Slanje podataka Primanje podataka Konfiguracija više perifernih uređaja (odabir čipa) Prednosti i nedostaci SPI-ja Primjene u stvarnom životu
Table of contents
SPI komunikacijski protokol Slanje podataka Primanje podataka Konfiguracija više perifernih uređaja (odabir čipa) Prednosti i nedostaci SPI-ja Primjene u stvarnom životu

SPI komunikacijski protokol

SPI ili Serijsko periferno sučelje je sinkrono serijsko komunikacijsko sučelje koje se koristi za komunikaciju na kratkim udaljenostima. Uglavnom se koristi u ugrađenim sustavima za prijenos podataka s jednog uređaja na drugi. Od svog izlaska postao je standard u elektroničkoj zajednici i industriji.

SPI je full-duplex sučelje koje se koristi za komunikaciju između kontrolera i perifernog uređaja. To znači da oba uređaja mogu istovremeno slati podatke. SPI koristi zasebnu liniju takta za sinkronizaciju brzine kojom se prenose podatkovni bitovi. Podaci se sinkroniziraju na rastućem ili silaznom rubu takta. Dakle, SPI komunikacija se ne oslanja samo na jednu liniju podataka.

SPI veza ima četiri logička signala:

  • SCLK : Serijski takt (serijski takt)
  • MOSI : Glavni izlaz, Podređeni ulaz (izlaz podataka iz kontrolera)
  • MISO : Glavni ulaz, Podređeni izlaz (izlaz podataka s perifernog uređaja)
  • CS : Odabir čipa (odabire periferni uređaj s kojim želite komunicirati)

Jedna stvar koja nam se sviđa kod SPI-ja su nazivi MISO i MOSI za podatkovne linije, što olakšava razumijevanje koja linija šalje podatke, a koja ih prima.

Serijski takt se ponekad skraćeno označava kao CLK ili SCK. MOSI linija na upravljačkom uređaju spojena je na MOSI liniju na perifernom uređaju. Slično tome, MISO na kontroleru spojen je na MISO na perifernom uređaju. Za razliku od koncepta adresa u I2C-u, SPI koristi odabir čipa, liniju koja označava koja će periferna jedinica primati podatke . Dok neki komunikacijski protokoli mogu imati više kontrolera, SPI uvijek ima samo jedan kontroler (glavni) . Ako želite spojiti više kontrolera na sabirnicu, trebali biste koristiti drugačiji komunikacijski protokol.

Slanje podataka

Za početak novog prijenosa podataka, kontroler će prvo postaviti pin za odabir čipa iz visokog u niski nivo . Drugim riječima, iz logičke 1 u logičku 0. Nakon što je periferni uređaj odabran na ovaj način, kontroler će generirati takt i početi slati podatkovne signale. Radi pojednostavljenja, prvo ćemo se usredotočiti samo na jedan periferni uređaj.

Pošaljimo prvo slovo našeg imena putem SPI-ja. Kontroler će slati bitove podataka na rastućem ili padajućem rubu taktnog signala. Pojednostavnimo to za ovaj primjer i recimo da će koristiti rastuće rubove.

Veliko S u ASCII je 01010011. Budući da serijska komunikacija obično prvo šalje podatke s najmanje značajnim bitom (LSB), obrnut ćemo taj redoslijed da bismo dobili 11001010. Kada prijemnik (uređaj koji prima podatke) detektira rastući rub na taktu , pogledat će podatkovnu liniju (MOSI) kako bi pročitao informacijski bit.

Primanje podataka

Kada želiš poslati podatke s periferije na kontroler, koristi se zasebna MISO linija. Kao što i samo ime kaže, podaci idu “unutra” u kontroler, a “van” iz periferije. Podaci će se vratiti tijekom unaprijed određenog broja taktnih ciklusa. Kontroler mora unaprijed znati hoće li periferija vratiti neke podatke i koliko. Ako to ne zna, neće znati koliko taktnih signala treba poslati i dio podataka se može izgubiti.

Pogledajmo još jedan primjer. Ovaj put ćemo napraviti da periferija pošalje veliko slovo E kada primi podatke od kontrolera. Veliko slovo E u ASCII zapisu je 01000101, pa će se poslati kao 10100010. Kao što se vidi na slici ispod, kontroler će generirati dva taktna ciklusa. Tijekom prvog ciklusa kontroler će slati podatke, a periferija će biti neaktivna. Tijekom drugog ciklusa kontroler će biti neaktivan, a periferija će poslati podatke natrag.

Budući da je SPI full-duplex, to se moglo dogoditi istovremeno. Radi jednostavnije ilustracije, podijelili smo ovo kako bi bilo jasnije.

Konfiguracija više perifernih uređaja (odabir čipa)

Kao što je već spomenuto, više perifernih uređaja može se spojiti na jedan SPI kontroler. Za komunikaciju s perifernim uređajem, kontroler će ga odabrati omogućavanjem CS signala. Postoje dva načina za to: regularni način rada ili način lančanog povezivanja .

Redovni način rada

Prvo pogledajmo regularni način rada. Kontroler će imati po jednu SCLK, MOSI i MISO liniju, ali će imati više CS linija , ovisno o broju perifernih uređaja. Periferni uređaji ne mogu dijeliti istu CS liniju, svaki mora imati svoju.

Za slanje podataka određenom perifernom uređaju, kontroler mora omogućiti signal odabira čipa. To znači da će signal na CS liniji biti povućen na nisku razinu , dok će ostali ostati visoki. To, figurativno rečeno, uzrokuje da periferni uređaj pogleda podatke. Svi ostali će vidjeti da se podaci šalju, ali budući da su im signali na visokoj razini, neće ih pogledati.

Takt i podaci na MOSI/MISO linijama dostupni su samo odabranoj perifernoj jedinici. Ako je odabrano više perifernih jedinica (njihovi signali su na niskoj razini), podaci na MISO liniji bit će oštećeni. Kontroler neće moći utvrditi koja periferna jedinica šalje podatke.

Kako se povećava broj perifernih uređaja, raste i broj CS linija. To lako zauzima puno I/O pinova kontrolera i ograničava broj perifernih uređaja. Ovaj način rada žrtvuje broj perifernih uređaja koji se mogu spojiti radi brzine prijenosa podataka.

Lančano povezivanje

Drugi način rada je lančano povezivanje. U njemu, kontroler i sve periferne jedinice imaju po jednu SCLK, MOSI, MISO i CS liniju. Za razliku od redovnog načina rada, u lančanom načinu rada, jedna CS linija ide do svih spojenih perifernih uređaja .

Način rada započinje spajanjem MOSI linije na kontroleru s MOSI linijom na prvoj perifernoj jedinici. Svaka sljedeća periferna jedinica spaja svoju MISO liniju s MOSI linijom sljedeće periferne jedinice. Kada se dosegne posljednja spojena periferna jedinica, ona će spojiti svoju MISO liniju s MISO linijom na kontroleru. Nakon što se to dogodi, CS linija se podiže, što aktivira sve čipove istovremeno.

Kontroler će poslati sve podatke odjednom. Podaci će se preliti s jedne periferne jedinice na drugu . U osnovi, periferna jedinica će uzeti podatke i proslijediti ih susjednoj jedinici. Dakle, prvi poslani bit podataka završit će u posljednjoj perifernoj jedinici. Potrebno je poslati dovoljno podataka od početka da bi stigli do svih spojenih perifernih jedinica.

Zamislite to kao punjenje boce s vodom, gdje je voda podatak, a boca su periferni uređaji. Prvo se treba napuniti dno (u našem slučaju posljednji periferni uređaj). Posljednja stvar koja će se napuniti vodom bit će vrh boce (prvi periferni uređaj).

Ovaj način rada se obično koristi u sustavima samo s izlazom , gdje kontroler ne treba primati nikakve podatke natrag.

Lančano spajanje omogućuje spajanje više perifernih uređaja nego u uobičajenom načinu rada, ali na štetu brzine prijenosa podataka. Jedna stvar na koju treba paziti: ovaj način rada NE podržavaju svi SPI uređaji. Provjerite podatkovni list kako biste vidjeli možete li svoj uređaj spojiti na ovaj način.

Prednosti i nedostaci SPI-ja

Kao i svaki drugi komunikacijski protokol, SPI ima i prednosti i nedostatke. Sada kada znamo kako funkcionira, uzmimo u obzir te prednosti i nedostatke.

Prednosti:

  • Može imati više perifernih uređaja
  • Može se koristiti za komunikaciju s jednostavnim uređajima
  • Full duplex sučelje koje omogućuje bilateralnu komunikaciju
  • Brži od UART i I2C protokola
  • Takt definira brzinu prijenosa podataka, nije potrebna ručna specifikacija
  • Ne zahtijeva uokviravanje podataka

Nedostaci:

  • Može imati samo jedan kontroler
  • Koristi više pinova nego UART i I2C
  • Samo za kratke udaljenosti (manje od jednog metra)
  • Odabir čipa uklanja dodatne pinove s procesora
  • Obično su potrebne pojedinačne CS linije za svaki periferni uređaj.
  • Periferni uređaji ne mogu izravno međusobno komunicirati

Primjene u stvarnom životu

SPI je sveprisutan . Može se naći gotovo svugdje, od potrošačke elektronike do industrijske opreme, automobila, pa čak i zrakoplovnih motora. Omogućuje komunikaciju s jednostavnim uređajima. To je jedno od najčešće korištenih sučelja između mikrokontrolera i perifernih uređaja, kao što su senzori, otpornici za pomicanje, ADC-ovi, DAC-ovi, LCD-ovi, SD kartice i još mnogo toga.

U Solderedu dosta koristimo SPI. To je naš glavni komunikacijski protokol pri radu sa SD karticama. Razlog zašto biste trebali koristiti SPI u svojim projektima je brzina do 8 megabita u sekundi. Ponekad može ići i više od toga.

Povezani članci