- STM32F103C8 I2C கண்ணோட்டம்
- STM32F103C8 இல் I2C பின்ஸ்
- Arduino இல் I2C ஊசிகளும்
- கூறுகள் தேவை
- சுற்று வரைபடம் மற்றும் இணைப்புகள்
- STM32 இல் I2C புரோகிராமிங்
- முதன்மை STM32 நிரலாக்க விளக்கம்
- ஸ்லேவ் அர்டுயினோ புரோகிராமிங் விளக்கம்
எங்கள் முந்தைய டுடோரியல்களில், இரண்டு ஆர்டுயினோ போர்டுகளுக்கு இடையிலான SPI மற்றும் I2C தொடர்பு பற்றி அறிந்து கொண்டோம். இந்த டுடோரியலில், ஒரு ஆர்டுயினோ போர்டை STM32F103C8 என்ற ப்ளூ பில் போர்டுடன் மாற்றுவோம், மேலும் I2C பஸ்ஸைப் பயன்படுத்தி Arduino போர்டுடன் தொடர்புகொள்வோம்.
ஆர்டுயினோ போர்டை விட STM32 அதிக அம்சங்களைக் கொண்டுள்ளது. எனவே SPI & I2C பஸ்ஸைப் பயன்படுத்துவதன் மூலம் STM32 க்கும் Arduino க்கும் இடையிலான தொடர்பு பற்றி அறிந்து கொள்வது மிகவும் நன்றாக இருக்கும். இந்த டுடோரியலில், Arduino மற்றும் STM32F103C8 இடையேயான தகவல்தொடர்புக்கு I2C பஸ்ஸைப் பயன்படுத்துவோம், மேலும் அடுத்த டுடோரியலில் SPI பஸ் பற்றி அறிந்து கொள்வோம். STM32 போர்டு பற்றி மேலும் அறிய, பிற STM32 திட்டங்களை சரிபார்க்கவும்.
STM32F103C8 I2C கண்ணோட்டம்
எஸ்.டி.எம். STM32 உள்ளது இரண்டு I2C பஸ் Arduino யூனோ மட்டுமே உள்ளது போது ஒரு I2C பஸ் மற்றும் STM32 வேகமாக Arduino தான் விட.
I2C தகவல்தொடர்பு பற்றி மேலும் அறிய, எங்கள் முந்தைய கட்டுரைகளைப் பார்க்கவும்
- Arduino இல் I2C ஐ எவ்வாறு பயன்படுத்துவது: இரண்டு Arduino போர்டுகளுக்கு இடையிலான தொடர்பு
- PIC மைக்ரோகண்ட்ரோலருடன் I2C தொடர்பு PIC16F877
- I2C ஐப் பயன்படுத்தி ESP32 உடன் 16X2 LCD ஐ இடைமுகப்படுத்துகிறது
- MSP430 Launchpad உடன் I2C தொடர்பு
- I2C ஐப் பயன்படுத்தாமல் NodeMCU உடன் LCD ஐ இடைமுகப்படுத்துகிறது
- Arduino இன் ஒற்றை நிரலில் பல தகவல்தொடர்புகளை (I2C SPI UART) எவ்வாறு கையாள்வது
STM32F103C8 இல் I2C பின்ஸ்
எஸ்.டி.ஏ: பிபி 7 அல்லது பிபி 9, பிபி 11.
SCL:: PB6 அல்லது PB8, PB10.

Arduino இல் I2C ஊசிகளும்
எஸ்.டி.ஏ: ஏ 4 முள்
எஸ்சிஎல்: ஏ 5 முள்

கூறுகள் தேவை
- STM32F103C8
- அர்டுடினோ யூனோ
- எல்.ஈ.டி (2-எண்)
- புஷ் பொத்தான் (2-எண்)
- மின்தடையங்கள் (4-எண்)
- ப்ரெட்போர்டு
- கம்பிகளை இணைக்கிறது
சுற்று வரைபடம் மற்றும் இணைப்புகள்

I2C பஸ்ஸைப் பயன்படுத்துவதற்கு STM32 ப்ளூ பில் மற்றும் அர்டுயினோ யூனோ இடையேயான தொடர்பை பின்வரும் அட்டவணை காட்டுகிறது. இதற்கு இரண்டு கம்பிகள் மட்டுமே தேவை.
|
STM32F103C8 |
அர்டுயினோ |
முள் விளக்கம் |
|
பி 7 |
அ 4 |
எஸ்.டி.ஏ. |
|
பி 6 |
அ 5 |
எஸ்.சி.எல் |
|
ஜி.என்.டி. |
ஜி.என்.டி. |
தரையில் |
முக்கியமான
- Arduino GND மற்றும் STM32F103C8 GND ஐ ஒன்றாக இணைக்க மறக்காதீர்கள்.
- பலகையின் புஷ் பொத்தான் ஊசிகளுடன் தனித்தனியாக 10k இன் புல் டவுன் மின்தடையத்தை இணைக்கவும்.
இந்த STM32 I2C டுடோரியலில், STM32F103C8 ஐ மாஸ்டராகவும், அர்டுயினோவை அடிமையாகவும் கட்டமைப்போம். இரண்டு பலகைகளும் எல்.ஈ.டி மற்றும் புஷ் பொத்தானுடன் தனித்தனியாக இணைக்கப்பட்டுள்ளன.
STM32 இல் I2C தகவல்தொடர்புகளை நிரூபிக்க, அடிமை Arduino மிகுதி பொத்தான் மதிப்பைப் பயன்படுத்துவதன் மூலம் முதன்மை STM32 LED ஐக் கட்டுப்படுத்துகிறோம் மற்றும் மாஸ்டர் STM32F103C8 புஷ் பொத்தான் மதிப்பைப் பயன்படுத்துவதன் மூலம் அடிமை Arduino LED ஐக் கட்டுப்படுத்துகிறோம். இந்த மதிப்புகள் I2C தொடர்பு பஸ் வழியாக அனுப்பப்படுகின்றன.
STM32 இல் I2C புரோகிராமிங்
நிரலாக்கமானது Arduino குறியீட்டைப் போன்றது. அதே
இந்த டுடோரியலில் மாஸ்டர் எஸ்.டி.எம் 32 மற்றும் ஒன்று அடிமை அர்டுயினோவுக்கு இரண்டு திட்டங்கள் உள்ளன. இரு தரப்பினருக்கும் முழுமையான நிரல்கள் இந்த திட்டத்தின் முடிவில் ஒரு ஆர்ப்பாட்ட வீடியோவுடன் கொடுக்கப்பட்டுள்ளன.
முதன்மை STM32 நிரலாக்க விளக்கம்
மாஸ்டர் STM32 இல் என்ன நடக்கிறது என்று பார்ப்போம்:
1. முதலில் நாம் STM32F103C8 இல் I2C தகவல்தொடர்பு செயல்பாடுகளைப் பயன்படுத்துவதற்கு வயர் நூலகம் மற்றும் மென்பொருள் நூலகத்தை சேர்க்க வேண்டும்.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- நாங்கள் பாட் வீதம் 9600 இல் தொடர் தொடர்புகளைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (9600);
- அடுத்து I2C தகவல்தொடர்புகளை முள் (B6, B7) இல் தொடங்குவோம்
வயர்.பெஜின் ();
3. வெற்றிட சுழற்சியில் ()
- முதலில் நாம் ஸ்லேவ் அர்டுயினோவிலிருந்து தரவைப் பெறுகிறோம், எனவே அடிமை முகவரி 8 உடன் requestFrom () ஐப் பயன்படுத்துகிறோம், மேலும் ஒரு பைட்டைக் கோருகிறோம்.
வயர்.ரெக்வெஸ்ட் (8,1);
பெறப்பட்ட மதிப்பு Wire.read () ஐப் பயன்படுத்தி படிக்கப்படுகிறது
byte a = Wire.read ();
- அடிமையிலிருந்து பெறப்பட்ட மதிப்பைப் பொறுத்து முள் பிஏ 1 இல் டிஜிட்டல் ரைட்டைப் பயன்படுத்துவதன் மூலம் மாஸ்டர் எல்இடி ஆன் அல்லது ஆஃப் செய்யப்படுகிறது, மேலும் சீரியல் மானிட்டரில் மதிப்பை அச்சிட சீரியல் அச்சு பயன்படுத்தப்படுகிறது
if (a == 1) { DigitalWrite (LED, HIGH); Serial.println ("மாஸ்டர் எல்இடி ஆன்"); } else { டிஜிட்டல்ரைட் (எல்.ஈ.டி, குறைந்த); Serial.println ("மாஸ்டர் எல்இடி ஆஃப்"); }
- அடுத்து முள் PA0 இன் நிலையை நாம் படிக்க வேண்டும், அது முதன்மை STM32 புஷ் பொத்தான்.
int pinvalue = டிஜிட்டல் ரீட் (பட்டன்பின்);
- அடுத்து தர்க்கத்தின் படி முள் மதிப்பை அனுப்புங்கள், எனவே நிபந்தனை என்றால் பயன்படுத்துகிறோம் , பின்னர் அடிமை அர்டுயினோவுடன் 8 உடன் முகவரியுடன் பரிமாற்றத்தைத் தொடங்குகிறோம், பின்னர் புஷ் பொத்தான் உள்ளீட்டு மதிப்புக்கு ஏற்ப மதிப்பை எழுதுங்கள்.
if (pinvalue == HIGH) { x = 1; } else { x = 0; } வயர்.பெஜின் டிரான்ஸ்மிஷன் (8); வயர்.ரைட் (x); வயர்.இன்ட் டிரான்ஸ்மிஷன் ();
ஸ்லேவ் அர்டுயினோ புரோகிராமிங் விளக்கம்
1. முதலில் I2C தகவல்தொடர்பு செயல்பாடுகளைப் பயன்படுத்துவதற்கு வயர் நூலகத்தை நாம் சேர்க்க வேண்டும்.
#சேர்க்கிறது
2. வெற்றிட அமைப்பில் ()
- நாங்கள் பாட் வீதம் 9600 இல் தொடர் தொடர்புகளைத் தொடங்குகிறோம்.
சீரியல்.பெஜின் (9600);
- அடுத்து அடிமை முகவரியுடன் 8 (A4, A5) இல் I2C தகவல்தொடர்பு 8 ஐத் தொடங்கவும். இங்கே அடிமை முகவரியைக் குறிப்பிடுவது முக்கியம்.
வயர்.பெஜின் (8);
அடுத்து ஸ்லேவ் மாஸ்டரிடமிருந்து மதிப்பைப் பெறும்போது Wire.onReceive செயல்பாட்டை அழைக்க வேண்டும் மற்றும் ஸ்லேவிலிருந்து மாஸ்டர் கோரிக்கை மதிப்பைக் கொண்டிருக்கும்போது Wire.onRequest செயல்பாட்டு அழைப்பை அழைக்க வேண்டும்.
Wire.onReceive (receEvent); Wire.onRequest (requestEvent);
3. அடுத்து கோரிக்கை நிகழ்வுக்கு ஒன்று மற்றும் நிகழ்வைப் பெறுவதற்கு ஒன்று என இரண்டு செயல்பாடுகள் உள்ளன
கோரிக்கை நிகழ்வுக்கு
அடிமையிலிருந்து முதன்மை STM32 கோரிக்கை மதிப்பு இந்த செயல்பாடு செயல்படும். இந்த செயல்பாடு ஸ்லேவ் அர்டுயினோ புஷ் பொத்தானிலிருந்து உள்ளீட்டு மதிப்பை எடுத்து, வயர்.ரைட் () ஐப் பயன்படுத்தி புஷ் பொத்தான் மதிப்பின் படி மாஸ்டர் எஸ்.டி.எம் 32 க்கு ஒரு பைட்டை (1 அல்லது 0) அனுப்புகிறது.
void requestEvent () { int value = DigitalRead (buttonpin); if (மதிப்பு == உயர்) { x = 1; } else { x = 0; } வயர்.ரைட் (x); }
நிகழ்வைப் பெற
அடிமை முகவரியுடன் (8) அடிமைக்கு மாஸ்டர் தரவை அனுப்பும்போது, இந்த செயல்பாடு செயல்படும். இந்த செயல்பாடு ஹேஸ்கலில் பைட் ஒரு மாறி உள்ள மாஸ்டர் மற்றும் கடையில் பெற்றதோடு மதிப்பு கூறுகிறது பின்னர் பயன்படுத்த என்றால் தர்க்கம் எல்இடி ஆன் அல்லது ஆஃப் பெற்றார் மதிப்பு பொறுத்து அடிமை திரும்ப. பெறப்பட்ட மதிப்பு 1 எனில், எல்.ஈ.டி இயங்கும் மற்றும் 0 எல்.ஈ.டி அணைக்கப்படும்.
void receEvent (int howMany) { byte a = Wire.read (); if (a == 1) { DigitalWrite (LED, HIGH); Serial.println ("ஸ்லேவ் எல்இடி ஆன்"); } else { டிஜிட்டல்ரைட் (எல்.ஈ.டி, குறைந்த); Serial.println ("ஸ்லேவ் எல்இடி ஆஃப்"); } தாமதம் (500); }
வெளியீடு
1. மாஸ்டர் எஸ்.டி.எம் 32 இல் புஷ் பொத்தானை அழுத்தும்போது, ஸ்லேவ் ஆர்டியோனோவுடன் இணைக்கப்பட்ட எல்.ஈ.டி ஆன் (வெள்ளை) ஆகிறது.

2. இப்போது நாம் ஸ்லேவ் பக்கத்தில் உள்ள புஷ் பொத்தானை அழுத்தும்போது, மாஸ்டருடன் இணைக்கப்பட்ட எல்.ஈ.டி ஆன் (சிவப்பு) ஆகிறது மற்றும் பொத்தானை வெளியிடும் போது எல்.ஈ.டி முடக்கப்படும்.

3. இரண்டு புஷ் பொத்தான்களும் ஒரே நேரத்தில் அழுத்தும் போது, இரண்டு எல்.ஈ.டிகளும் ஒரே நேரத்தில் ஒளிரும், மற்றும் பொத்தான்கள் அழுத்தும் வரை தொடர்ந்து இருக்கும்

எனவே STM32 இல் I2C தொடர்பு நடைபெறுகிறது. இப்போது நீங்கள் எந்த I2C சென்சாரையும் STM32 போர்டுடன் இடைமுகப்படுத்தலாம்.
மாஸ்டர் எஸ்.டி.எம் 32 மற்றும் ஸ்லேவ் அர்டுயினோவுக்கான முழுமையான குறியீட்டு முறை ஒரு ஆர்ப்பாட்ட வீடியோவுடன் கீழே கொடுக்கப்பட்டுள்ளது
