spi și interfața Arduino - spi ce este - Electronice

SPI - Interfață serială periferic sau "Serial Peripheral Interface" - un protocol de transfer de date sincron pentru interfațare dispozitiv master (master) la dispozitivul periferic (Slave). Maestrul este de multe ori un microcontroler. Conexiunea între dispozitive este realizată în patru fire, SPI, prin urmare, denumite uneori „interfață cu patru fire.“ Aceste anvelope:
Mosi (Master Out Slave In) - linia de transmisie de date de la maestru la sclavi;
MISO (Master în Slave Out) - o linie de transport de la slave la master;
SCLK (ceas serial) - ceas de sincronizare generat de un dispozitiv master;
SS (Slave) - Slave line; atunci când linia „0“, dispozitivul slave „înțelege“, care sunt acum întorcându-se spre el.
Există patru moduri de transmisie (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), datorită unei combinații a ceasului de polaritate (de lucru la nivel de mare sau mică), ceas Polaritate, CPOL. și un ceas de fază (sincronizare pe frontul crescător sau descrescător al unui impuls de ceas), ceas de fază, CPhA.
Figura prezintă două variante de dispozitive de conectare SPI protocol: independent și în cascadă. Cu conectarea independentă la dispozitivul de master de autobuz SPI se adresează fiecare sclav în mod individual. În cascadă - dispozitivele slave sunt activate alternativ, în cascadă.

spi și interfața Arduino - spi ce este - Electronice

Interfața de autobuz Arduino SPI sunt pe anumite porturi. Fiecare bord concluziile lor. Pentru comoditate, rezultatele sunt duplicate și, de asemenea, efectuate pe un ICSP conector separat (în circuitul de programare serial, dispozitiv inclus în circuitul de programare, prin protocolul serial). Vă rugăm să rețineți că nu există pini conector ICSP Slave - SS, deoarece Aceasta a însemnat că Arduino să fie utilizat ca un dispozitiv master în rețea. Dar, dacă este necesar, aveți posibilitatea să atribuiți orice ieșire digitală Arduino ca SS.
Figura prezintă standard concluziile corespunzătoare autobuze SPI pentru Arduino UNO si Nano.

spi și interfața Arduino - spi ce este - Electronice

Este scris pentru biblioteca speciala Arduino. care implementează protocolul SPI. Conectați-l astfel: la începutul programului adăuga SPI.h #include
Pentru a începe protocolul SPI, trebuie să specificați setările și apoi inițializa protocolul folosind procedura SPI.beginTransaction (). Puteți face acest lucru cu o singură instrucțiune: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).
Aceasta înseamnă că inițializa protocolul SPI la o frecvență de 14 MHz, transmisia de date se duce, începând cu MSB (bitul cel mai semnificativ), „0“ în modul.
După inițializare, slave selectați traducerea SS PIN-ul corespunzător la starea LOW.
Apoi date slave peredaom SPI.transfer () de comandă.
După SS transmitere a reveni la starea HIGH.
Lucrarea este completată cu comanda de protocol SPI.endTransaction (). Este de dorit să se reducă la minimum timpul de execuție a transmisiei între instrucțiuni SPI.beginTransaction () și SPI.endTransaction (), că nu a existat nici o suprapunere, în cazul în care celălalt dispozitiv încearcă să inițializa transferul de date utilizând alte setări.

spi și interfața Arduino - spi ce este - Electronice

Luați în considerare aplicarea practică a interfeței SPI. Noi lumina LED-uri prin controlul registrului de deplasare de 8 biți pe SPI autobuz. Arduino conectat la un registru de deplasare 74HC595. Pentru fiecare dintre cele 8 ieșiri de pe LED-uri conecta (printr-un rezistor de limitare). Schema este prezentată în figură.

spi și interfața Arduino - spi ce este - Electronice

Să scrie o schiță.
Mai întâi conectați biblioteca SPI și inițializa interfața SPI. Definim pinul 8 ca un sclav selectați PIN-ul. registru de deplasare curat prin trimiterea la acesta valoarea „0“. Inițializare portul serial.
Pentru a aprinde o diodă emițătoare de lumină specifică, folosind un registru de deplasare, este necesar să se prezinte numărul său de intrare pe 8 biți. De exemplu, pentru a porni primul LED - Servim număr binar 00000001 la al doilea - 00000010 a treia - 00000100, etc. Aceste numere binare trebuie convertite într-un sistem numeric zecimal pentru a forma o secvență de 1, 2, 4, 8, 16, 32, 64, 128 și sunt puteri de două de la 0 la 7.
Prin urmare, în ciclul buclă () de numărul de LED-uri fac central de la 0 la 7. pow Funcția (putere de bază) 2 contorul reușește să ridice ciclu energetic. Microcontrolere nu sunt foarte precise de lucru cu numere, cum ar fi „dublu“, astfel încât pentru a converti rezultatul la un întreg folosind rotund funcția rotunjiri (). Și treci numărul rezultat în registrul de deplasare. Pentru claritate, monitorul de serie valorile de ieșire de port, care sunt obținute prin această operațiune: edinichka ruleaza pe grade - LED-uri de undă de lumină.

spi și interfața Arduino - spi ce este - Electronice

LED-urile se aprind unul câte unul, iar noi vedem execută un „val“ de lumini. LED-ul este controlat de către registrul de deplasare, la care suntem conectate prin intermediul SPI. Ca urmare, LED-urile de control a 8-3 numai implicate de ieșire Arduino.
Am studiat cel mai simplu exemplu de lucru cu autobuzul Arduino SPI. O privire mai atentă la conectarea registrelor de deplasare într-un articol separat.

spi și interfața Arduino - spi ce este - Electronice