Interface Ng SPI At Arduino

Talaan ng mga Nilalaman:

Interface Ng SPI At Arduino
Interface Ng SPI At Arduino

Video: Interface Ng SPI At Arduino

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

Pinag-aaralan namin ang interface ng SPI at kumokonekta sa isang rehistro ng shift sa Arduino, na maa-access namin gamit ang protokol na ito upang makontrol ang mga LED.

Interface ng SPI
Interface ng SPI

Kailangan

  • - Arduino;
  • - shift register 74HC595;
  • - 8 LEDs;
  • - 8 resistors ng 220 Ohm.

Panuto

Hakbang 1

SPI - Ang Serial Peripheral Interface o "Serial Peripheral Interface" ay isang kasabay na data transfer protocol para sa pag-interfacing ng isang master device na may mga peripheral device (alipin). Ang master ay madalas na isang microcontroller. Ang komunikasyon sa pagitan ng mga aparato ay isinasagawa sa loob ng apat na mga wires, kung kaya't kung minsan ay tinutukoy ang SPI bilang isang "interface na apat na kawad". Ang mga gulong ito ay:

MOSI (Master Out Slave In) - linya ng paghahatid ng data mula sa master hanggang sa mga aparato ng alipin;

MISO (Master In Slave Out) - linya ng paghahatid mula sa alipin sa master;

SCLK (Serial Clock) - mga pag-syncing ng pulso ng orasan na nabuo ng master;

SS (Slave Select) - linya ng pagpipilian ng alipin ng aparato; kapag sa linya na "0", "nauunawaan" ng alipin na ina-access ito.

Mayroong apat na mga mode ng paglipat ng data (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), dahil sa kumbinasyon ng polarity ng pulso ng orasan (nagtatrabaho kami sa antas ng TAAS o LOW), Clock Polarity, CPOL, at ang yugto ng mga pulso ng orasan (pagsabay. sa tumataas o nahuhulog na gilid ng pulso ng orasan), Clock Phase, CPHA.

Ang figure ay nagpapakita ng dalawang mga pagpipilian para sa pagkonekta ng mga aparato gamit ang SPI protocol: independiyente at cascading. Kapag nakapag-iisa nakakonekta sa SPI bus, ang master ay nakikipag-usap sa bawat alipin nang paisa-isa. Sa pamamagitan ng isang kaskad - ang mga aparato ng alipin ay na-trigger ng halili, sa isang kaskad.

Mga uri ng koneksyon sa SPI
Mga uri ng koneksyon sa SPI

Hakbang 2

Sa Arduino, ang mga SPI bus ay nasa tukoy na mga port. Ang bawat board ay may kanya-kanyang takdang-aralin sa pin. Para sa kaginhawaan, ang mga pin ay nadoble at inilalagay sa isang hiwalay na koneksyon ng ICSP (In Circuit Serial Programming). Mangyaring tandaan na walang piling piniling alipin sa konektor ng ICSP - SS, mula pa ipinapalagay na ang Arduino ay gagamitin bilang master sa network. Ngunit kung kinakailangan, maaari kang magtalaga ng anumang mga digital pin ng Arduino bilang isang SS.

Ipinapakita ng pigura ang karaniwang pagtatalaga ng mga pin sa mga SPI bus para sa Arduino UNO at Nano.

Pagpapatupad ng SPI sa Arduino
Pagpapatupad ng SPI sa Arduino

Hakbang 3

Ang isang espesyal na silid-aklatan ay isinulat para sa Arduino na nagpapatupad ng SPI protocol. Nakakonekta ito tulad nito: sa simula ng programa, idagdag ang # isama ang SPI.h

Upang simulang magtrabaho kasama ang SPI protocol, kailangan mong itakda ang mga setting at pagkatapos ay simulan ang protokol gamit ang SPI.beginTransaction () na pamamaraan. Magagawa mo ito sa isang tagubilin: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

Nangangahulugan ito na pinasimulan namin ang SPI protocol sa dalas na 14 MHz, ang paglipat ng data ay napupunta, simula sa MSB (pinaka makabuluhang bit), sa mode na "0".

Pagkatapos ng pagsisimula, pipiliin namin ang aparato ng alipin sa pamamagitan ng paglalagay ng kaukulang SS pin sa LOW state.

Pagkatapos ay ilipat namin ang data sa aparato ng alipin na may utos na SPI.transfer ().

Pagkatapos ng paghahatid, ibabalik namin ang SS sa matataas na estado.

Ang pagtatrabaho sa protocol ay nagtatapos sa utos ng SPI.endTransaction (). Ito ay kanais-nais na i-minimize ang oras ng pagpapatupad ng paglipat sa pagitan ng mga tagubilin ng SPI.beginTransaction () at SPI.endTransaction () upang walang overlap kung susubukan ng ibang aparato na simulan ang paglilipat ng data gamit ang iba't ibang mga setting.

Paghahatid ng SPI
Paghahatid ng SPI

Hakbang 4

Isaalang-alang natin ang praktikal na aplikasyon ng interface ng SPI. Iilawan namin ang mga LED sa pamamagitan ng pagkontrol sa 8-bit shift register sa pamamagitan ng SPI bus. Ikonekta natin ang rehistro ng shift ng 74HC595 sa Arduino. Kumokonekta kami sa bawat isa sa 8 output sa pamamagitan ng isang LED (sa pamamagitan ng isang limitasyon ng risistor). Ang diagram ay ipinakita sa pigura.

Kumokonekta sa rehistro ng shift 74HC595 sa Arduino
Kumokonekta sa rehistro ng shift 74HC595 sa Arduino

Hakbang 5

Isulat natin ang gayong sketch.

Una, ikonekta natin ang SPI library at simulan ang interface ng SPI. Tukuyin natin ang pin 8 bilang pin ng pagpili ng alipin. I-clear natin ang shift register sa pamamagitan ng pagpapadala dito ng halagang "0". Pinasimulan namin ang serial port.

Upang magaan ang isang tukoy na LED gamit ang isang rehistro ng shift, kailangan mong maglapat ng isang 8-bit na numero sa input nito. Halimbawa, upang ang unang LED ay mag-ilaw, pinapakain namin ang binary number na 00000001, para sa pangalawa - 00000010, para sa pangatlo - 00000100, atbp. Ang mga binary number na ito sa notasyong decimal ay bumubuo ng sumusunod na pagkakasunud-sunod: 1, 2, 4, 8, 16, 32, 64, 128 at mga kapangyarihan ng dalawa mula 0 hanggang 7.

Alinsunod dito, sa loop () sa bilang ng mga LEDs, muling kinalkula namin mula 0 hanggang 7. Ang pagpapaandar ng pow (base, degree) ay nagpapataas ng 2 sa lakas ng cycle counter. Ang mga Microcontroller ay hindi gumagana nang tumpak sa mga numero ng "dobleng" uri, kaya upang mai-convert ang resulta sa isang integer, ginagamit namin ang pag-andar ng pag-ikot (). At inililipat namin ang nagresultang numero sa rehistro ng shift. Para sa kalinawan, ipinapakita ng serial port monitor ang mga halagang nakukuha sa panahon ng operasyon na ito: ang isa ay tumatakbo sa pamamagitan ng mga digit - ang mga LED ay nagniningning sa isang alon.

Sketch para sa pagkontrol sa shift register sa pamamagitan ng SPI bus
Sketch para sa pagkontrol sa shift register sa pamamagitan ng SPI bus

Hakbang 6

Ang mga LED ay umailaw naman, at sinusunod namin ang isang naglalakbay na "alon" ng mga ilaw. Kinokontrol ang mga LED gamit ang isang rehistro ng shift, kung saan kumonekta kami sa pamamagitan ng interface ng SPI. Bilang isang resulta, 3 mga pin ng Arduino lamang ang ginagamit upang magmaneho ng 8 LEDs.

Pinag-aralan namin ang pinakasimpleng halimbawa ng kung paano gumagana ang isang Arduino sa isang SPI bus. Isasaalang-alang namin ang koneksyon ng mga rehistro ng shift nang mas detalyado sa isang hiwalay na artikulo.

Inirerekumendang: