- ایس پی آئی مواصلات پروٹوکول کیا ہے؟
- ایس پی آئی پروٹوکول کیسے کام کرتا ہے؟
- I2C اور SPI مواصلات کے درمیان فرق
- XC8 کمپلر کا استعمال کرتے ہوئے PIC16F877A کے ساتھ SPI:
- ایس پی آئی ہیڈر فائل کی وضاحت:
- مرکزی پروگرام کی وضاحت:
- ایس پی آئی ڈیبگر کے ساتھ پی آئی سی کی نقالی:
پی آئی سی مائکروکانٹرولرز ایک طاقتور پلیٹ فارم ہیں جو ایمبیڈڈ پروجیکٹس کے لئے مائیکرو چیپ کے ذریعہ فراہم کیا جاتا ہے۔ اس کی ورسٹائل نوعیت نے اسے بہت سے ایپلی کیشنز کے راستے تلاش کرنے کے قابل بنا دیا ہے اور ابھی بہت کچھ بڑھنا باقی ہے۔ اگر آپ ہمارے PIC سبق پر عمل پیرا ہوتے ہیں تو آپ نے محسوس کیا ہوگا کہ ہم نے PIC مائکروقابو کنٹرولر کے بارے میں بہت سارے سبق پہلے ہی بنیادی باتوں سے شروع کیا ہے۔ اسی بہاؤ میں ہم PIC کے پاس دستیاب مواصلاتی پروٹوکول اور ان کا استعمال کرنے کا طریقہ سیکھنے کے لئے آگے بڑھ رہے ہیں ۔ ہم نے پہلے ہی I2C کو PIC مائکروکانٹرولر کے ساتھ احاطہ کیا ہے۔
ایمبیڈڈ ایپلی کیشنز کے وسیع نظام میں ، کوئی مائکروکنٹرولر خود ہی تمام سرگرمیاں انجام نہیں دے سکتا ہے۔ معلومات کے اشتراک کے ل time کسی دوسرے مرحلے میں اسے دوسرے آلات سے بات چیت کرنا پڑتی ہے ، ان معلومات کو اشتراک کرنے کے لئے بہت ساری قسم کے مواصلات کے پروٹوکول موجود ہیں ، لیکن سب سے زیادہ استعمال ہونے والے حصے یو ایس اے آر ٹی ، آئی سی ، ایس پی آئی اور سی اے این ہیں ۔ ہر مواصلاتی پروٹوکول کا اپنا فائدہ اور نقصان ہوتا ہے۔ آئیے اب کے لئے ایس پی آئی پروٹوکول پر توجہ مرکوز کریں کیونکہ اسی ٹیوٹوریل میں ہم یہی سیکھنے جا رہے ہیں۔
ایس پی آئی مواصلات پروٹوکول کیا ہے؟
اصطلاح ایس پی آئی کا مطلب ہے " سیریل پیریفیریل انٹرفیس "۔ یہ ایک عام مواصلات کا پروٹوکول ہے جو دو مائکروکانٹرولرز کے مابین ڈیٹا بھیجنے کے لئے یا کسی سنسر سے ڈیٹا پڑھنے / لکھنے کے لئے استعمال کیا جاتا ہے۔ یہ ایسڈی کارڈ ، شفٹ رجسٹر ، ڈسپلے کنٹرولرز اور بہت کچھ کے ساتھ بات چیت کرنے کے لئے بھی استعمال ہوتا ہے۔
ایس پی آئی پروٹوکول کیسے کام کرتا ہے؟
ایس پی آئی مواصلات مطابقت پذیر مواصلات ہیں ، مطلب یہ کہ گھڑی کے اشارے کی مدد سے کام کرتی ہے جو اعداد و شمار کا تبادلہ کرنے والے دو آلات کے مابین مشترکہ ہے۔ نیز یہ ایک مکمل ڈوپلیکس مواصلات ہے کیونکہ یہ ایک الگ بس کا استعمال کرکے ڈیٹا بھیج اور وصول کرسکتی ہے۔ ایس پی آئی مواصلات کام کرنے کے لئے 5 تاروں کی ضرورت ہوتی ہے. ایک ماسٹر اور غلام کے درمیان ایک آسان SPI مواصلات سرکٹ ذیل میں دکھایا گیا ہے
مواصلت کے ل required مطلوب پانچ تاروں میں ایس سی کے (سیریل کلاک) ، موسی (ماسٹر آؤٹ غلامی ان) ، میس او (ماسٹر ان غلام آئوٹ) اور ایس ایس (غلام سلیکٹ) ہیں۔ ایس پی آئی مواصلات ہمیشہ صرف ایک آقا اور غلام کے مابین ہوتے ہیں۔ ایک ماسٹر متعدد غلام اس سے منسلک ہوسکتا ہے۔ گھڑی کی نبض پیدا کرنے کا ماسٹر ذمہ دار ہے اور تمام بندوں کے ساتھ یکساں ہے۔ نیز تمام مواصلات صرف ماسٹر ہی شروع کرسکتے ہیں ۔
ایس سی کے پن (عرف ایس سی ایل سیریل گھڑی) غلاموں کے ساتھ آقا کے ذریعہ تیار کردہ گھڑی سگنل کا اشتراک کرتا ہے۔ ماسی پن (ارفع ایس ڈی اے erialشیرئل ڈیٹا آؤٹ) ماسٹر سے ڈیٹا بھیجنے کے لئے استعمال کیا جاتا ہے۔ MISO پن (عرف SDI - سیریل ڈیٹا ان) سالو سے ماسٹر تک ڈیٹا حاصل کرنے کے لئے استعمال ہوتا ہے۔ آپ اعداد و شمار / سگنل کی نقل و حرکت کو سمجھنے کے لئے مذکورہ اعداد و شمار میں تیر نشان کی پیروی بھی کرسکتے ہیں۔ جب ماسٹر سے منسلک ایک سے زیادہ غلام ماڈیول ہوتے ہیں تو آخر میں ایس ایس پن (ارفع سی ایس hipCip منتخب) استعمال ہوتا ہے۔ اس میں مطلوبہ غلام کو منتخب کرنے کے لئے استعمال کیا جا سکتا ہے۔ ایک نمونہ سرکٹ جہاں ایک سے زیادہ غلام ایس پی آئی مواصلات کے لئے ماسٹر کے ساتھ جڑے ہوئے ہیں ، نیچے سرکٹ میں دکھایا گیا ہے۔
I2C اور SPI مواصلات کے درمیان فرق
ہم نے پہلے ہی PIC کے ساتھ I2C مواصلات کو سیکھا ہے لہذا ہمیں اس سے واقف ہونا چاہئے کہ I2C کس طرح کام کرتا ہے اور جہاں ہم ان کا استعمال کرسکتے ہیں جیسے I2C RTC ماڈیول کو انٹرفیس میں استعمال کیا جاسکتا ہے۔ لیکن اب ، جب ہمارے پاس پہلے ہی I2C ہے تو ہمیں SPI پروٹوکول کی ضرورت کیوں ہے۔ اس کی وجہ یہ ہے کہ I2C اور SPI مواصلات اس کے اپنے طریقوں سے فوائد ہیں اور اسی وجہ سے یہ درخواست مخصوص ہے۔
ایک حد تک I2C مواصلات کو ایس پی آئی مواصلات سے کچھ فوائد سمجھا جاسکتا ہے کیونکہ I2C کم تعداد میں پن کا استعمال کرتا ہے اور جب بس میں جڑے ہوئے غلاموں کی ایک بڑی تعداد موجود ہوتی ہے تو یہ بہت آسان ہوجاتا ہے۔ لیکن I2C کی خرابی یہ ہے کہ اس میں ڈیٹا بھیجنے اور وصول کرنے کے لئے ایک ہی بس ہے اور اسی وجہ سے یہ نسبتا slow سست ہے۔ لہذا یہ آپ کے منصوبے کے لئے ایس پی آئی اور آئی 2 سی پروٹوکول کے مابین فیصلہ کرنے کی درخواست پر مبنی ہے۔
XC8 کمپلر کا استعمال کرتے ہوئے PIC16F877A کے ساتھ SPI:
بہت ساری بنیادی باتیں ، اب آئیے یہ سیکھیں کہ ہم MPICX IDE اور XC8 مرتب کنندہ کا استعمال کرتے ہوئے PIC16F877A مائکروقابو کنٹرولر پر SPI مواصلات کو کس طرح استعمال کرسکتے ہیں ۔ اس سے پہلے کہ ہم یہ واضح کردیں کہ یہ سبق صرف XC8 کمپلر کا استعمال کرتے ہوئے PIC16F877a میں SPI کے بارے میں ہی بات کرتا ہے ، دوسرے مائکروکانٹرولرز کے لئے بھی یہ عمل ایک ہی ہوگا لیکن معمولی تبدیلیاں درکار ہوسکتی ہیں۔ یہ بھی یاد رکھنا کہ PIC18F سیریز جیسے اعلیترک مائکروکانٹرولرز کے ل itself خود بھی ایس پی آئی کی خصوصیات کو استعمال کرنے کے ل comp مرتب خود ہی کچھ لائبریری رکھ سکتا ہے ، لیکن PIC16F877A کے لئے ایسا کچھ بھی نہیں ہے لہذا ہم خود ہی اس کی تعمیر کریں۔ یہاں بیان کردہ لائبریری کو نیچے دیے گئے ڈاؤن لوڈ کے لئے ایک ہیڈر فائل کے طور پر دیا جائے گا جس کو PIC16F877A کے لئے دوسرے SPI آلات کے ساتھ بات چیت کرنے کے لئے استعمال کیا جاسکتا ہے۔
اس ٹیوٹوریل میں ہم ایک چھوٹا پروگرام لکھیں گے جو SPI بس سے ڈیٹا لکھنے اور پڑھنے کیلئے SPI مواصلات کا استعمال کرتا ہے ۔ اس کے بعد ہم پروٹیوس تخروپن کا استعمال کرکے اسی کی تصدیق کریں گے۔ ایس پی آئی کے اندراجات سے متعلق تمام کوڈ ہیڈر فائل کے اندر بنایا جائے گا جس کو PIC16f877a_SPI.h کہا جاتا ہے۔ اس طرح ہم اپنے ہیڈر فائل کو اپنے آنے والے تمام پروجیکٹس میں استعمال کرسکتے ہیں جس میں ایس پی آئی مواصلات کی ضرورت ہے۔ اور مرکزی پروگرام کے اندر ہم ہیڈر فائل سے صرف افعال استعمال کریں گے۔ ہیڈر فائل کے ساتھ مکمل کوڈ یہاں سے ڈاؤن لوڈ کیا جاسکتا ہے۔
ایس پی آئی ہیڈر فائل کی وضاحت:
ہیڈر فائل کے اندر ہمیں PIC16F877a کے لئے SPI مواصلات کا آغاز کرنا ہے۔ ہمیشہ کی طرح شروع کرنے کا بہترین مقام PIC16F877A ڈیٹاشیٹ ہے۔ PIC16F8777a کے لئے SPI مواصلات کو کنٹرول کرنے والے رجسٹر SSPSTAT اور SSPCON رجسٹر ہیں۔ آپ ان کے بارے میں ڈیٹا شیٹ کے صفحہ 74 اور 75 پر کر سکتے ہیں۔
بہت سے پیرامیٹرز اختیارات ہیں جن کا انتخاب SPI مواصلات کو شروع کرتے وقت کرنا پڑتا ہے۔ عام طور پر استعمال شدہ آپشن یہ ہے کہ گھڑی کی فریکوئنسی Fosc / 4 پر سیٹ کی جائے گی اور وسط میں کی جائے گی اور گھڑی کو مثالی حالت میں کم سیٹ کیا جائے گا۔ لہذا ہم اپنی ہیڈر فائل کے لئے بھی یہی ترتیب استعمال کررہے ہیں ، آپ آسانی سے متعلقہ بٹس کو تبدیل کرکے ان کو تبدیل کرسکتے ہیں۔
SPI_Initialize_ ماسٹر ()
ایس پی آئی ابتداء ماسٹر فنکشن ماسٹر کی حیثیت سے ایس پی آئی مواصلات کو شروع کرنے کے لئے استعمال ہوتا ہے۔ اس فنکشن کے اندر ہم متعلقہ پنوں کو RC5 اور RC3 آؤٹ پٹ پن کے طور پر سیٹ کرتے ہیں۔ پھر ہم ایس پی آئی ٹی مواصلات کو آن کرنے کیلئے ایس ایس پی ٹی اے ٹی اور ایس ایس پی سی این رجسٹر کو تشکیل دیتے ہیں
باطل SPI_Initialize_ ماسٹر () { TRISC5 = 0؛ // ایس ایس پی ایس ٹی اے ٹی = 0b00000000؛ // پی جی 74/234 ایس ایس پی سیون = 0b00100000؛ // پی جی 75/234 TRISC3 = 0؛ // غلام موڈ کے لئے پیداوار کے طور پر مقرر کریں }
SPI_Initialize_Slave ()
اس فنکشن کا استعمال ایس پی آئی مواصلات کے لئے غلام موڈ میں کام کرنے کے لئے مائکرو قابو پانے والے کو مرتب کرنے کے لئے کیا جاتا ہے۔ غلام موڈ کے دوران پن RC5 کو آؤٹ پٹ کے طور پر سیٹ کرنا چاہئے اور پن RC3 ان پٹ کے بطور سیٹ ہونا چاہئے۔ ایس ایس پی ایس ٹی اے ٹی اور ایس ایس پی سیون غلام اور ماسٹر دونوں کے لئے ایک ہی طرح سے ترتیب دیا گیا ہے۔
باطل SPI_Initialize_Slave () { TRISC5 = 0؛ // ایس ڈی او پن کو آؤٹ پٹ ایس ایس پی ایس ٹی اے ٹی = 0b00000000 قرار دیا جانا چاہئے ۔ // پی جی 74/234 ایس ایس پی سیون = 0b00100000؛ // پی جی 75/234 TRISC3 = 1؛ // ماسٹر وضع کے طور پر مقرر کریں }
SPI_Write (چار آنے والے)
ایس پی آئی لکھنے کا فنکشن ایس پی آئی بس میں ڈیٹا لکھنے کے لئے استعمال ہوتا ہے۔ یہ صارف سے متغیر آنے والی معلومات کے ذریعہ معلومات حاصل کرتا ہے اور پھر اسے بفر رجسٹر میں منتقل کرنے کے لئے استعمال کرتا ہے۔ ایس ایس پی بی یو ایف کو لگاتار گھڑی کے پلس میں کلیئر کردیا جائے گا اور اعداد و شمار تھوڑا سا بس میں بھیجے جائیں گے۔
باطل SPI_Write (چار آنے والے) { SSPBUF = آنے والا؛ // صارف کو دیئے گئے ڈیٹا کو بفر میں لکھیں }
SPI_Ready2 پڑھیں ()
پڑھنے کے لئے تیار SPI استعمال کرنے کے لئے استعمال کیا جاتا ہے SPI بس میں ڈیٹا مکمل طور پر موصول ہوا ہے یا نہیں اور اگر اسے پڑھا جاسکتا ہے۔ ایس ایس پی ایس ٹی اے ٹی رجسٹر میں تھوڑا سا بی ایف کہا جاتا ہے جو ایک بار ڈیٹا مکمل طور پر ملنے کے بعد طے ہوجائے گا ، لہذا ہم چیک کرتے ہیں کہ اگر یہ بٹ سیٹ نہیں ہوا ہے اگر سیٹ نہیں کیا گیا ہے تو ہمیں ایس پی آئی بس سے کچھ پڑھنے کے لئے سیٹ ہونے تک انتظار کرنا ہوگا۔
دستخط شدہ SPI_Ready2Read () { if (SSPSTAT & 0b00000001) واپس 1؛ اور 0 واپس؛ }
SPI_Redad ()
ایس پی آئی ریڈ کا استعمال ایس پی آئی بس کے ڈیٹا کو مائکروکنٹرولر میں پڑھنے کے لئے کیا جاتا ہے۔ ایس پی آئی بس میں موجود ڈیٹا ایس ایس پی بی یو ایف میں اسٹور کیا جائے گا ، ہمیں بفر میں مکمل ڈیٹا اسٹور ہونے تک انتظار کرنا پڑے گا اور پھر ہم اسے متغیر میں پڑھ سکتے ہیں۔ ہم بفر کو پڑھنے سے پہلے ایس ایس پی ایس ٹی اے ٹی رجسٹر کے بی ایف بٹ کو چیک کرتے ہیں تاکہ یہ یقینی بنائیں کہ ڈیٹا کا استقبال مکمل ہے۔
چار SPI_Read () // موصولہ اعداد و شمار کو پڑھیں { جبکہ (! SSPSTATbit.BF)؛ // BF بٹ طے ہونے تک پکڑو ، تاکہ یہ یقینی بنائے کہ مکمل اعداد و شمار کو پڑھ لیا گیا ہے (SSPBUF)؛ // پڑھنے کا ڈیٹا واپس کریں }
مرکزی پروگرام کی وضاحت:
مذکورہ سیکشن میں بیان کردہ افعال ہیڈر فائل میں ہوں گے اور انہیں مرکزی سی فائل میں بلایا جاسکتا ہے۔ تو آئیے یہ چیک کرنے کے لئے ایک چھوٹا سا پروگرام لکھتے ہیں کہ آیا ایس پی آئی مواصلات کام کررہی ہے یا نہیں۔ ہم صرف ایس پی آئی بس میں کچھ اعداد و شمار لکھیں گے اور یہ جاننے کے لئے کہ ایس پی آئی ڈیبگر میں وہی ڈیٹا موصول ہورہا ہے تو پروٹیوس نقلیہ استعمال کریں گے۔
جیسا کہ ہمیشہ ترتیب کے بٹس ترتیب دے کر پروگرام شروع کرتے ہیں اور پھر ہیڈر فائل کو شامل کرنا بہت ضروری ہے جس کی ذیل میں دکھایا گیا ہے جیسا کہ ہم نے ابھی پروگرام میں وضاحت کی ہے
# شامل کریں
اگر آپ نے اوپر ڈاؤن لوڈ کی گئی زپ فائل سے پروگرام کھولا ہے تو پہلے سے ہیڈر فائل آپ کے پروجیکٹ فائل کی ہیڈر فائل ڈائرکٹری کے اندر موجود ہوگی۔ ورنہ آپ کو اپنے پروجیکٹ کے اندر ہیڈر فائل دستی طور پر شامل کرنی ہوگی ، ایک بار شامل کرنے کے بعد آپ کی پروجیکٹ فائلیں اس طرح نظر آئیں گی
مرکزی فائل کے اندر ہمیں پی آئی سی کو ایس پی آئی مواصلات کے ل Master ماسٹر کی حیثیت سے ابتدا کرنا ہے اور پھر ایک لامحدود کے اندر جب لوپ ہم ایس پی آئی بس میں بے ترتیب تین ہیکس اقدار لکھیں گے تاکہ جانچ پڑتال کے ل we ہم انضمام کے دوران بھی وہی وصول کرتے ہیں یا نہیں۔
باطل مین () { SPI_Initialize_Master ()؛ جبکہ (1) { SPI_Write (0X0A)؛ __ڈیلا_س (100)؛ SPI_Write (0 X0F)؛ __ڈیلا_س (100)؛ ایس پی آئی_روائٹ (0 ایکس 15)؛ __ڈیلا_س (100)؛ } }
نوٹ کریں کہ پروگرام میں استعمال ہونے والی بے ترتیب اقدار 0A ، 0F اور 15 ہیں اور وہ ہیکس اقدار ہیں لہذا ہمیں تخروپن کے دوران بھی وہی دیکھنا چاہئے۔ یہی وجہ ہے کہ کوڈ سب ختم ہوچکا ہے ، یہ صرف ایک نمونہ ہے لیکن ہم اسی طریقہ کار کو دوسرے MCU کے ساتھ یا SPI پروٹوکول پر چلنے والے دوسرے سینسر ماڈیول کے ساتھ بات چیت کرنے کے لئے استعمال کرسکتے ہیں۔
ایس پی آئی ڈیبگر کے ساتھ پی آئی سی کی نقالی:
اب جب کہ ہمارا پروگرام تیار ہے ہم اسے مرتب کرسکتے ہیں اور پھر نقالی کے ساتھ آگے بڑھ سکتے ہیں۔ پروٹیوس کی ایک اچھی خصوصیت ہے جس کو ایس پی آئی ڈیبگر کہا جاتا ہے ، جس کا استعمال ایس پی آئی بس کے اعداد و شمار کی نگرانی کے لئے کیا جاسکتا ہے۔ لہذا ہم وہی استعمال کرتے ہیں اور سرکٹ تیار کرتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے۔
چونکہ نقالی میں صرف ایک ایس پی آئی ڈیوائس موجود ہے ہم ایس ایس پن کا استعمال نہیں کر رہے ہیں اور جب استعمال نہیں کیا جاتا ہے تو یہ اوپر کی طرح جیسا ہونا چاہئے ۔ صرف ہیکس فائل کو PIC16F877A مائکروکانٹرلر میں لوڈ کریں اور ہمارے پروگرام کی تقلید کے ل play پلے بٹن پر کلک کریں۔ ایک بار جب نقلی شکل شروع ہوجائے تو آپ کو ایک پاپ اپ ونڈو ملے گی جو ایس پی آئی بس میں ڈیٹا کو دکھائے گی جیسے کہ ذیل میں دکھایا گیا ہے
آئیے اندر آنے والے ڈیٹا پر گہری نگاہ ڈالیں اور دیکھیں کہ کیا یہ وہی ہے جو ہمارے پروگرام میں لکھا ہے۔
ڈیٹا اسی ترتیب سے موصول ہوتا ہے جو ہم نے اپنے پروگرام میں لکھا ہے اور وہی آپ کے لئے بھی نمایاں کیا گیا ہے۔ آپ ایس پی آئی پروٹوکول کا استعمال کرتے ہوئے دو پی آئی سی مائکروکنٹرولرز کے ساتھ بات چیت کرنے کے لئے ایک پروگرام کی تقلید کرنے کی بھی کوشش کر سکتے ہیں ۔ آپ کو ایک PIC بطور ماسٹر اور دوسرا غلام کی حیثیت سے پروگرام کرنا ہے۔ اس مقصد کے لئے تمام مطلوبہ ہیڈر فائلیں ہیڈر فائل میں پہلے ہی دی گئی ہیں۔
یہ ایس پی آئی کیا کرسکتا ہے اس کی صرف ایک جھلک ہے ، یہ متعدد آلات پر ڈیٹا پڑھ اور لکھ بھی سکتا ہے۔ ہم اپنے آئندہ سبقوں میں ایس پی آئی کے بارے میں مزید احاطہ کریں گے جو مختلف ماڈیولز میں ایس پی آئی پروٹوکول کے ساتھ کام کرتے ہیں۔
امید ہے کہ آپ اس منصوبے کو سمجھ گئے ہوں گے اور اس سے کچھ مفید سیکھیں گے۔ اگر آپ کو کوئی شبہات ہیں تو انہیں نیچے تبصرہ سیکشن میں پوسٹ کریں یا تکنیکی مدد کے لئے فورمز کا استعمال کریں۔
مکمل مین کوڈ ذیل میں دیا گیا ہے۔ آپ یہاں سے تمام کوڈ کے ساتھ ہیڈر فائلوں کو ڈاؤن لوڈ کرسکتے ہیں