You are on page 1of 3

SPI serijska komunikacija i mikrokontrolerski interfejs

Slično kao i IIC komunikacija i SPI (Serial Peripheral Interface) služi za povezivanje različitih komponeti, senzora
i drugih mikrokontrolera koji podržavaju ovakav vid komunikacije. Zbog toga mikrokontroleri su opremljeni
jednim interfejsom koji se zove MSSP( Master Synchronous Serial Port) koji može raditi u dva moda SPI i IIC
modu. Za komunikaciju uređaja i komponenti u SPI modu koriste se tri linije (a nekada i četiri).

Kod mikrokontrolera 18F45K22 SPI režim omogućava prenos 8 bitova podatakai oni se prenose i primaju
istovremeno koristeći 3 ulazno/izlazne linije:

SDO - Serial Data Out - linija za prenos;

SDI - Serial Data In - prijemna linija; i

SCK - Serial Clock - linija za sinhronizaciju.

Osim ove tri linije, postoji i četvrta linija (SS) koja se može koristiti ako mikrokontroler razmenjuje podatke sa
više perifernih uređaja (komunikacija vise mikrokontrolera). SS - Slave Select - je dodatni pin koji se koristi za
izbor određenog uređaja. Aktivan je samo kada je mikrokontroler u slave režimu, odnosno kada spoljašnji
master uređaj zahteva razmenu podataka.
Kada radi u SPI režimu, MSSP modul koristi ukupno 4 registra:

SSPSTAT - statusni registar

SSPCON - kontrolni registar

SSPBUF - bafer registar

SSPSR - registar pomeranja (nije direktno dostupan)

Prva tri registra služe za upisivanje /čitanje i mogu se promeniti u bilo kom trenutku, dok se četvrti registar,
pošto nije dostupan, koristi za konvertovanje podataka u „serijski“ format.

Kao što se vidi na slici ispod, centralni deo SPI modula se sastoji od dva registra povezana na pinove za prijem,
prenos i sinhronizaciju.

Shift registar (SSPRS) je direktno povezan sa pinovima mikrokontrolera i koristi se za prenos podataka u
serijskom formatu. SSPRS registar ima svoj ulaz i izlaz tako da pomera podatke u i iz uređaja. Drugim rečima,
svaki bit koji se pojavljuje na ulazu (prijemnoj liniji) istovremeno pomera drugi bit prema izlazu (prenosnoj
liniji). SSPBUF registar (Buffer) je deo memorije koji se koristi za privremeno čuvanje podataka pre slanja ili
neposredno nakon prijema. Nakon što je primljeno svih 8 bitova podataka, bajt se premešta iz SSPRS u SSPBUF
registar. Ovo dvostruko baferovanje primljenih podataka (SSPBUF) omogućava sledećem bajtu da započne
prijem pre čitanja podataka koji su upravo primljeni. Svako upisivanje u SSPBUF registar tokom
prenosa/prijema podataka biće zanemareno. Sa stanovišta programera, ovaj registar se smatra najvažnijim jer
mu se najčešće pristupa. Pri prenosu podataka preko SPI-a zapravo dolazi do upisivanja i čitanja podataka iz
ovog registra.

Pri inicijalizaciji SPI, potrebno je podesiti:


 Master mod TRISC.3=0 (SCK pin je izlaz takta);
 Slave režim TRISC.3=1 (SCK pin je ulaz takta);
 Faza unosa podataka - unos na sredini ili na silaznoj ivici takta (SMP bit registra SSPSTAT);
 Ivica takta (CKE bit registra SSPSTAT);
 Brzina prenosa, bitovi SSPM3-SSPM0 registra SSPCON (samo u Master režimu);
 Slave mod , bitovi SSPM3-SSPM0 registra SSPCON (samo u Slave režimu).
Modul počinje da radi setovanjem bita SSPEN.
Korak 1. Podaci koji se prenose treba da budu upisani u registar
bafera SSPBUF. Ako SPI modul radi u Master režimu,
mikrokontroler će automatski izvršiti sledeće korake 2, 3 i 4. Ako
SPI modul radi kao Slave, mikrokontroler neće izvršiti ove korake
sve dok SCK pin ne otkrije signal takta.
Korak 2. Podaci su sada premešteni u SSPSR registar i SSPBUF
registar nije obrisan.
Korak 3. Ovi podaci se zatim pomeraju na izlazni pin (prvo MSB bit)
dok se registar na prijemu istovremeno puni bitovima kroz ulazni
pin. U Master režimu, mikrokontroler sam generiše takt, dok Slave
režim koristi spoljašnji takt koji daje master (SCK pin).
Korak 4. SSPSR registar je pun kada se primi 8 bitova podataka. Na
to se ukazuje postavljanjem BF bita registra SSPSTAT i bita SSPIF
registra PIR1. Primljeni podaci (jedan bajt) se automatski
premeštaju iz registra SSPSR u registar SSPBUF.
Pošto se serijski prenos podataka vrši automatski, ostatak
programa se normalno izvršava dok je prenos podataka u toku. U
ovom slučaju, funkcija bita SSPIF je da generiše prekid kada se
završi prenos jednog bajta.
Korak 5. Konačno, podaci uskladišteni u SSPBUF registru su
spremni za upotrebu i treba ih premestiti u željeni registar.

You might also like