Ndërfaqja SPI Dhe Arduino

Përmbajtje:

Ndërfaqja SPI Dhe Arduino
Ndërfaqja SPI Dhe Arduino

Video: Ndërfaqja SPI Dhe Arduino

Video: Ndërfaqja SPI Dhe Arduino
Video: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, Nëntor
Anonim

Ne studiojmë ndërfaqen SPI dhe lidhim një regjistër ndërrimi me Arduino, në të cilin do të kemi qasje duke përdorur këtë protokoll për të kontrolluar LED-të.

Ndërfaqja SPI
Ndërfaqja SPI

E nevojshme

  • - Arduino;
  • - regjistri i ndërrimit 74HC595;
  • - 8 LED;
  • - 8 rezistencë prej 220 Ohm.

Udhëzimet

Hapi 1

SPI - Ndërfaqja Seriale Periferike ose "Ndërfaqja Seriale Periferike" është një protokoll sinkron i transferimit të të dhënave për ndërfaqen e një pajisje master me pajisje periferike (skllav). Master shpesh është një mikrokontrollues. Komunikimi midis pajisjeve kryhet mbi katër tela, prandaj SPI nganjëherë quhet "ndërfaqe me katër tela". Këto goma janë:

MOSI (Master Out Slave In) - linja e transmetimit të të dhënave nga masteri në pajisjet skllav;

MISO (Master In Slave Out) - linja e transmetimit nga skllavi te zotëria;

SCLK (Ora Seriale) - impulset e orës sinkronizuese të gjeneruara nga master;

SS (Zgjidhja e skllavit) - linja e zgjedhjes së pajisjes skllav; kur në rreshtin "0", skllavi "kupton" se po aksesohet.

Ekzistojnë katër mënyra të transferimit të të dhënave (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), për shkak të kombinimit të polaritetit të pulsit të orës (ne punojmë në nivelin e LART or ose TOW ULT), Polaritetit të Clock, CPOL dhe fazës së impulseve të orës (sinkronizimi në buzë në rritje ose në rënie të pulsit të orës), Faza e Sahatit, CPHA.

Figura tregon dy mundësi për lidhjen e pajisjeve duke përdorur protokollin SPI: të pavarur dhe kaskadë. Kur lidhet në mënyrë të pavarur me autobusin SPI, master komunikon me secilin skllav individualisht. Me një kaskadë - pajisjet e skllevërve shkaktohen në mënyrë alternative, në një kaskadë.

Llojet e lidhjeve SPI
Llojet e lidhjeve SPI

Hapi 2

Në Arduino, autobusët SPI janë në porte specifike. Secila bord ka caktimin e vet të kunjit. Për lehtësi, kunjat kopjohen dhe vendosen në një lidhës të veçantë ICSP (Në Programin Serial të Qarkut). Ju lutemi vini re se që nga ajo kohë nuk ka asnjë skedar zgjedhës skllavi në lidhësin ICSP - SS supozohet se Arduino do të përdoret si master në rrjet. Por nëse është e nevojshme, mund të caktoni çdo pin dixhital të Arduino si SS.

Shifra tregon caktimin standard të kunjave në autobusët SPI për Arduino UNO dhe Nano.

Zbatimi i SPI në Arduino
Zbatimi i SPI në Arduino

Hapi 3

Për Arduino është shkruar një bibliotekë e veçantë që zbaton protokollin SPI. Isshtë e lidhur kështu: në fillim të programit, shtoni #include SPI.h

Për të filluar punën me protokollin SPI, duhet të vendosni cilësimet dhe më pas të filloni protokollin duke përdorur procedurën SPI.beginTransaction (). Ju mund ta bëni këtë me një udhëzim: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

Kjo do të thotë që ne inicializojmë protokollin SPI në një frekuencë prej 14 MHz, transferimi i të dhënave shkon, duke filluar nga MSB (biti më i rëndësishëm), në modalitetin "0".

Pas inicializimit, ne zgjedhim pajisjen skllav duke vendosur pinin përkatës SS në gjendjen E ULT.

Pastaj ne i transferojmë të dhënat në pajisjen skllav me komandën SPI.transfer ().

Pas transmetimit, ne e kthejmë SS në gjendjen e LART.

Puna me protokollin përfundon me komandën SPI.endTransaction (). Desirableshtë e dëshirueshme që të minimizohet koha e ekzekutimit të transferimit midis udhëzimeve SPI.beginTransaction () dhe SPI.endTransaction () në mënyrë që të mos ketë mbivendosje nëse një pajisje tjetër përpiqet të fillojë transferimin e të dhënave duke përdorur cilësime të ndryshme.

Transmetimi SPI
Transmetimi SPI

Hapi 4

Le të shqyrtojmë zbatimin praktik të ndërfaqes SPI. Ne do të ndezim LED-të duke kontrolluar regjistrin e ndërrimit 8-bit përmes autobusit SPI. Le të lidhim regjistrin e ndërrimit 74HC595 me Arduino. Ne lidhemi me secilin nga 8 daljet përmes një LED (përmes një rezistence kufizuese). Diagrami është treguar në figurë.

Lidh regjistrin e ndërrimit 74HC595 me Arduino
Lidh regjistrin e ndërrimit 74HC595 me Arduino

Hapi 5

Le të shkruajmë një skicë të tillë.

Së pari, le të lidhim bibliotekën SPI dhe të inicializojmë ndërfaqen SPI. Le të përcaktojmë pinin 8 si pinin e zgjedhjes së skllavit. Le të pastrojmë regjistrin e ndërrimit duke i dërguar vlerën "0". Ne inicializojmë portin serik.

Për të ndezur një LED specifik duke përdorur një regjistër zhvendosjeje, duhet të aplikoni një numër 8-bitësh në hyrjen e tij. Për shembull, në mënyrë që LED-i i parë të ndizet, ne ushqejmë numrin binar 00000001, për të dytin - 00000010, për të tretin - 00000100, etj. Këta numra binarë në shënimin dhjetor formojnë sekuencën vijuese: 1, 2, 4, 8, 16, 32, 64, 128 dhe janë fuqi të dy nga 0 në 7.

Prandaj, në lak () nga numri i LED-ve, ne rillogarisim nga 0 në 7. Funksioni pow (baza, shkalla) ngre 2 në fuqinë e njehsorit të ciklit. Mikrokontrolluesit nuk punojnë shumë saktë me numrat e tipit "të dyfishtë", kështu që për ta kthyer rezultatin në një numër të plotë, ne përdorim funksionin round (). Dhe ne transferojmë numrin që rezulton në regjistrin e ndërrimit. Për qartësi, monitori i portit serik tregon vlerat që merren gjatë këtij operacioni: njëri kalon nëpër shifra - LED-et ndizen në një valë.

Skica për kontrollimin e regjistrit të ndërrimit përmes autobusit SPI
Skica për kontrollimin e regjistrit të ndërrimit përmes autobusit SPI

Hapi 6

LED ndizen nga ana tjetër, dhe ne vëzhgojmë një "valë" udhëtimi të dritave. LED-të kontrollohen duke përdorur një regjistër ndërrimi, me të cilin u lidhëm përmes ndërfaqes SPI. Si rezultat, vetëm 3 kunja Arduino përdoren për të drejtuar 8 LED.

Ne kemi studiuar shembullin më të thjeshtë se si një Arduino punon me një autobus SPI. Ne do të shqyrtojmë lidhjen e regjistrave të ndërrimit në më shumë detaje në një artikull të veçantë.

Recommended: