- ایس ٹی ایم 32 ایف 103 سی 8 میں ایس پی آئی
- ارڈینو میں ایس پی آئی پنس
- ضروری اجزاء
- سرکٹ ڈایاگرام اور STM32 SPI سبق کے لئے رابطے
- STM32 SPI پروگرامنگ
- ماسٹر STM32 SPI پروگرامنگ وضاحت
- غلام اردوینو ایس پی آئی پروگرامنگ وضاحت
ہمارے پچھلے سبق میں ، ہم دو اردوینو بورڈ کے مابین ایس پی آئی اور آئی 2 سی مواصلات کے بارے میں سیکھ چکے ہیں۔ اس ٹیوٹوریل میں ہم ایک اردوینو بورڈ کو بلیو گولی بورڈ سے تبدیل کریں گے جو STM32F103C8 ہے اور ایس پی آئی بس کا استعمال کرتے ہوئے ایردوینو بورڈ کے ساتھ بات چیت کرے گا۔ اس ایس ٹی ایم 32 ایس پی آئی مثال میں ، ہم آرڈوینو یو این او کو بطور غلام اور ایس ٹی ایم 32 ایف 103 سی 8 کو بطور ماسٹر بطور دو 16 ایکس 2 ایل سی ڈی ڈسپلے ایک دوسرے کے ساتھ منسلک کریں گے۔ ماہر سے غلام اور غلام سے ماسٹر کی طرف بھیجنے والے اقدار (0 سے 255) کا تقاضا کرنے کے لئے ایس پی ایم 32 (PA0) اور ارڈینو (A0) کے ساتھ دو پوٹینومیٹر بھی جڑے ہوئے ہیں۔
ایس ٹی ایم 32 ایف 103 سی 8 میں ایس پی آئی
اردوینو اور ایس ٹی ایم 32 ایف 103 سی 8 بلیو گولی بورڈ میں ایس پی آئی بس کا موازنہ کرتے ہوئے ، ایس ٹی ایم 32 کے پاس اس میں 2 ایس پی آئی بس ہے جبکہ ارڈینو اونو کی ایک ایس پی آئی بس ہے ۔ ارڈینو اونو اس میں اے ٹی ایم ای جی اے 328 مائکروکانٹرولر ہے ، اور ایس ٹی ایم 32 ایف 103 سی 8 میں اے آر ایم کارٹیکس- ایم 3 ہے جو اسے اروڈینو بورڈ سے تیز تر بناتا ہے۔
ایس پی آئی مواصلات کے بارے میں مزید معلومات کے ل our ، ہمارے گذشتہ مضامین کا حوالہ دیں
- ایردوینو میں ایس پی آئی کا استعمال کیسے کریں: دو ارڈینو بورڈ کے مابین مواصلت
- پی آئی سی مائکروکنٹرولر PIC16F877A کے ساتھ ایس پی آئی مواصلات
- بٹ بینگ کے ذریعے ایس پی آئی مواصلات
- ایس پی آئی ماڈیولز کا استعمال کرتے ہوئے راسبیری پِی گرم پانی کے ٹینک لیک ڈٹیکٹر
- DS3231 ماڈیول کا استعمال کرتے ہوئے ESP32 ریئل ٹائم گھڑی
STM32 SPI پنوں STM32F103C8
ایس پی آئی لائن 1 | STM32F103C8 میں پن کریں |
MOSI1 | PA7 یا PB5 |
MISO1 | PA6 یا PB4 |
ایس سی کے 1 | PA5 یا PB3 |
ایس ایس 1 | PA4 یا PA15 |
ایس پی آئی لائن 2 | |
MOSI2 | پی بی 15 |
MISO2 | پی بی 14 |
ایس سی کے 2 | پی بی 13 |
ایس ایس 2 | پی بی 12 |
ارڈینو میں ایس پی آئی پنس
ایس پی آئی لائن |
ارڈینو میں پن |
موسی |
11 یا آئی سی ایس پی۔ 4 |
MISO |
12 یا آئی سی ایس پی۔ 1 |
ایس سی کے |
13 یا آئی سی ایس پی ۔3 |
ایس ایس |
10 |
ضروری اجزاء
- STM32F103C8
- اردوینو
- LCD 16x2 - 2
- 10 ک پوٹینومیٹر - 4
- بریڈ بورڈ
- مربوط تاروں
سرکٹ ڈایاگرام اور STM32 SPI سبق کے لئے رابطے
مندرجہ ذیل ٹیبل میں ارڈوینو کے ساتھ ایس ٹی ایم 32 ایس پی آئی مواصلت کے لئے منسلک پنوں کو دکھایا گیا ہے ۔
ایس پی آئی پن |
STM32F103C8 |
اردوینو |
موسی |
PA7 |
11 |
MISO |
PA6 |
12 |
ایس سی کے |
PA5 |
13 |
ایس ایس 1 |
PA4 |
10 |
نیچے دی گئی جدول میں STM32F103C8 اور Ardino کے ساتھ الگ الگ دو LCD (16x2) کے لئے جڑے ہوئے پن دکھائے گئے ہیں ۔
LCD پن |
STM32F103C8 |
اردوینو |
وی ایس ایس |
GND |
GND |
وی ڈی ڈی |
+ 5 وی |
+ 5 وی |
V0 |
LCD کے برعکس پوٹینومیٹر سینٹر کا PIN |
LCD کے برعکس پوٹینومیٹر سینٹر کا PIN |
RS |
پی بی 0 |
2 |
آر ڈبلیو |
GND |
GND |
ای |
پی بی 1 |
3 |
ڈی 4 |
پی بی 10 |
4 |
ڈی 5 |
پی بی 11 |
5 |
ڈی 6 |
پی سی 13 |
6 |
ڈی 7 |
پی سی 14 |
7 |
A |
+ 5 وی |
+ 5 وی |
K |
GND |
GND |
اہم:
- اردوینو GND اور STM32F103C8 GND کو ایک ساتھ جوڑنا نہ بھولیں۔
STM32 SPI پروگرامنگ
پروگرامنگ اردوینو کوڈ کی طرح ہے۔ ایسا ہی
اس ایس ٹی ایم 32 ایس پی آئی مثال میں ، ہم آرڈوینو یو این او کو بطور غلام اور ایس ٹی ایم 32 ایف 103 سی 8 کو بطور ماسٹر بطور دو 16 ایکس 2 ایل سی ڈی ڈسپلے ایک دوسرے کے ساتھ منسلک کریں گے۔ ماہر سے غلام اور غلام سے ماسٹر کی طرف بھیجنے والے اقدار (0 سے 255) کا تقاضا کرنے کے لئے ایس پی ایم 32 (PA0) اور ارڈینو (A0) کے ساتھ دو پوٹینومیٹر بھی جڑے ہوئے ہیں۔
ینالاگ ان پٹ پوٹینومیٹر کو گھوماتے ہوئے STM32F10C8 پن PA0 (0 سے 3.3V) پر لیا جاتا ہے۔ پھر اس ان پٹ ویلیو کو ینالاگ میں ڈیجیٹل ویلیو (0 سے 4096) میں تبدیل کیا جاتا ہے اور اس ڈیجیٹل ویلیو کو مزید (0 سے 255) میں نقشہ لگایا جاتا ہے کیونکہ ہم ایس پی آئی مواصلات کے ذریعے صرف 8 بٹ (بائٹ) ڈیٹا بھیج سکتے ہیں۔
اسی طرح غلام سائیڈ میں ہم ینالاگ ان پٹ ویلیو کو پوٹینومیٹر کے ذریعہ (0 سے 5V) سے (0 سے 5V) تک لے جاتے ہیں۔ اور ایک بار پھر اس ان پٹ ویلیو کو ینالاگ میں ڈیجیٹل ویلیو (0 سے 1023) میں تبدیل کیا گیا اور اس ڈیجیٹل ویلیو کو مزید (0 سے 255) میں میپ کیا گیا
اس ٹیوٹوریل میں دو پروگرام ہیں ایک ماسٹر STM32 کے لئے اور دوسرا غلام ارڈینو۔ اس پروجیکٹ کے اختتام پر ایک مظاہرے کی ویڈیو کے ساتھ دونوں اطراف کے مکمل پروگرام دیئے گئے ہیں ۔
ماسٹر STM32 SPI پروگرامنگ وضاحت
1. سب سے پہلے ہمیں SPI مواصلات کے افعال کے استعمال کے ل the SPI لائبریری اور LCD افعال استعمال کرنے کیلئے LCD لائبریری شامل کرنے کی ضرورت ہے۔ 16x2 LCD کیلئے LCD پنوں کی بھی وضاحت کریں۔ یہاں STM32 کے ساتھ LCD انٹرفیس کرنے کے بارے میں مزید معلومات حاصل کریں۔
# شامل کریں
2. باطل سیٹ اپ میں ()
- سیریل مواصلات بعود کی شرح 9600 پر شروع کریں۔
سیریل.بیگین (9600)؛
- اگلا ایس پی آئی مواصلات شروع کریں
SPI.begin ()؛
- اس کے بعد ایس پی آئی مواصلات کے لئے گھڑی تقسیم کریں۔ میں نے ڈیویڈر 16 مقرر کیا ہے۔
SPI.setClockDivider (SPI_CLOCK_DIV16)؛
- اگلے ایس ایس پن کو ہائی سیٹ کریں کیونکہ ہم نے غلام ارڈینو کو کوئی منتقلی شروع نہیں کی۔
ڈیجیٹل رائٹ (ایس ایس ، ہائی)؛
3. باطل لوپ میں ()
- غلام کو کوئی قیمت بھیجنے سے پہلے ہمیں غلام کو مال سے غلام کی طرف منتقلی شروع کرنے کے لئے منتخب کردہ قدر کو کم کرنے کی ضرورت ہے۔
ڈیجیٹل رائٹ (ایس ایس ، کم)؛
- اگلا پن PA0 کے ساتھ منسلک ماسٹر STM32F10C8 POT سے مطابق قیمت پڑھیں۔
انٹ پوٹ = اینالاگ ریڈ (PA0)؛
پھر اس قدر کو ایک بائٹ (0 سے 255) کے لحاظ سے تبدیل کریں۔
بائٹ ماسٹرسینڈ = نقشہ (برتن ، 0،4096،0،255)؛
- یہاں اہم اقدام آتا ہے ، مندرجہ ذیل بیان میں ہم ماسٹرسنڈ متغیر میں ذخیرہ شدہ پی او ٹی ویلیو غلام ارڈینو کو بھیجتے ہیں ، اور غلام آرڈینو سے بھی قیمت وصول کرتے ہیں اور اس کو ماسٹر ریسیپ متغیر میں جمع کرتے ہیں۔
ماسٹریسیپ = SPI.transfer (ماسٹرسینڈ)؛
- اگلا 500 مائکرو سیکنڈ کی تاخیر کے ساتھ غلام آرڈینو سے حاصل کردہ اقدار کو ڈسپلے کریں اور پھر قدروں کو مستقل طور پر وصول اور ڈسپلے کریں۔
سیریل.پرنٹلن ("غلامی اردوینو سے ماسٹر STM32")؛ سیریل.پرنٹلن (ماسٹر ریسیٹ lcd.setCursor (0،0)؛ lcd.print ("ماسٹر: STM32")؛ lcd.setCursor (0،1)؛ lcd.print ("سالویوال:") l lcd.print (ماسٹر وصول میں تاخیر (500) digital ڈیجیٹل رائٹ (ایس ایس ، ہائی)؛
نوٹ: ارڈوینو IDE کے سیریل موٹر میں نتیجہ دیکھنے کے لئے ہم سیریل.پرنٹلن () استعمال کرتے ہیں۔
غلام اردوینو ایس پی آئی پروگرامنگ وضاحت
1. بطور ماسٹر ، سب سے پہلے ہمیں آئی پی سی مواصلاتی افعال کے استعمال کے ل the ایس پی آئی لائبریری اور ایل سی ڈی افعال استعمال کرنے کیلئے ایل سی ڈی لائبریری شامل کرنے کی ضرورت ہے۔ 16x2 LCD کیلئے LCD پنوں کی بھی وضاحت کریں۔
# شامل کریں
2. باطل سیٹ اپ میں ()
- ہم باؤل ریٹ 9600 پر سیریل مواصلات شروع کرتے ہیں۔
سیریل.بیگین (9600)؛
- ذیل میں بیان نے MISO کو آؤٹ پٹ (ماسٹر IN کو ڈیٹا بھیجنا ہے) کے طور پر متعین کیا ہے. لہذا غلام ڈیٹو Ardino کے MISO کے ذریعہ کوائف بھیجا جاتا ہے۔
پن موڈ (MISO، آؤٹ پٹ)؛
- اب ایس پی آئی کنٹرول رجسٹر کا استعمال کرکے غلامی وضع میں ایس پی آئی کو آن کریں
SPCR - = _BV (SPE)؛
- پھر ایس پی آئی مواصلت کیلئے مداخلت کو آن کریں۔ اگر ماسٹر سے ڈیٹا موصول ہوتا ہے تو مداخلت سروس روٹین طلب کی جاتی ہے اور موصولہ قیمت ایس پی ڈی آر سے لی جاتی ہے (ایس پی آئی ڈیٹا رجسٹر)
SPI.attachInterrupt ()؛
- ماسٹر سے ملنے والی قیمت ایس پی ڈی آر سے لی گئی ہے اور غلامی شدہ متغیر میں اسٹور کی گئی ہے۔ یہ روٹین روٹین کی تقریب کے بعد ہوتا ہے۔
ISR (SPI_STC_vect) {غلامی شدہ = SPDR؛ موصول = سچ؛ }
3. اگلی صفر میں ()
- پن A0 سے منسلک غلام آردوینو POT سے مطابق قیمت پڑھیں۔
انٹ پوٹ = اینالاگ ریڈ (A0)؛
- اس قدر کو ایک بائٹ کے حساب سے 0 سے 255 میں تبدیل کریں۔
سلاویسینڈ = نقشہ (برتن ، 0،1023،0،255)؛
- اگلا اہم اقدام ماسٹر STM32F10C8 کو تبدیل شدہ قیمت بھیجنا ہے ، لہذا اس کی قیمت کو ایس پی ڈی آر رجسٹر میں رکھیں۔ ایس پی ڈی آر رجسٹر اقدار بھیجنے اور وصول کرنے کے لئے استعمال ہوتا ہے۔
ایس پی ڈی آر = غلامی؛
- پھر 500 مائیکرو سیکنڈ کی تاخیر کے ساتھ LCD پر ماسٹر STM32F103C8 سے موصولہ قیمت ( سلیور ریسپٹ ) ڈسپلے کریں اور پھر مسلسل ان قدر کو وصول کریں اور ظاہر کریں۔
lcd.setCursor (0،0)؛ lcd.print ("غلام: ارڈینو")؛ lcd.setCursor (0،1)؛ lcd.print ("ماسٹر وال:")؛ سیریل.پرنٹ للن ("ماسٹر STM32 سے غلام اردوینو")؛ سیریل.پرنٹلن (غلامی وصول)؛ lcd.print (غلامی وصول)؛ تاخیر (500)؛
کی طرف سے ایک طرف سے potentiometer کے گھومنے، آپ کو ایک اور پہلو پر یلسیڈی پر مختلف اقدار دیکھ سکتے ہیں:
ایس ٹی ایم 32 میں ایس پی آئی مواصلات اسی طرح ہوتے ہیں ۔ اب آپ کسی بھی ایس پی آئی سینسر کو ایس ٹی ایم 32 بورڈ کے ساتھ انٹرفیس کرسکتے ہیں۔
ماسٹر STM32 اور سلیف ارڈینو کے لئے مکمل کوڈنگ ایک مظاہرے کی ویڈیو کے ساتھ نیچے دی گئی ہے