Spi programare pentru arduino

Această bibliotecă permite Arduino să interacționeze cu diferite dispozitive SPI în timp ce acționează ca un dispozitiv principal.

O scurtă prezentare a interfeței SPI (Interfață Serial Periferică)

Interfața periferică serial (SPI) este un protocol sincron de date seriale utilizat pentru a comunica microcontrolerul cu unul sau mai multe dispozitive periferice. Interfața SPI este relativ rapidă și este concepută pentru a comunica dispozitivele apropiate. Poate fi folosit și pentru interfața a două microcontrolere.







Conform protocolului SPI, unul dintre dispozitivele care interacționează (de obicei un microcontroler) este întotdeauna comandantul și controlează dispozitivele periferice slave. De regulă, toate dispozitivele care interacționează sunt unite de trei linii comune:

  • MISO (Master In Slave Out) - o linie pentru transferul de date de la dispozitivul slave (Slave) la master (Master),
  • MOSI (Master Out Slave In) - o linie pentru transferul de date de la master la master (slave),
  • SCK (Ceasul serial) - impulsurile de ceas generate de Master (Master) pentru a sincroniza procesul de transfer de date.

În plus față de cele de mai sus, fiecare dispozitiv are o linie separată:

  • SS (Slave Select) - ieșire, prezentă pe fiecare dispozitiv slave. Acesta este conceput pentru a activa Masterul unui dispozitiv periferic.

Dispozitivul periferic (Slave) comunică cu comandantul atunci când semnalul SS este scăzut. În caz contrar, datele de pe dispozitivul Master vor fi ignorate. Această arhitectură permite interacțiunea cu mai multe dispozitive SPI conectate la aceeași magistrală: MISO, MOSI și SCK.

Înainte de a trimite date către un nou dispozitiv SPI, trebuie să aflați câteva aspecte-cheie:

  • Schimbarea datelor ar trebui efectuată începând cu bitul de înaltă ordine (MSB) sau LSB (LSB)? Ordinea datelor este controlată de funcția SPI.setBitOrder ().
  • În absența impulsurilor de ceas, linia SCK ar trebui să fie mare sau mică? Citirea datelor apare pe front sau din decăderea pulsului de ceas? Aceste moduri de operare sunt controlate de funcția SPI.setDataMode ().
  • Care ar trebui să fie rata de date SPI? Acest parametru este controlat de funcția SPI.setClockDivider ().






Deoarece standardul SPI este deschis, implementarea acestuia în diferite dispozitive poate fi puțin diferită. Prin urmare, atunci când scrieți programe, o atenție deosebită ar trebui acordată datacazului unui dispozitiv.

Aproximativ vorbind, există patru modul de transmitere a datelor, altele decât starea de deplasare (pe partea din față sau din dezintegrarea de sincronizare-puls - așa-numita fază) de date și nivelul de semnal, care ar trebui să SCK este linia în absența impulsurilor de sincronizare (polaritate). Diferite combinații de faze și polarități, care formează patru moduri de transmitere a datelor, sunt rezumate în tabel:

Pentru a schimba modul de transfer de date, utilizați funcția SPI.setDataMode ().

Fiecare dispozitiv SPI impune anumite restricții privind viteza maximă a magistralei SPI. Pentru funcționarea corectă a dispozitivelor periferice din bibliotecă, este furnizată funcția SPI.setClockDivider (), care permite schimbarea frecvenței ceasului busului (implicit este de 4 MHz).

După ce ați configurat corect toți parametrii SPI, rămâne să aflați care registre ale dispozitivului periferic sunt responsabile pentru unele dintre funcțiile sale. De obicei, acest lucru este descris în dispozitivul datasheet.

Pentru mai multe informații despre interfața SPI, consultați pagina Wikipedia.

conexiuni

Tabelul de mai jos prezintă numerele de pin utilizate de busul SPI în modelele Arduino:

Uno sau Duemilanove

Mega1280 sau Mega2560

Rețineți că pe toate panourile, pinii MISO, MOSI și SCK sunt conectați la aceiași pinii conectorului ICSP. Acest aranjament poate fi convenabil atunci când se creează carduri de extindere universale care funcționează pe toate modelele Arduino.

Caracteristicile ieșirii SS în Arduino bazate pe AVR

Toate modelele Arduino bazate pe microcontrolerele AVR au un pin SS, care este folosit în modul Slave (de exemplu, când controlați un master extern Arduino). Cu toate acestea, numai modul Master este implementat în bibliotecă, astfel că în acest mod, ieșirea SS trebuie să fie configurată ca ieșire. În caz contrar, SPI poate trece la modul Slave, ceea ce va duce la nefuncționarea funcțiilor bibliotecii.

Pentru a controla ieșirea perifericelor SS, puteți utiliza oricare dintre pinii disponibili. De exemplu, pe placa de extensie Arduino Ethernet, pinii 4 și respectiv 10 sunt utilizați pentru interfața cu cardul SD încorporat și cu controlerul Ethernet prin SPI.

Capacități avansate SPI pe Arduino Due

Există câteva caracteristici de lucru cu interfața SPI pe cardurile Arduino Due. Pe lângă funcțiile și metodele de bază aplicabile tuturor plăcilor Arduino, mai multe metode suplimentare sunt furnizate în biblioteca SPI. Aceste metode implementează capabilitățile hardware ale microcontrolerelor SAM3X și furnizează dezvoltatorului caracteristici avansate:

  • controlul automat al procesului de selecție al sclavului;
  • configurarea automată a configurației interfeței SPI pentru diverse dispozitive (frecvența ceasului, modul de transfer de date etc.). Datorită acestui fapt, fiecare dintre dispozitivele slave poate avea propriul set de setări aplicate automat la începutul transferului.

Arduino Due are trei ieșiri separate (4, 10 și 52) pentru controlul liniilor dispozitivelor periferice SS.







Articole similare

Trimiteți-le prietenilor: