- எஸ்பிஐ என்றால் என்ன?
- SPI இன் வேலை
- Arduino UNO இல் SPI பின்ஸ்
- Arduino இல் SPI ஐப் பயன்படுத்துதல்
- Arduino SPI தகவல்தொடர்புக்கு தேவையான கூறுகள்
- Arduino SPI தொடர்பு சுற்று வரைபடம்
- எஸ்பிஐ தகவல்தொடர்புக்காக அர்டுயினோவை எவ்வாறு நிரல் செய்வது:
- Arduino SPI முதன்மை நிரலாக்க விளக்கம்
- Arduino SPI ஸ்லேவ் புரோகிராமிங் விளக்கம்
- Arduino இல் SPI எவ்வாறு செயல்படுகிறது? - அதை சோதிப்போம்!
மைக்ரோகண்ட்ரோலர் பல்வேறு சென்சார்கள் மற்றும் தொகுதிகளுடன் தொடர்பு கொள்ள பல்வேறு நெறிமுறைகளைப் பயன்படுத்துகிறது. வயர்லெஸ் மற்றும் கம்பி தகவல்தொடர்புக்கு பல்வேறு வகையான தகவல் தொடர்பு நெறிமுறைகள் உள்ளன, மேலும் பொதுவாக பயன்படுத்தப்படும் தகவல் தொடர்பு நுட்பம் சீரியல் கம்யூனிகேஷன் ஆகும். சீரியல் கம்யூனிகேஷன் என்பது ஒரு தகவல்தொடர்பு சேனல் அல்லது பஸ் வழியாக தொடர்ச்சியாக ஒரு பிட் தரவை அனுப்பும் செயல்முறையாகும். UART, CAN, USB, I2C மற்றும் SPI தொடர்பு போன்ற பல வகையான தொடர் தொடர்புகள் உள்ளன.
இந்த டுடோரியலில், SPI நெறிமுறை மற்றும் அதை Arduino இல் எவ்வாறு பயன்படுத்துவது என்பது பற்றி அறிகிறோம். நாம் பயன்படுத்தும் இரண்டு Arduinos இடையிலான தொடர்பை SPI நெறிமுறை. இங்கே ஒரு அர்டுயினோ மாஸ்டராகவும் மற்றொன்று ஸ்லேவாகவும் செயல்படும், இரண்டு எல்.ஈ.டி மற்றும் புஷ் பொத்தான்கள் அர்டுயினோ இரண்டிலும் இணைக்கப்படும். எஸ்பிஐ தகவல்தொடர்புகளை நிரூபிக்க, அடிமை பக்கத்தில் உள்ள புஷ் பொத்தானைக் கொண்டு மாஸ்டர் சைட் எல்இடியைக் கட்டுப்படுத்துவோம், மேலும் இதற்கு நேர்மாறாக எஸ்பிஐ சீரியல் கம்யூனிகேஷன் புரோட்டோகால் பயன்படுத்துகிறோம்.
எஸ்பிஐ என்றால் என்ன?
SPI (சீரியல் புற இடைமுகம்) ஒரு தொடர் தொடர்பு நெறிமுறை. எஸ்பிஐ இடைமுகம் 1970 இல் மோட்டோரோலாவால் கண்டுபிடிக்கப்பட்டது. எஸ்பிஐ ஒரு முழு-இரட்டை இணைப்பைக் கொண்டுள்ளது, அதாவது தரவு ஒரே நேரத்தில் அனுப்பப்பட்டு பெறப்படுகிறது. அதாவது ஒரு மாஸ்டர் ஒரு அடிமைக்கு தரவை அனுப்ப முடியும், ஒரு அடிமை ஒரே நேரத்தில் எஜமானருக்கு தரவை அனுப்ப முடியும். SPI என்பது ஒத்திசைவான தொடர் தொடர்பு என்பது தகவல் தொடர்பு நோக்கங்களுக்காக கடிகாரம் தேவை என்பதாகும்.
SPI தொடர்பு முன்னர் மற்ற மைக்ரோகண்ட்ரோலர்களில் விளக்கப்பட்டுள்ளது:
- PIC மைக்ரோகண்ட்ரோலருடன் PIC16F877A உடன் SPI தொடர்பு
- ராஸ்பெர்ரி பை உடன் 3.5 இன்ச் டச் ஸ்கிரீன் டிஎஃப்டி எல்சிடி இடைமுகப்படுத்துகிறது
- எஸ்பிஐ ஊசிகளுடன் ஏ.வி.ஆர் மைக்ரோகண்ட்ரோலரை புரோகிராமிங் செய்கிறது
- நோக்கியா 5110 வரைகலை எல்.சி.டி.
SPI இன் வேலை
ஒரு எஸ்பிஐ நான்கு வரிகளைப் பயன்படுத்தி மாஸ்டர் / ஸ்லேவ் தகவல்தொடர்பு கொண்டுள்ளது. ஒரு SPI க்கு ஒரே ஒரு மாஸ்டர் மட்டுமே இருக்க முடியும் மற்றும் பல அடிமைகளைக் கொண்டிருக்க முடியும். ஒரு மாஸ்டர் பொதுவாக மைக்ரோகண்ட்ரோலர் மற்றும் அடிமைகள் மைக்ரோகண்ட்ரோலர், சென்சார்கள், ஏடிசி, டிஏசி, எல்சிடி போன்றவையாக இருக்கலாம்.
ஒற்றை அடிமை கொண்ட SPI மாஸ்டரின் தொகுதி வரைபட பிரதிநிதித்துவம் கீழே.

எஸ்பிஐ MISO, MOSI, SS மற்றும் CLK ஆகிய நான்கு வரிகளைப் பின்பற்றுகிறது
- MISO (மாஸ்டர் இன் ஸ்லேவ் அவுட்) - மாஸ்டருக்கு தரவை அனுப்புவதற்கான அடிமை வரி.
- மோசி (மாஸ்டர் அவுட் ஸ்லேவ் இன்) - சாதனங்களுக்கு தரவை அனுப்புவதற்கான முதன்மை வரி.
- SCK (சீரியல் கடிகாரம்) - மாஸ்டர் உருவாக்கிய தரவு பரிமாற்றத்தை ஒத்திசைக்கும் கடிகார பருப்பு வகைகள்.
- எஸ்எஸ் (ஸ்லேவ் செலக்ட்) -மாஸ்டர் குறிப்பிட்ட சாதனங்களை இயக்க மற்றும் முடக்க இந்த முள் பயன்படுத்தலாம்.
பல அடிமைகளுடன் SPI மாஸ்டர்

மாஸ்டர் மற்றும் அடிமைக்கு இடையேயான தகவல்தொடர்புகளைத் தொடங்க, தேவையான சாதனத்தின் ஸ்லேவ் செலக்ட் (எஸ்எஸ்) முள் குறைந்ததாக அமைக்க வேண்டும், இதனால் அது மாஸ்டருடன் தொடர்பு கொள்ள முடியும். அது அதிகமாக இருக்கும்போது, அது எஜமானரைப் புறக்கணிக்கிறது. ஒரே மாதிரியான MISO, MOSI மற்றும் CLK வரிகளை பகிர்ந்து கொள்ளும் பல SPI சாதனங்களை வைத்திருக்க இது உங்களை அனுமதிக்கிறது. மேலேயுள்ள படத்தில் நீங்கள் காணக்கூடியபடி நான்கு அடிமைகள் உள்ளன, இதில் SCLK, MISO, MOSI ஆகியவை மாஸ்டருடன் பொதுவாக இணைக்கப்பட்டுள்ளன, மேலும் ஒவ்வொரு அடிமையின் எஸ்எஸ் மாஸ்டரின் தனிப்பட்ட எஸ்எஸ் ஊசிகளுடன் (SS1, SS2, SS3) தனித்தனியாக இணைக்கப்பட்டுள்ளது. தேவையான SS முள் குறைவாக அமைப்பதன் மூலம் ஒரு மாஸ்டர் அந்த அடிமையுடன் தொடர்பு கொள்ள முடியும்.
Arduino UNO இல் SPI பின்ஸ்
கீழேயுள்ள படம் SPI ஊசிகளை Arduino UNO (சிவப்பு பெட்டியில்) இருப்பதைக் காட்டுகிறது.

|
SPI வரி |
Arduino இல் முள் |
|
மோசி |
11 அல்லது ஐ.சி.எஸ்.பி -4 |
|
மிசோ |
12 அல்லது ஐ.சி.எஸ்.பி -1 |
|
எஸ்.சி.கே. |
13 அல்லது ஐ.சி.எஸ்.பி -3 |
|
எஸ்.எஸ் |
10 |
Arduino இல் SPI ஐப் பயன்படுத்துதல்
இரண்டு Arduinos க்கு இடையில் SPI தகவல்தொடர்புக்கான நிரலாக்கத்தைத் தொடங்குவதற்கு முன். Arduino IDE இல் பயன்படுத்தப்படும் Arduino SPI நூலகத்தைப் பற்றி நாம் கற்றுக்கொள்ள வேண்டும்.
நூலகம்
1. SPI.begin ()
பயன்படுத்தவும்: எஸ்பிஐ, மோசி மற்றும் எஸ்எஸ் ஆகியவற்றை வெளியீடுகளுக்கு அமைப்பதன் மூலம் எஸ்பிஐ பஸ்ஸைத் தொடங்க, எஸ்.சி.கே மற்றும் மோஸியை குறைவாக இழுத்து, எஸ்.எஸ்.
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 இரண்டும் எல்.ஈ.டி மற்றும் புஷ் பொத்தானுடன் தனித்தனியாக இணைக்கப்பட்டுள்ளன. அடிமை அர்டுயினோவின் புஷ் பொத்தானைப் பயன்படுத்துவதன் மூலம் மாஸ்டர் எல்.ஈ.யைக் கட்டுப்படுத்தலாம் மற்றும் அடிமை அர்டுயினோவின் எல்.ஈ.யை மாஸ்டர் ஆர்டுயினோவின் புஷ் பொத்தானால் கட்டுப்படுத்தலாம்.
Arduino SPI தகவல்தொடர்புக்கு தேவையான கூறுகள்
- Arduino UNO (2)
- எல்.ஈ.டி (2)
- புஷ் பட்டன் (2)
- மின்தடை 10 கே (2)
- மின்தடை 2.2 கே (2)
- ப்ரெட்போர்டு
- கம்பிகளை இணைக்கிறது
Arduino SPI தொடர்பு சுற்று வரைபடம்
Arduino UNO இல் SPI ஐ எவ்வாறு பயன்படுத்துவது என்பதை கீழே உள்ள சுற்று வரைபடம் காட்டுகிறது, ஆனால் Arduino Mega SPI Communication அல்லது Arduino நானோ SPI தகவல்தொடர்புக்கும் நீங்கள் அதே முறையைப் பின்பற்றலாம். முள் எண்ணைத் தவிர கிட்டத்தட்ட எல்லாமே அப்படியே இருக்கும். Arduino நானோ அல்லது மெகாவின் பின்அவுட்டை நீங்கள் சரிபார்க்க வேண்டும், Arduino நானோ SPI ஊசிகளையும் Arduino Mega ஊசிகளையும் கண்டுபிடிக்க, நீங்கள் செய்தவுடன் எல்லாமே ஒரே மாதிரியாக இருக்கும்.

மேலே காட்டப்பட்டுள்ள சுற்றுவட்டத்தை நான் ஒரு பிரெட்போர்டில் கட்டியுள்ளேன், கீழே சோதனைக்கு நான் பயன்படுத்திய சுற்று அமைப்பை நீங்கள் காணலாம்.

எஸ்பிஐ தகவல்தொடர்புக்காக அர்டுயினோவை எவ்வாறு நிரல் செய்வது:
இந்த டுடோரியலில் இரண்டு திட்டங்கள் உள்ளன, ஒன்று மாஸ்டர் அர்டுயினோவிற்கும் மற்றொன்று அடிமை அர்டுயினோவிற்கும். இந்த திட்டத்தின் முடிவில் இரு தரப்பினருக்கும் முழுமையான திட்டங்கள் வழங்கப்படுகின்றன.
Arduino SPI முதன்மை நிரலாக்க விளக்கம்
1. முதலில் நாம் SPI தொடர்பு செயல்பாடுகளைப் பயன்படுத்த SPI நூலகத்தை சேர்க்க வேண்டும்.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- பாட் வீதம் 115200 இல் சீரியல் கம்யூனிகேஷனைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (115200);
- பின் 7 க்கு எல்.ஈ.டி மற்றும் பின் 2 ஐ அழுத்த பொத்தானை இணைத்து அந்த ஊசிகளை முறையே OUTPUT மற்றும் INPUT ஐ அமைக்கவும்.
pinMode (ipbutton, INPUT); pinMode (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);
- இங்கே முக்கியமான படி வருகிறது, பின்வரும் அறிக்கையில், மாஸ்டர்செண்ட் மாறியில் சேமிக்கப்பட்ட புஷ் பொத்தான் மதிப்பை அடிமை அர்டுயினோவுக்கு அனுப்புகிறோம் , மேலும் அடிமையிலிருந்து மதிப்பைப் பெறுகிறோம் , அவை மாஸ்டெரெசிவ் மாறியில் சேமிக்கப்படும் .
Mastereceive = SPI.transfer (Mastersend);
- அதன்பிறகு மாஸ்டெரெசிவ் மதிப்பைப் பொறுத்து மாஸ்டர் ஆர்டுயினோ எல்.ஈ.டி ஆன் அல்லது ஆஃப் செய்வோம்.
if (Mastereceive == 1) { DigitalWrite (LED, HIGH); // பின் 7 HIGH Serial.println ஐ அமைக்கிறது ("மாஸ்டர் எல்இடி ஆன்"); } else { டிஜிட்டல்ரைட் (எல்.ஈ.டி, குறைந்த); // முள் 7 குறைந்த Serial.println ஐ அமைக்கிறது ("மாஸ்டர் LED OFF"); }
குறிப்பு: Arduino IDE இன் சீரியல் மோட்டரில் முடிவைக் காண serial.println () ஐப் பயன்படுத்துகிறோம். வீடியோவை இறுதியில் சரிபார்க்கவும்.
Arduino SPI ஸ்லேவ் புரோகிராமிங் விளக்கம்
1. முதலில் நாம் SPI தொடர்பு செயல்பாடுகளைப் பயன்படுத்த SPI நூலகத்தை சேர்க்க வேண்டும்.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- பாட் வீதம் 115200 இல் சீரியல் கம்யூனிகேஷனைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (115200);
- பின் 7 க்கு எல்.ஈ.டி மற்றும் பின் 2 க்கு புஷ் பொத்தானை இணைத்து அந்த ஊசிகளை முறையே OUTPUT மற்றும் INPUT ஐ அமைக்கவும்.
pinMode (ipbutton, INPUT); pinMode (LED, OUTPUT);
- இங்கே முக்கியமான படி பின்வரும் அறிக்கைகள்
pinMode (MISO, OUTPUT);
மேலே உள்ள அறிக்கை MISO ஐ OUTPUT ஆக அமைக்கிறது (முதன்மை IN க்கு தரவை அனுப்ப வேண்டும்). எனவே ஸ்லேவ் அர்டுயினோவின் MISO வழியாக தரவு அனுப்பப்படுகிறது.
- இப்போது SPI கட்டுப்பாட்டு பதிவேட்டைப் பயன்படுத்தி அடிமை பயன்முறையில் SPI ஐ இயக்கவும்
SPCR - = _BV (SPE);
- SPI தகவல்தொடர்புக்கு குறுக்கீட்டை இயக்கவும். மாஸ்டரிடமிருந்து ஒரு தரவு பெறப்பட்டால், குறுக்கீடு வழக்கம் அழைக்கப்படுகிறது மற்றும் பெறப்பட்ட மதிப்பு SPDR (SPI தரவு பதிவு) இலிருந்து எடுக்கப்படுகிறது
SPI.attachInterrupt ();
- மாஸ்டரிடமிருந்து வரும் மதிப்பு SPDR இலிருந்து எடுக்கப்பட்டு ஸ்லேவரீசிவ் மாறியில் சேமிக்கப்படுகிறது. குறுக்கீடு வழக்கமான செயல்பாட்டைப் பின்பற்றுவதில் இது நடைபெறுகிறது.
ISR (SPI_STC_vect) { அடிமைத்தனம் = SPDR; பெற்றது = உண்மை; }
3. வெற்றிட சுழற்சியில் அடுத்தது () அடிமை மதிப்பைப் பொறுத்து ஸ்லேவ் அர்டுயினோ எல்.ஈ. ஐ இயக்க அல்லது முடக்குகிறோம்.
if (Slavereceived == 1) { DigitalWrite (LEDpin, HIGH); // முள் 7 ஐ ஹை எல்இடி ஆன் சீரியல்.பிரண்ட்லினாக அமைக்கிறது ("ஸ்லேவ் எல்இடி ஆன்"); } else { டிஜிட்டல்ரைட் (LEDpin, LOW); // முள் 7 ஐ குறைந்த எல்.ஈ.டி ஆஃப் சீரியல்.பிரண்ட்ல்ன் ("ஸ்லேவ் எல்இடி ஆஃப்") என அமைக்கிறது ; }
- அடுத்து ஸ்லேவ் அர்டுயினோ புஷ் பொத்தானின் நிலையைப் படித்து, மதிப்பை ஸ்லேவ்ஸெண்டில் சேமித்து எஸ்பிடிஆர் பதிவேட்டில் மதிப்பு கொடுத்து மாஸ்டர் அர்டுயினோவுக்கு மதிப்பை அனுப்புவோம்.
buttonvalue = டிஜிட்டல் ரீட் (பட்டன்பின்); if (buttonvalue == HIGH) {x = 1; } else {x = 0; } ஸ்லேவ்ஸெண்ட் = x; எஸ்.பி.டி.ஆர் = ஸ்லேவ்ஸெண்ட்;
குறிப்பு: Arduino IDE இன் சீரியல் மோட்டரில் முடிவைக் காண serial.println () ஐப் பயன்படுத்துகிறோம். வீடியோவை இறுதியில் சரிபார்க்கவும்.
Arduino இல் SPI எவ்வாறு செயல்படுகிறது? - அதை சோதிப்போம்!
இரண்டு அர்டுயினோ போர்டுகளுக்கு இடையிலான SPI தகவல்தொடர்புக்கான இறுதி அமைப்பின் படம் கீழே .
மாஸ்டர் பக்கத்தில் புஷ் பொத்தானை அழுத்தும்போது, அடிமை பக்கத்தில் வெள்ளை எல்.ஈ.

ஸ்லேவ் பக்கத்தில் உள்ள புஷ் பொத்தானை அழுத்தும்போது, மாஸ்டர் பக்கத்தில் சிவப்பு எல்.ஈ.

Arduino SPI தகவல்தொடர்புகளின் ஆர்ப்பாட்டத்தைக் காண கீழேயுள்ள வீடியோவை நீங்கள் பார்க்கலாம். உங்களிடம் ஏதேனும் கேள்விகள் இருந்தால், அவற்றை எங்கள் கருத்துக்களைப் பிரிவில் விடுங்கள்.
