Kiolesura Cha SPI Na Arduino

Orodha ya maudhui:

Kiolesura Cha SPI Na Arduino
Kiolesura Cha SPI Na Arduino

Video: Kiolesura Cha SPI Na Arduino

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

Tunasoma kiolesura cha SPI na kuunganisha rejista ya mabadiliko kwenye Arduino, ambayo tutapata kutumia itifaki hii kudhibiti LED.

Kiolesura cha SPI
Kiolesura cha SPI

Muhimu

  • - Arduino;
  • - rejista ya kuhama 74HC595;
  • - LED 8;
  • - vipinga 8 vya 220 Ohm.

Maagizo

Hatua ya 1

SPI - Maingiliano ya Pembeni ya Serial au "Interface ya Pembeni ya Siri" ni itifaki ya usawazishaji wa data ya kuingiliana kwa kifaa kikuu na vifaa vya pembeni (mtumwa). Bwana mara nyingi ni mdhibiti mdogo. Mawasiliano kati ya vifaa hufanywa zaidi ya waya nne, ndiyo sababu SPI wakati mwingine huitwa "kiunganishi cha waya nne". Tairi hizi ni:

MOSI (Master Out Slave In) - laini ya usambazaji wa data kutoka kwa bwana hadi vifaa vya watumwa;

MISO (Master in Slave Out) - laini ya usafirishaji kutoka kwa mtumwa kwenda kwa bwana;

SCLK (Serial Clock) - mapigo ya saa ya maingiliano yaliyotengenezwa na bwana;

SS (Chagua Mtumwa) - laini ya uteuzi wa kifaa cha watumwa; wakati yuko kwenye laini "0", mtumwa "anaelewa" kuwa inafikiwa.

Kuna njia nne za uhamishaji wa data (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), kwa sababu ya mchanganyiko wa polari ya saa (tunafanya kazi kwa kiwango cha juu au cha chini), Saa ya Polala, CPOL, na awamu ya mapigo ya saa (usawazishaji juu ya kuongezeka au kushuka kwa pigo la saa), Awamu ya Saa, CPHA.

Takwimu inaonyesha chaguzi mbili za kuunganisha vifaa kwa kutumia itifaki ya SPI: huru na kuachia. Wakati wa kushikamana kwa uhuru na basi ya SPI, bwana huwasiliana na kila mtumwa mmoja mmoja. Pamoja na kuteleza - vifaa vya watumwa husababishwa kwa njia mbadala, kwenye mpororo.

Aina za miunganisho ya SPI
Aina za miunganisho ya SPI

Hatua ya 2

Katika Arduino, basi za SPI ziko kwenye bandari maalum. Kila bodi ina mgawo wake wa siri. Kwa urahisi, pini zimerudiwa na kuwekwa kwenye kontakt tofauti ya ICSP (In Circuit Serial Programming). Tafadhali kumbuka kuwa hakuna pini ya kuchagua mtumwa kwenye kiunganishi cha ICSP - SS, kwani inadhaniwa kuwa Arduino itatumika kama bwana kwenye mtandao. Lakini ikiwa ni lazima, unaweza kupeana pini yoyote ya dijiti ya Arduino kama SS.

Takwimu inaonyesha mgawo wa kawaida wa pini kwa mabasi ya SPI kwa Arduino UNO na Nano.

Utekelezaji wa SPI huko Arduino
Utekelezaji wa SPI huko Arduino

Hatua ya 3

Maktaba maalum imeandikwa kwa Arduino ambayo hutekeleza itifaki ya SPI. Imeunganishwa kama hii: mwanzoni mwa programu, ongeza # pamoja na SPI.h

Ili kuanza kufanya kazi na itifaki ya SPI, unahitaji kuweka mipangilio na kisha uanzishe itifaki ukitumia utaratibu wa SPI.beginTransaction (). Unaweza kufanya hivyo kwa maagizo moja: SPI.anzaTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

Hii inamaanisha kwamba tunaanzisha itifaki ya SPI kwa masafa ya 14 MHz, uhamishaji wa data huenda, kuanzia MSB (muhimu zaidi), katika hali ya "0".

Baada ya uanzishaji, tunachagua kifaa cha mtumwa kwa kuweka pini inayolingana ya SS katika hali ya CHINI.

Kisha tunahamisha data kwenye kifaa cha mtumwa na amri ya SPI.transfer ().

Baada ya maambukizi, tunarudi SS kwa hali ya juu.

Fanya kazi na itifaki inaisha na amri ya SPI.endTransaction (). Inastahili kupunguza wakati wa utekelezaji wa uhamisho kati ya maagizo ya SPI.beginTransaction () na SPI.endTransaction () ili kusiwe na mwingiliano ikiwa kifaa kingine kinajaribu kuanzisha uhamishaji wa data kwa kutumia mipangilio tofauti.

Uhamisho wa SPI
Uhamisho wa SPI

Hatua ya 4

Wacha tuangalie matumizi ya kiufundi ya kiolesura cha SPI. Tutawasha taa za taa kwa kudhibiti rejista ya mabadiliko ya 8-bit kupitia basi ya SPI. Wacha tuunganishe rejista ya mabadiliko ya 74HC595 kwa Arduino. Tunaunganisha kwa kila moja ya matokeo 8 kupitia LED (kupitia kinzani cha kizuizi). Mchoro umeonyeshwa kwenye takwimu.

Kuunganisha rejista ya mabadiliko 74HC595 hadi Arduino
Kuunganisha rejista ya mabadiliko 74HC595 hadi Arduino

Hatua ya 5

Wacha tuandike mchoro kama huo.

Kwanza, wacha tuunganishe maktaba ya SPI na kuanzisha kiolesura cha SPI. Wacha tufafanue pini 8 kama pini ya uteuzi wa watumwa. Wacha tuondoe rejista ya kuhama kwa kutuma thamani "0" kwake. Tunaanzisha bandari ya serial.

Kuwasha LED maalum kwa kutumia rejista ya mabadiliko, unahitaji kutumia nambari 8-bit kwenye pembejeo yake. Kwa mfano, ili mwangaza wa kwanza wa LED, tunalisha nambari ya binary 00000001, kwa ya pili - 00000010, kwa ya tatu - 00000100, n.k. Nambari hizi za kibinadamu katika nukuu ya desimali huunda mlolongo ufuatao: 1, 2, 4, 8, 16, 32, 64, 128 na ni nguvu za mbili kutoka 0 hadi 7.

Ipasavyo, katika kitanzi () na idadi ya LEDs, tunahesabu tena kutoka 0 hadi 7. Kazi ya pow (msingi, kiwango) inainua 2 kwa nguvu ya kaunta ya mzunguko. Watawala wadhibiti haifanyi kazi kwa usahihi na nambari za aina "mbili", kwa hivyo kubadilisha matokeo kuwa nambari kamili, tunatumia kazi ya pande zote (). Na tunahamisha nambari inayosababisha kwenye rejista ya mabadiliko. Kwa uwazi, mfuatiliaji wa bandari ya serial huonyesha maadili ambayo hupatikana wakati wa operesheni hii: moja hupitia nambari - taa za taa zinaangaza kwenye wimbi.

Mchoro wa kudhibiti rejista ya mabadiliko kupitia basi ya SPI
Mchoro wa kudhibiti rejista ya mabadiliko kupitia basi ya SPI

Hatua ya 6

Taa zinawashwa kwa zamu, na tunaona "wimbi" la kusafiri la taa. LED zinadhibitiwa kwa kutumia rejista ya mabadiliko, ambayo tuliunganisha kupitia kiolesura cha SPI. Kama matokeo, pini 3 tu za Arduino hutumiwa kuendesha LED 8.

Tumejifunza mfano rahisi zaidi wa jinsi Arduino inavyofanya kazi na basi ya SPI. Tutazingatia uunganisho wa rejista za mabadiliko kwa undani zaidi katika kifungu tofauti.

Ilipendekeza: