- SPI అంటే ఏమిటి?
- ఎస్పీఐ పని
- ఆర్డునో UNO లో SPI పిన్స్
- Arduino లో SPI ని ఉపయోగించడం
- Arduino SPI కమ్యూనికేషన్ కోసం భాగాలు అవసరం
- Arduino SPI కమ్యూనికేషన్ సర్క్యూట్ రేఖాచిత్రం
- SPI కమ్యూనికేషన్ కోసం Arduino ను ఎలా ప్రోగ్రామ్ చేయాలి:
- Arduino SPI మాస్టర్ ప్రోగ్రామింగ్ వివరణ
- Arduino SPI స్లేవ్ ప్రోగ్రామింగ్ వివరణ
- ఆర్డునోలో SPI ఎలా పనిచేస్తుంది? - దీనిని పరీక్షిద్దాం!
మైక్రోకంట్రోలర్ వివిధ సెన్సార్లు మరియు మాడ్యూళ్ళతో కమ్యూనికేట్ చేయడానికి అనేక విభిన్న ప్రోటోకాల్లను ఉపయోగిస్తుంది. వైర్లెస్ మరియు వైర్డు కమ్యూనికేషన్ కోసం అనేక రకాల కమ్యూనికేషన్ ప్రోటోకాల్లు ఉన్నాయి మరియు సాధారణంగా ఉపయోగించే కమ్యూనికేషన్ టెక్నిక్ సీరియల్ కమ్యూనికేషన్. సీరియల్ కమ్యూనికేషన్ అంటే ఒక కమ్యూనికేషన్ ఛానల్ లేదా బస్సు ద్వారా వరుసగా ఒక బిట్ డేటాను పంపే ప్రక్రియ. UART, CAN, USB, I2C మరియు SPI కమ్యూనికేషన్ వంటి అనేక రకాల సీరియల్ కమ్యూనికేషన్ ఉన్నాయి.
ఈ ట్యుటోరియల్లో, మేము SPI ప్రోటోకాల్ గురించి మరియు దానిని Arduino లో ఎలా ఉపయోగించాలో నేర్చుకుంటాము. మేము రెండు ఆర్డునోల మధ్య కమ్యూనికేషన్ కోసం SPI ప్రోటోకాల్ని ఉపయోగిస్తాము. ఇక్కడ ఒక ఆర్డునో మాస్టర్గా మరియు మరొకటి స్లేవ్గా పనిచేస్తుంది, రెండు ఎల్ఇడిలు మరియు పుష్ బటన్లు ఆర్డునో రెండింటికి అనుసంధానించబడతాయి. SPI కమ్యూనికేషన్ను ప్రదర్శించడానికి, మేము బానిస వైపు ఉన్న పుష్ బటన్ ద్వారా మాస్టర్ సైడ్ LED ని నియంత్రిస్తాము మరియు దీనికి విరుద్ధంగా SPI సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్ను ఉపయోగిస్తాము.
SPI అంటే ఏమిటి?
SPI (సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్) ఒక సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్. SPI ఇంటర్ఫేస్ 1970 లో మోటరోలా చేత కనుగొనబడింది. SPI కి పూర్తి-డ్యూప్లెక్స్ కనెక్షన్ ఉంది, అంటే డేటా ఒకేసారి పంపబడుతుంది మరియు స్వీకరించబడుతుంది. అంటే మాస్టర్ ఒక బానిసకు డేటాను పంపగలడు మరియు ఒక బానిస ఒకేసారి మాస్టర్కు డేటాను పంపగలడు. SPI అనేది సింక్రోనస్ సీరియల్ కమ్యూనికేషన్ అంటే కమ్యూనికేషన్ ప్రయోజనాల కోసం గడియారం అవసరం.
SPI కమ్యూనికేషన్ గతంలో ఇతర మైక్రోకంట్రోలర్లలో వివరించబడింది:
- PIC మైక్రోకంట్రోలర్ PIC16F877A తో SPI కమ్యూనికేషన్
- రాస్ప్బెర్రీ పైతో 3.5 అంగుళాల టచ్ స్క్రీన్ టిఎఫ్టి ఎల్సిడిని ఇంటర్ఫేసింగ్ చేస్తుంది
- SPI పిన్స్తో AVR మైక్రోకంట్రోలర్ను ప్రోగ్రామింగ్ చేస్తోంది
- నోకియా 5110 గ్రాఫికల్ ఎల్సిడిని ఆర్డునోతో ఇంటర్ఫేసింగ్
ఎస్పీఐ పని
ఒక SPI నాలుగు పంక్తులను ఉపయోగించి మాస్టర్ / స్లేవ్ కమ్యూనికేషన్ కలిగి ఉంది. ఒక SPI ఒక మాస్టర్ మాత్రమే కలిగి ఉంటుంది మరియు బహుళ బానిసలను కలిగి ఉంటుంది. మాస్టర్ సాధారణంగా మైక్రోకంట్రోలర్ మరియు బానిసలు మైక్రోకంట్రోలర్, సెన్సార్లు, ADC, DAC, LCD మొదలైనవి కావచ్చు.
సింగిల్ స్లేవ్తో SPI మాస్టర్ యొక్క బ్లాక్ రేఖాచిత్రం ప్రాతినిధ్యం క్రింద ఉంది.
SPI MISO, MOSI, SS మరియు CLK అనే నాలుగు పంక్తులను అనుసరిస్తోంది
- MISO (మాస్టర్ ఇన్ స్లేవ్ అవుట్) - మాస్టర్కు డేటాను పంపే స్లేవ్ లైన్.
- మోసి (మాస్టర్ అవుట్ స్లేవ్ ఇన్) - పెరిఫెరల్స్కు డేటాను పంపే మాస్టర్ లైన్.
- SCK (సీరియల్ క్లాక్) - మాస్టర్ సృష్టించిన డేటా ట్రాన్స్మిషన్ను సమకాలీకరించే క్లాక్ పప్పులు.
- SS (స్లేవ్ సెలెక్ట్) -మాస్టర్ నిర్దిష్ట పరికరాలను ప్రారంభించడానికి మరియు నిలిపివేయడానికి ఈ పిన్ను ఉపయోగించవచ్చు.
బహుళ బానిసలతో SPI మాస్టర్
మాస్టర్ మరియు బానిసల మధ్య కమ్యూనికేషన్ ప్రారంభించడానికి మేము అవసరమైన పరికరం యొక్క స్లేవ్ సెలెక్ట్ (ఎస్ఎస్) పిన్ను తక్కువకు సెట్ చేయాలి, తద్వారా ఇది మాస్టర్తో కమ్యూనికేట్ చేయగలదు. ఇది ఎక్కువగా ఉన్నప్పుడు, అది మాస్టర్ను విస్మరిస్తుంది. ఒకే MISO, MOSI మరియు CLK పంక్తులను పంచుకునే బహుళ SPI పరికరాలను కలిగి ఉండటానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. పై చిత్రంలో మీరు చూడగలిగినట్లుగా, నలుగురు బానిసలు ఉన్నారు, ఇందులో SCLK, MISO, MOSI సాధారణంగా మాస్టర్కు అనుసంధానించబడి ఉంటాయి మరియు ప్రతి బానిస యొక్క SS మాస్టర్ యొక్క వ్యక్తిగత SS పిన్లకు (SS1, SS2, SS3) విడిగా అనుసంధానించబడి ఉంటుంది. అవసరమైన SS పిన్ను తక్కువ సెట్ చేయడం ద్వారా మాస్టర్ ఆ బానిసతో కమ్యూనికేట్ చేయవచ్చు.
ఆర్డునో UNO లో SPI పిన్స్
క్రింద ఉన్న చిత్రం SPI పిన్స్ Arduino UNO (ఎరుపు పెట్టెలో) ఉన్నట్లు చూపిస్తుంది.
SPI లైన్ |
Arduino లో పిన్ చేయండి |
మోసి |
11 లేదా ఐసిఎస్పి -4 |
MISO |
12 లేదా ICSP-1 |
ఎస్.సి.కె. |
13 లేదా ఐసిఎస్పి -3 |
ఎస్.ఎస్ |
10 |
Arduino లో SPI ని ఉపయోగించడం
రెండు ఆర్డునోస్ మధ్య SPI కమ్యూనికేషన్ కోసం ప్రోగ్రామింగ్ ప్రారంభించే ముందు. Arduino IDE లో ఉపయోగించిన Arduino SPI లైబ్రరీ గురించి మనం నేర్చుకోవాలి.
గ్రంథాలయము
1. SPI.begin ()
ఉపయోగం: SCK, MOSI మరియు SS లను అవుట్పుట్లకు సెట్ చేయడం ద్వారా, SCK మరియు MOSI ని తక్కువ మరియు SS అధికంగా లాగడం ద్వారా SPI బస్సును ప్రారంభించడం.
2. SPI.setClockDivider (డివైడర్)
ఉపయోగం: సిస్టమ్ గడియారానికి సంబంధించి SPI క్లాక్ డివైడర్ను సెట్ చేయడానికి. అందుబాటులో ఉన్న డివైడర్లు 2, 4, 8, 16, 32, 64 లేదా 128.
డివైడర్లు:
- SPI_CLOCK_DIV2
- SPI_CLOCK_DIV4
- SPI_CLOCK_DIV8
- SPI_CLOCK_DIV16
- SPI_CLOCK_DIV32
- SPI_CLOCK_DIV64
- SPI_CLOCK_DIV128
3. SPI.attachInterrupt (హ్యాండ్లర్)
ఉపయోగం: బానిస పరికరం మాస్టర్ నుండి డేటాను అందుకున్నప్పుడు ఈ ఫంక్షన్ అంటారు.
4. SPI.transfer (val)
ఉపయోగం: మాస్టర్ మరియు బానిసల మధ్య డేటాను ఏకకాలంలో పంపడానికి మరియు స్వీకరించడానికి ఈ ఫంక్షన్ ఉపయోగించబడుతుంది.
కాబట్టి ఇప్పుడు ఆర్డునోలో SPI ప్రోటోకాల్ యొక్క ఆచరణాత్మక ప్రదర్శనతో ప్రారంభిద్దాం. ఈ ట్యుటోరియల్లో మనం రెండు ఆర్డునోలను మాస్టర్గా, మరొకటి బానిసగా ఉపయోగిస్తాము. Arduino రెండూ విడిగా LED & పుష్ బటన్తో జతచేయబడతాయి. స్లేవ్ ఆర్డునో యొక్క పుష్ బటన్ను ఉపయోగించడం ద్వారా మాస్టర్ ఎల్ఈడీని నియంత్రించవచ్చు మరియు స్లావ్ ఆర్డునో యొక్క ఎల్ఇడిని మాస్టర్ ఆర్డునో యొక్క పుష్ బటన్ ద్వారా ఆర్డునోలో ఉన్న ఎస్పిఐ కమ్యూనికేషన్ ప్రోటోకాల్ ఉపయోగించి నియంత్రించవచ్చు.
Arduino SPI కమ్యూనికేషన్ కోసం భాగాలు అవసరం
- ఆర్డునో UNO (2)
- LED (2)
- పుష్ బటన్ (2)
- రెసిస్టర్ 10 కె (2)
- రెసిస్టర్ 2.2 కె (2)
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
Arduino SPI కమ్యూనికేషన్ సర్క్యూట్ రేఖాచిత్రం
దిగువ సర్క్యూట్ రేఖాచిత్రం Arduino UNO లో SPI ని ఎలా ఉపయోగించాలో చూపిస్తుంది, కానీ మీరు Arduino Mega SPI కమ్యూనికేషన్ లేదా Arduino నానో SPI కమ్యూనికేషన్ కోసం అదే విధానాన్ని అనుసరించవచ్చు. పిన్ సంఖ్య మినహా దాదాపు ప్రతిదీ ఒకే విధంగా ఉంటుంది. ఆర్డునో నానో ఎస్పిఐ పిన్స్ మరియు ఆర్డునో మెగా పిన్స్ ను కనుగొనడానికి మీరు ఆర్డునో నానో లేదా మెగా యొక్క పిన్అవుట్ ను తనిఖీ చేయాలి, మిగతావన్నీ ఒకే విధంగా ఉంటాయని మీరు పూర్తి చేసిన తర్వాత.
నేను పైన చూపిన సర్క్యూట్ను బ్రెడ్బోర్డుపై నిర్మించాను, నేను క్రింద పరీక్ష కోసం ఉపయోగించిన సర్క్యూట్ సెటప్ను మీరు చూడవచ్చు.
SPI కమ్యూనికేషన్ కోసం Arduino ను ఎలా ప్రోగ్రామ్ చేయాలి:
ఈ ట్యుటోరియల్లో మాస్టర్ ఆర్డునోకు మరొకటి మరియు బానిస ఆర్డునో కోసం రెండు ప్రోగ్రామ్లు ఉన్నాయి. ఈ ప్రాజెక్ట్ చివరిలో రెండు వైపులా పూర్తి కార్యక్రమాలు ఇవ్వబడ్డాయి.
Arduino SPI మాస్టర్ ప్రోగ్రామింగ్ వివరణ
1. మొదట మనం SPI కమ్యూనికేషన్ ఫంక్షన్లను ఉపయోగించడం కోసం SPI లైబ్రరీని చేర్చాలి.
# చేర్చండి
2. శూన్య సెటప్లో ()
- మేము బాడ్ రేట్ 115200 వద్ద సీరియల్ కమ్యూనికేషన్ను ప్రారంభిస్తాము.
సీరియల్.బెగిన్ (115200);
- పిన్ 7 కు LED ని అటాచ్ చేయండి మరియు పిన్ 2 కు పుష్ బటన్ మరియు ఆ పిన్స్ వరుసగా U ట్ పుట్ మరియు ఇన్పుట్ సెట్ చేయండి.
పిన్మోడ్ (ఐప్బటన్, ఇన్పుట్); పిన్మోడ్ (LED, OUTPUT);
- తరువాత మేము SPI కమ్యూనికేషన్ను ప్రారంభిస్తాము
SPI.begin ();
- తరువాత మేము SPI కమ్యూనికేషన్ కోసం క్లాక్డివైడర్ను సెట్ చేసాము. ఇక్కడ మేము డివైడర్ 8 ని సెట్ చేసాము.
SPI.setClockDivider (SPI_CLOCK_DIV8);
- మేము బానిస ఆర్డునోకు ఎటువంటి బదిలీని ప్రారంభించనందున SS పిన్ HIGH ని సెట్ చేయండి.
డిజిటల్ రైట్ (SS, HIGH);
3. శూన్య లూప్లో ():
- ఆ విలువలను బానిస ఆర్డునోకు పంపడం కోసం పిన్ 2 (మాస్టర్ ఆర్డునో) కి కనెక్ట్ చేయబడిన పుష్బటన్ పిన్ యొక్క స్థితిని మేము చదువుతాము.
buttonvalue = డిజిటల్ రీడ్ (ఐప్బటన్);
- పిన్ 2 నుండి ఇన్పుట్ను బట్టి x విలువను (బానిసకు పంపాలి) సెట్టింగ్ కోసం లాజిక్ సెట్ చేయండి
if (buttonvalue == HIGH) { x = 1; } else { x = 0; }
- విలువను పంపే ముందు మాస్టర్ నుండి బానిసకు బదిలీని ప్రారంభించడానికి బానిస ఎంపిక విలువను తక్కువ చేయాలి.
డిజిటల్ రైట్ (SS, LOW);
- ఇక్కడ ముఖ్యమైన దశ వస్తుంది, ఈ క్రింది స్టేట్మెంట్లో మాస్టర్సెండ్ వేరియబుల్లో నిల్వ చేసిన పుష్ బటన్ విలువను స్లేవ్ ఆర్డునోకు పంపుతాము మరియు మాస్టెరిసివ్ వేరియబుల్లో స్టోర్ చేయబడే బానిస నుండి విలువను కూడా స్వీకరిస్తాము.
మాస్టెరిసివ్ = SPI.transfer (మాస్టర్సెండ్);
- ఆ తరువాత మాస్టెరిసివ్ విలువను బట్టి మేము మాస్టర్ ఆర్డునో LED ని ఆన్ లేదా ఆఫ్ చేస్తాము.
if (Mastereceive == 1) { DigitalWrite (LED, HIGH); // పిన్ 7 హై సీరియల్.ప్రింట్ల్న్ ("మాస్టర్ LED ఆన్") ను సెట్ చేస్తుంది; } else { డిజిటల్ రైట్ (LED, LOW); // పిన్ 7 తక్కువ సీరియల్.ప్రింట్ల్న్ ("మాస్టర్ LED ఆఫ్") సెట్ చేస్తుంది; }
గమనిక: సీరియల్ మోటార్ ఆఫ్ ఆర్డునో IDE లో ఫలితాన్ని వీక్షించడానికి మేము serial.println () ను ఉపయోగిస్తాము. చివరిలో వీడియోను తనిఖీ చేయండి.
Arduino SPI స్లేవ్ ప్రోగ్రామింగ్ వివరణ
1. మొదట మనం SPI కమ్యూనికేషన్ ఫంక్షన్లను ఉపయోగించడం కోసం SPI లైబ్రరీని చేర్చాలి.
# చేర్చండి
2. శూన్య సెటప్లో ()
- మేము బాడ్ రేట్ 115200 వద్ద సీరియల్ కమ్యూనికేషన్ను ప్రారంభిస్తాము.
సీరియల్.బెగిన్ (115200);
- పిన్ 7 కు LED ని అటాచ్ చేయండి మరియు పిన్ 2 కు పుష్ బటన్ మరియు ఆ పిన్స్ వరుసగా U ట్పుట్ మరియు ఇన్పుట్ సెట్ చేయండి.
పిన్మోడ్ (ఐప్బటన్, ఇన్పుట్); పిన్మోడ్ (LED, OUTPUT);
- ఇక్కడ ముఖ్యమైన దశ క్రింది ప్రకటనలు
పిన్మోడ్ (MISO, OUTPUT);
పై స్టేట్మెంట్ MISO ని OUTPUT గా సెట్ చేస్తుంది (మాస్టర్ IN కు డేటాను పంపాలి). కాబట్టి స్లేవ్ ఆర్డునో యొక్క MISO ద్వారా డేటా పంపబడుతుంది.
- ఇప్పుడు SPI కంట్రోల్ రిజిస్టర్ ఉపయోగించి స్లేవ్ మోడ్లో SPI ని ఆన్ చేయండి
SPCR - = _BV (SPE);
- SPI కమ్యూనికేషన్ కోసం అంతరాయాన్ని ఆన్ చేయండి. మాస్టర్ నుండి డేటా స్వీకరించబడితే ఇంటరప్ట్ రొటీన్ అంటారు మరియు అందుకున్న విలువ SPDR (SPI డేటా రిజిస్టర్) నుండి తీసుకోబడుతుంది
SPI.attachInterrupt ();
- మాస్టర్ నుండి విలువ SPDR నుండి తీసుకోబడింది మరియు స్లేవెరిసివ్డ్ వేరియబుల్లో నిల్వ చేయబడుతుంది. ఇంటరప్ట్ రొటీన్ ఫంక్షన్ను అనుసరించడంలో ఇది జరుగుతుంది.
ISR (SPI_STC_vect) { బానిస = SPDR; అందుకున్నది = నిజం; }
3. శూన్య లూప్ () లో తదుపరి మేము స్లేవెరిసివ్డ్ విలువను బట్టి ఆన్ లేదా ఆఫ్ చేయడానికి స్లేవ్ ఆర్డునో LED ని సెట్ చేసాము.
if (స్లేవెరిసివ్డ్ == 1) { డిజిటల్ రైట్ (LEDpin, HIGH); // పిన్ 7 ను హై ఎల్ఈడీ ఆన్ సీరియల్.ప్రింట్ల్న్ ("స్లేవ్ ఎల్ఈడి ఆన్") గా సెట్ చేస్తుంది; } else { డిజిటల్ రైట్ (LEDpin, LOW); // పిన్ 7 ను తక్కువ LED ఆఫ్ సీరియల్.ప్రింట్ల్న్ ("స్లేవ్ LED ఆఫ్") గా సెట్ చేస్తుంది; }
- తరువాత మేము స్లేవ్ ఆర్డునో పుష్ బటన్ యొక్క స్థితిని చదివి, విలువను స్లేవ్సెండ్లో నిల్వ చేసి, విలువను ఎస్పిడిఆర్ రిజిస్టర్కు విలువ ఇవ్వడం ద్వారా మాస్టర్ ఆర్డునోకు పంపించాము .
buttonvalue = డిజిటల్ రీడ్ (బటన్పిన్); if (buttonvalue == HIGH) {x = 1; } else {x = 0; } స్లేవ్సెండ్ = x; SPDR = స్లేవ్సెండ్;
గమనిక: సీరియల్ మోటార్ ఆఫ్ ఆర్డునో IDE లో ఫలితాన్ని వీక్షించడానికి మేము serial.println () ను ఉపయోగిస్తాము. చివరిలో వీడియోను తనిఖీ చేయండి.
ఆర్డునోలో SPI ఎలా పనిచేస్తుంది? - దీనిని పరీక్షిద్దాం!
రెండు ఆర్డునో బోర్డుల మధ్య SPI కమ్యూనికేషన్ కోసం తుది సెటప్ యొక్క చిత్రం క్రింద ఉంది .
మాస్టర్ వైపు పుష్ బటన్ నొక్కినప్పుడు, బానిస వైపు తెల్లని LED ఆన్ అవుతుంది.
మరియు స్లేవ్ వైపు పుష్ బటన్ నొక్కినప్పుడు, మాస్టర్ వైపు ఎరుపు LED ఆన్ అవుతుంది.
Arduino SPI కమ్యూనికేషన్ యొక్క ప్రదర్శనను చూడటానికి మీరు ఈ క్రింది వీడియోను చూడవచ్చు. మీకు ఏవైనా ప్రశ్నలు ఉంటే వాటిని వ్యాఖ్య విభాగంలో ఉంచండి, మా ఫోరమ్లను వాడండి.