SPI Un Arduino Interfeiss

Satura rādītājs:

SPI Un Arduino Interfeiss
SPI Un Arduino Interfeiss

Video: SPI Un Arduino Interfeiss

Video: SPI Un Arduino Interfeiss
Video: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, Novembris
Anonim

Mēs pētām SPI saskarni un savienojam maiņas reģistru ar Arduino, kuram piekļūsim, izmantojot šo protokolu, lai kontrolētu gaismas diodes.

SPI interfeiss
SPI interfeiss

Nepieciešams

  • - Arduino;
  • - maiņu reģistrs 74HC595;
  • - 8 gaismas diodes;
  • - 8 rezistori ar 220 Ohm.

Instrukcijas

1. solis

SPI - seriālā perifērā saskarne vai "seriālā perifērā saskarne" ir sinhronais datu pārsūtīšanas protokols galvenās ierīces saskarnei ar perifērām ierīcēm (vergiem). Kapteinis bieži ir mikrokontrolleris. Saziņa starp ierīcēm tiek veikta pa četriem vadiem, tāpēc SPI dažreiz sauc par "četru vadu saskarni". Šīs riepas ir:

MOSI (Master Out Slave In) - datu pārraides līnija no kapteiņa līdz vergu ierīcēm;

MISO (Master In Slave Out) - pārraides līnija no verga līdz galvenajam;

SCLK (Serial Clock) - kapteiņa ģenerētie sinhronizācijas pulksteņa impulsi;

SS (Slave Select) - vergu ierīču izvēles līnija; atrodoties rindā "0", vergs "saprot", ka tam piekļūst.

Ir četri datu pārsūtīšanas režīmi (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3) pulksteņa impulsa polaritātes (mēs strādājam HIGH vai LOW līmenī), pulksteņa polaritātes, CPOL un pulksteņa impulsu fāzes (sinhronizācijas) dēļ. pulksteņa impulsa augšupejošā vai krītošā malā), Clock Phase, CPHA.

Attēlā redzamas divas ierīču savienošanas iespējas, izmantojot SPI protokolu: neatkarīgas un kaskādes. Kad tas ir neatkarīgi savienots ar SPI kopni, kapteinis sazinās ar katru vergu atsevišķi. Ar kaskādi - vergu ierīces tiek iedarbinātas pārmaiņus, kaskādē.

SPI savienojumu veidi
SPI savienojumu veidi

2. solis

Arduino SPI autobusi atrodas noteiktās ostās. Katram dēlim ir savs piespraude. Ērtības labad tapas tiek dublētas un novietotas uz atsevišķa ICSP (In Circuit Serial Programming) savienotāja. Lūdzu, ņemiet vērā, ka ICSP savienotājā nav verga atlases tapas - SS tiek pieņemts, ka Arduino tiks izmantots par galveno tīklu tīklā. Bet, ja nepieciešams, varat piešķirt jebkuru Arduino digitālo tapu kā SS.

Attēlā parādīts standarta tapu piešķiršana SPD autobusiem Arduino UNO un Nano.

SPI ieviešana Arduino
SPI ieviešana Arduino

3. solis

Arduino ir uzrakstīta īpaša bibliotēka, kas ievieš SPI protokolu. Tas ir savienots šādi: programmas sākumā pievienojiet #include SPI.h

Lai sāktu strādāt ar SPI protokolu, jums jāiestata iestatījumi un pēc tam inicializējiet protokolu, izmantojot procedūru SPI.beginTransaction (). To var izdarīt ar vienu instrukciju: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

Tas nozīmē, ka mēs inicializējam SPI protokolu ar frekvenci 14 MHz, datu pārsūtīšana notiek, sākot no MSB (vissvarīgākais bits) režīmā "0".

Pēc inicializācijas mēs izvēlamies vergu ierīci, ievietojot atbilstošo SS tapu LOW stāvoklī.

Tad mēs ar komandu SPI.transfer () pārsūtām datus uz vergu ierīci.

Pēc pārsūtīšanas mēs atgriežam SS stāvoklī AUGSTS.

Darbs ar protokolu beidzas ar komandu SPI.endTransaction (). Ir vēlams samazināt pārsūtīšanas izpildes laiku starp instrukcijām SPI.beginTransaction () un SPI.endTransaction (), lai nebūtu pārklāšanās, ja cita ierīce mēģina inicializēt datu pārsūtīšanu, izmantojot dažādus iestatījumus.

SPI pārraide
SPI pārraide

4. solis

Apsvērsim SPI saskarnes praktisko pielietojumu. Mēs iedegsim gaismas diodes, kontrolējot 8 bitu maiņas reģistru, izmantojot SPI kopni. Savienosim 74HC595 maiņu reģistru ar Arduino. Mēs savienojamies ar katru no 8 izejām, izmantojot gaismas diodi (caur ierobežojošo rezistoru). Shēma parādīta attēlā.

Maiņu reģistra 74HC595 pievienošana Arduino
Maiņu reģistra 74HC595 pievienošana Arduino

5. solis

Uzrakstīsim šādu skici.

Vispirms pievienosim SPI bibliotēku un inicializēsim SPI saskarni. Definēsim 8. tapu kā vergu atlases tapu. Notīrīsim maiņu reģistru, nosūtot tam vērtību "0". Mēs inicializējam seriālo portu.

Lai apgaismotu konkrētu LED, izmantojot maiņu reģistru, tā ieejai jāpielieto 8 bitu numurs. Piemēram, lai iedegtos pirmā gaismas diode, mēs barojam bināro skaitli 00000001, otrajam - 00000010, trešajam - 00000100 utt. Šie binārie skaitļi aiz komata veido šādu secību: 1, 2, 4, 8, 16, 32, 64, 128, un tie ir divu spēki no 0 līdz 7.

Attiecīgi cilpā () pēc gaismas diožu skaita mēs pārrēķinām no 0 līdz 7. Pow (bāzes, grāda) funkcija paaugstina 2 līdz cikla skaitītāja jaudai. Mikrokontrolleri nedarbojas ļoti precīzi ar "dubultā" tipa skaitļiem, tāpēc, lai rezultātu pārvērstu par veselu skaitli, mēs izmantojam round () funkciju. Un mēs pārsūtām iegūto numuru uz maiņu reģistru. Skaidrības labad sērijveida porta monitorā tiek rādītas vērtības, kas iegūtas šīs operācijas laikā: viens iet cauri cipariem - gaismas diodes iedegas vilnī.

Skice maiņu reģistra kontrolei, izmantojot SPI kopni
Skice maiņu reģistra kontrolei, izmantojot SPI kopni

6. solis

Gaismas diodes iedegas pēc kārtas, un mēs novērojam ceļojošo gaismas "vilni". Gaismas diodes tiek kontrolētas, izmantojot maiņu reģistru, kuram mēs pievienojāmies caur SPI interfeisu. Tā rezultātā, lai vadītu 8 gaismas diodes, tiek izmantoti tikai 3 Arduino tapas.

Mēs esam izpētījuši vienkāršāko piemēru tam, kā Arduino darbojas ar SPI autobusu. Mēs detalizētāk apsvērsim maiņu reģistru savienojumu atsevišķā rakstā.

Ieteicams: