- UART مواصلات کی بنیادی باتیں
- ہارڈ ویئر کی ضرورت اور سیٹ اپ
- نووٹن N76E003 UART مواصلات کے لئے سرکٹ ڈایاگرام
- نووٹن N76E003 مائکروکانٹرولر پر UART پنوں
- نووٹن N76E003 مائکروکانٹرولر میں UART رجسٹر
- N76E003 میں UART آپریٹنگ وضعیں
- UART مواصلات کے لئے پروگرامنگ نیووٹن N76E003
UART کا مطلب یونیورسل اسینکرونس وصول / ٹرانسمیٹر ہوتا ہے اور یہ کسی بھی مائکروکونٹرولر یونٹ میں ایک کارآمد ہارڈ ویئر کی خصوصیت ہے۔ ایک مائکروکانٹرولر کو اعداد و شمار حاصل کرنے ، اس پر کارروائی کرنے اور اسے دوسرے آلات میں بھیجنے کی ضرورت ہے۔ مائکروکنٹرولر میں مختلف قسم کے مواصلات کے پروٹوکول دستیاب ہیں ، تاہم ، دیگر مواصلات پروٹوکول جیسے ایس پی آئی اور آئی 2 سی میں یو آر ٹی سب سے زیادہ استعمال ہوتا ہے۔ اگر کسی کو اعداد و شمار کو سلسلہ وار موصول کرنے یا منتقل کرنے کی ضرورت ہوتی ہے تو ، UART ہمیشہ آسان اور عام آپشن ہوتا ہے۔ UART کا فائدہ یہ ہے کہ آلات کے مابین ڈیٹا منتقل کرنے کے لئے صرف دو تاروں کی ضرورت ہوتی ہے۔ اس مضمون میں ، ہمارے نووٹن مائکروکانٹرولر ٹیوٹوریل کے ساتھ جاری رکھتے ہوئے ، ہم سیکھیں گے کہ N76E003 مائکروکانٹرلر کا استعمال کرتے ہوئے سیریل مواصلات کو کس طرح انجام دیا جائے۔
UART مواصلات کی بنیادی باتیں
اب ، جیسا کہ ہم جانتے ہیں کہ یو آر ٹی کیا ہے ، اس کے لئے یو آر اے ٹی کے متعلقہ پیرامیٹرز کو جاننا ضروری ہے۔
UART کے دو آلات ایک ہی فریکوئنسی پر ڈیٹا وصول کرتے اور منتقل کرتے ہیں۔ جب موصولہ UART آلہ اسٹارٹ بٹ کا پتہ لگاتا ہے ، تو وہ آنے والی بٹس کو مخصوص تعدد پر پڑھنا شروع کرتا ہے جس کو باؤڈ ریٹ کہا جاتا ہے۔ UART مواصلات کے لئے Baud کی شرح ایک اہم چیز ہے اور اس کا استعمال ڈیٹا کی منتقلی کی رفتار کو بٹس میں فی سیکنڈ (bps) میں ماپنے کے لئے کیا جاتا ہے۔ ٹرانسمیشن اور وصول کرنے کے لئے یہ بوڈ ریٹ کی رفتار ایک ہی بوڈ ریٹ پر ہونی چاہئے۔ بٹس کا وقت بہت دور ہونے سے پہلے ہی UARs کو منتقل کرنے اور وصول کرنے میں باؤ ریٹ کی رفتار میں فرق صرف 10 فیصد ہوسکتا ہے۔ سب سے زیادہ مقبول باؤ ریٹ کی رفتار 4800 ، 9600 ، 115200 بی پی ایس ، وغیرہ ہیں۔ اس سے قبل ہم نے بہت سے دوسرے مائکروکنوتروں میں بھی UART مواصلات کا استعمال کیا ہے جو ذیل میں درج ہیں۔
- اے ٹی میگا 8 اور آرڈینو اونو کے درمیان UART مواصلات
- دو اے ٹی میگا 8 مائکروکونٹرولرز کے مابین UART مواصلات
- UIC مواصلت PIC مائکروکنٹرولرز کا استعمال کرتے ہوئے
- UT مواصلات STM8S مائکروکانٹرولر پر
N76E003 میں دو UARTs ہیں - UART0 اور UART1 ۔ اس ٹیوٹوریل میں ، ہم N76E003 مائکروکنٹرولر یونٹ پر UART پیری فیل استعمال کریں گے ۔ زیادہ وقت ضائع کیے بغیر ، آئیے اس بات کا جائزہ لیں کہ ہمیں اس ایپلی کیشن کے لئے کس طرح کا ہارڈ ویئر سیٹ اپ درکار ہے۔
ہارڈ ویئر کی ضرورت اور سیٹ اپ
اس پروجیکٹ کے ل The جس اہم جز کی ضرورت ہے وہ USB سے UART یا TTL کنورٹر ماڈیول ہے جو پی سی یا لیپ ٹاپ کے مابین مائکرو قابو پانے والے ماڈیول کے ذریعہ مطلوبہ انٹرفیس بنائے گی۔ اس پروجیکٹ کے ل we ، ہم CP2102 پر مبنی USB سے UART ماڈیول استعمال کریں گے جو نیچے دکھایا گیا ہے۔
مذکورہ بالا جزو کے علاوہ ، ہمیں N76E003 مائکروکونٹرولر پر مبنی ڈویلپمنٹ بورڈ نیز نیو لنک پروگرامر کی ضرورت ہے ۔ اگر اضافی 5V بجلی کی فراہمی کے یونٹ کی ضرورت ہوسکتی ہے اگر پروگرامر بجلی کے ذرائع کے طور پر استعمال نہیں ہوتا ہے۔
نووٹن N76E003 UART مواصلات کے لئے سرکٹ ڈایاگرام
جیسا کہ ہم ذیل میں ترقیاتی بورڈ کے اسکیمٹک میں دیکھ سکتے ہیں ، مائکروکونٹرولر یونٹ کا دوسرا اور تیسرا پن بالترتیب UART0 Tx اور Rx کے طور پر استعمال ہوتا ہے۔ انتہائی بائیں طرف ، پروگرامنگ انٹرفیس کنکشن دکھایا گیا ہے۔
نووٹن N76E003 مائکروکانٹرولر پر UART پنوں
N76E003 میں 20 پن ہیں جن میں سے 4 پنوں کو UART مواصلات کے لئے استعمال کیا جاسکتا ہے۔ نیچے کی گئی تصویر میں سرخ رنگ کے مربع باکس (آر ایکس) اور بلیو اسکوائر باکس (ٹی ایکس) میں روشنی ڈالی گئی یو آر ٹی پن دکھا رہی ہے۔
UART0 کے لئے ، پن 2 اور 3 UART مواصلات کے لئے استعمال کیا جاتا ہے ، اور UART1 کے لئے ، رابط 8 کے لئے پن 8 اور پن 18 استعمال ہوتا ہے۔
نووٹن N76E003 مائکروکانٹرولر میں UART رجسٹر
N76E003 میں خود کار طریقے سے پتے کی شناخت اور فریمنگ غلطی کی نشاندہی کے ساتھ دو بہتر فل ڈوپلیکس یو آر ٹی ہے۔ UART0 اور UART1۔ یہ دونوں UARTs کو دو مختلف UARs میں درجہ بندی شدہ رجسٹروں کا استعمال کرتے ہوئے کنٹرول کیا جاتا ہے۔ UART کی کارروائیوں کے لئے N76E003 میں RX اور TX پنوں کے دو جوڑے دستیاب ہیں۔ اس طرح پہلا قدم آپریشنوں کے لئے مطلوبہ UART پورٹ کا انتخاب کرنا ہے۔
اس ٹیوٹوریل میں ، ہم UART0 استعمال کریں گے ، اس طرح ترتیب صرف UART0 کے لئے دکھائی جائے گی۔ UART1 میں ایک ہی ترتیب ہوگی لیکن اندراجات مختلف ہوں گے۔
ایک UART (UART0 اس معاملے میں) منتخب کرنے کے بعد ، I / O پنوں کو جو RX اور TX مواصلت کے ل used استعمال کرنے کی ضرورت ہے ان پٹ اور آؤٹ پٹ کے بطور تشکیل کرنے کی ضرورت ہے۔ UART0 کا RX پن مائکروقانونی کا پن 3 ہے جو پورٹ 0.7 ہے۔ چونکہ یہ سیریل پورٹ پن وصول کرتا ہے ، لہذا پورٹ 0.7 کو ان پٹ کے طور پر سیٹ کرنے کی ضرورت ہے۔ دوسری طرف ، بندرگاہ 0.6 جو مائکروکانٹرولر کا دوسرا پن ہے ایک ٹرانسمٹ پن یا آؤٹ پٹ پن ہے۔ اسے کوایس بائی ڈائریکشنل موڈ کے طور پر سیٹ کرنے کی ضرورت ہے۔ ان کا انتخاب PxM1 اور PxM2 رجسٹر کے ذریعہ کیا جاسکتا ہے۔ یہ دونوں رجسٹر I / O طریقوں کو طے کرتے ہیں جہاں ایکس پورٹ نمبر ہوتا ہے (مثال کے طور پر ، پورٹ P1.0 رجسٹر P1M1 اور P1M2 ہوگا ، P3.0 کے لئے یہ P3M1 اور P3M2 ہوگا۔) تشکیل کرسکتا ہے ذیل کی تصویر میں دیکھا جا--
N76E003 میں UART آپریٹنگ وضعیں
اس کے بعد ، اگلا مرحلہ UART آپریشنز کے موڈ کا تعین کرنا ہے ۔ دونوں UARTs 4 طریقوں میں کام کرسکتے ہیں۔ طریقوں یہ ہیں-
جیسا کہ ہم دیکھ سکتے ہیں ، SM0 اور SM1 (SCON رجسٹر کا 7 واں اور 6 واں بٹ) UART آپریشنز کا طریقہ منتخب کرتے ہیں۔ موڈ 0 ہم وقت سازی کا آپریشن ہے اور دیگر تین طریقوں متضاد آپریشن ہیں ۔ تاہم ، ہر سیریل پورٹ موڈ کے لئے بوڈ ریٹ جنریٹر اور فریم بٹس مختلف ہیں۔ طریقوں میں سے کسی کو بھی درخواست کی ضرورت کے مطابق منتخب کیا جاسکتا ہے اور یہ UART1 کے لئے بھی ایک جیسا ہے۔ اس ٹیوٹوریل کے ل time ، ٹائمر 3 اوور فلو ریٹ کے ساتھ 10 بٹس آپریشن 32 یا 16 کے ذریعہ تقسیم کیا گیا ہے۔
اب ، وقت آگیا ہے کہ UART0 کے لئے معلومات حاصل کریں اور SCON رجسٹر (UART1 کیلئے SCON_1) تشکیل کریں۔
6 ویں اور 7 ویں بٹ UART وضع کو طے کرے گا جیسا کہ پہلے بتایا گیا ہے۔ بٹ 5 اختیارات کو قابل بنانے کے لئے ملٹی پروسیسر مواصلات وضع کرنے کے لئے استعمال ہوتا ہے۔ تاہم ، عمل انحصار کرتا ہے جس پر UART وضع منتخب کی جاتی ہے۔ ان کے علاوہ ، استقبالیہ کو چالو کرنے کے لئے REN بٹ 1 پر سیٹ کیا جائے گا اور TI پرچم کو اپنی مرضی کے مطابق UART0 ٹرانسمیشن فنکشن کی بجائے پرنٹ ایف فنکشن کے لئے 1 پر سیٹ کیا جائے گا ۔
اگلا اہم رجسٹر پاور کنٹرول رجسٹر (PCON) (ٹائمر 3 بٹ 7 اور UART1 کے لئے 6) رجسٹر ہے۔ اگر آپ ٹائمر کے لئے نئے ہیں تو ، N76E003 مائکروکونٹرولر پر ٹائمر استعمال کرنے کا طریقہ سمجھنے کے لئے نووٹن N76E003 ٹائمر ٹیوٹوریل ملاحظہ کریں۔
SMOT بٹ کو UART0 موڈ 1 میں ڈبل باؤڈ ریٹ منتخب کرنے کے لئے ضروری ہے۔ اب ، جب ہم ٹائمر 3 استعمال کررہے ہیں ، ٹائمر 3 کنٹرول رجسٹر T3CON کو تشکیل دینے کی ضرورت ہے۔ تاہم ، بٹ 7 ویں اور 6 ویں UART1 کے لئے ڈبل ڈیٹا ریٹ کی ترتیب کے لئے مخصوص ہیں۔
اور ٹائمر 3 پری اسکیلر ویلیو-
5 واں بٹ بی آر سی کے ٹائمر 3 کو یو ای ڈی 1 کے لئے باؤڈ ریٹ کلاک ماخذ کے طور پر متعین کرے گا۔ اب ، N76E003 کی ڈیٹا شیٹ کو مطلوبہ بوڈ کی شرح کے حساب کے ساتھ ساتھ ٹائمر 3 (16 بٹس) ہائی اور لو رجسٹروں کے لئے نمونہ سیٹ ویلیو کا حساب کتاب کرنے کا فارمولا دیا گیا ہے۔
نمونہ کی قدر 16 میگاہرٹز گھڑی کا منبع۔
اس طرح مذکورہ فارمولے کا استعمال کرتے ہوئے ٹائمر 3 رجسٹر میں باؤ ریٹ کی تشکیل کی ضرورت ہے۔ ہمارے معاملے کے لئے ، یہ فارمولا be ہوگا۔ اس کے بعد ، ٹی آر starting رجسٹر کو register پر مرتب کرکے ٹائمر starting شروع کرنے سے UART0 انوائسلائزیشن ٹائمر finish ختم ہوجائے گا۔ UART0 کو حاصل کرنے اور بھیجنے کے لئے درج ذیل رجسٹر کو استعمال کریں۔
SBUF ورڈ خود بخود وصول کریں اور ترسیل کے لئے ترتیب دیا جاتا ہے. UART سے ڈیٹا حاصل کرنے کے لئے ، RI پرچم 1 کا تعین کرنے کا انتظار کریں اور SBUF رجسٹر کو پڑھیں اور ڈیٹا UART0 کو بھیجیں ، ڈیٹا SBUF کو بھیجیں اور TI جھنڈے کے انتظار میں 1 کے کامیاب ڈیٹا کی منتقلی کی تصدیق کریں۔
UART مواصلات کے لئے پروگرامنگ نیووٹن N76E003
کوڈنگ کا حصہ آسان ہے اور اس ٹیوٹوریل میں استعمال ہونے والا مکمل کوڈ اس صفحے کے نیچے پایا جاسکتا ہے۔ کوڈ کی وضاحت حسب ذیل ہے ، مرکزی تقریب میں بیان کا استعمال کرتے ہوئے UART0 کو 9600 بوڈ کی شرح سے شروع کیا گیا ہے۔
ابتدائی UART0_Timer3 (9600)؛
مذکورہ بالا فنکشن کو عام سی۔ فائل میں بیان کیا گیا ہے اور وہ UART0 کو ٹائمر 3 کے ساتھ باؤڈ ریٹ سورس ، موڈ 1 میں اور 9600 کی بوڈ ریٹ کے ساتھ تشکیل دے رہا ہے۔ فنکشن کی تعریف مندرجہ ذیل ہے۔
کالعدم ابتدائی UART0_Timer3 (UINT32 u32Baudrate) // ٹائمر 3 کو بائوڈریٹ جنریٹر کے بطور استعمال کریں { P06_Quasi_Mode؛ // P07_ ان پٹ_موڈ ٹرانسمیٹ کے لئے کوآرٹ موڈ کے طور پر UART پن کو ترتیب دینا۔ // SCON = 0x50 کو حاصل کرنے کیلئے UART پن کو ان پٹ موڈ کے طور پر مرتب کرنا ؛ // UART0 موڈ 1 ، REN = 1 ، TI = 1 set_SMOD؛ // UART0 ڈبل ریٹ T3CON کو قابل بنائیں & = 0xF8؛ // ٹی 3 پی ایس 2 = 0 ، ٹی 3 پی ایس 1 = 0 ، ٹی 3 پی ایس 0 = 0 (پریسکیل = 1) سیٹ_ بی بی سی کے؛ // UART0 باؤڈ ریٹ گھڑی کا منبع = ٹائمر 3 #ifdef FOSC_160000 RH3 = HIBYTE (65536 - (1000000 / u32Baudrate) -1)؛ / * 16 میگاہرٹز * / RL3 = LOBYTE (65536 - (1000000 / u32 بوڈریٹ) -1)؛ / * 16 میگا ہرٹز * / #endif #ifdef FOSC_166000 RH3 = HIBYTE (65536 - (1037500 / u32 بوڈریٹ))؛ /* 16.6 میگاہرٹز * / آر ایل 3 = لوبیٹئ (65536 - (1037500 / u32 بوڈریٹ))؛ /*16.6 میگاہرٹز * / # اینڈ سیٹ_ٹی آر 3؛ // ٹرگر ٹائمر 3 سیٹ_ٹ؛ // printf تقریب کے لئے کی ترتیب ضروری TI = 1 }
اعلامیہ مرحلہ وار اس طرح کیا جاتا ہے جیسا کہ پہلے تبادلہ خیال کیا گیا ہے اور اس کے مطابق اندراجات ترتیب دیئے گئے ہیں۔ تاہم ، N76E003 کے بی ایس پی لائبریری میں ، ایک بگ ہے جو P07_ ان پٹ_موڈ کے بجائے ہے ۔ وہاں ہے P07_Quasi_Mode . اس کی وجہ سے ، UART وصول فنکشن کام نہیں کرے گا۔
بوڈ ریٹ کو بھی بوڈ ریٹ ان پٹ کے مطابق ترتیب دیا گیا ہے اور ڈیٹاشیٹ کے ذریعہ دیئے گئے فارمولے کا استعمال کرتے ہوئے۔ اب ، مرکزی فنکشن میں یا جبکہ لوپ میں ، پرنٹف فنکشن استعمال ہوتا ہے۔ پرنٹف فنکشن کو استعمال کرنے کے لئے ، TI کو 1 کے طور پر مقرر کرنے کی ضرورت ہے۔ اس کے علاوہ ، جبکہ لوپ میں ، سوئچ کا کیس استعمال کیا جاتا ہے اور موصولہ UART ڈیٹا کے مطابق ، ویلیو پرنٹ ہوتی ہے۔
جبکہ (1) { پرنٹف ("\ r \ n 1 دبائیں یا 2 دبائیں یا 3 دبائیں یا 4 دبائیں")؛ اوپر = وصول_ڈیٹا_فرم_یوارٹ ()؛ سوئچ (اوپیر) { کیس '1': پرنٹف ("\ r \ n1 دباؤ ہے")؛ توڑ کیس '2': پرنٹف ("\ r \ n2 دباؤ ہے")؛ توڑ کیس '3': پرنٹف ("\ r \ n3 دباؤ ہے")؛ توڑ کیس '4': پرنٹف ("\ r \ n4 دباؤ ہے")؛ توڑ پہلے سے طے شدہ: پرنٹف ("\ r \ n غلط کلید دبائی گئی")؛ } ٹائمر0_ڈیلی 1 ایم ایس (300)؛ } }
ٹھیک ہے ، UART0 کے لئے وصول_ڈیٹا_ سے_ UART0 وصول کریں ()؛ فنکشن استعمال ہوتا ہے۔ کامن سی سی لائبریری میں بھی اس کی تعریف کی گئی ہے ۔
UINT8 وصول_ڈیٹا_فرم_یوآرٹ (باطل) { UINT8 c؛ جبکہ (! RI)؛ c = SBUF؛ RI = 0؛ واپسی (c)؛ }
یہ آر آئ پرچم 1 حاصل کرنے کے لئے انتظار کرے گا اور متغیر c کا استعمال کرتے ہوئے وصول شدہ ڈیٹا واپس کرے گا۔
کوڈ اور آؤٹ پٹ کو چمکانا
کوڈ نے 0 انتباہ اور 0 نقائص کو لوٹا اور کییل کے ذریعہ پہلے سے طے شدہ چمکنے کا طریقہ استعمال کرکے چمک اٹھا۔ اگر آپ کوڈ کو مرتب کرنے اور اپلوڈ کرنے کا یقین نہیں ہے تو ، نووٹن آرٹیکل کے ساتھ شروع کرنا دیکھیں۔ درج ذیل لائنز اس بات کی تصدیق کرتی ہیں کہ ہمارا کوڈ کامیابی کے ساتھ اپ لوڈ ہوچکا ہے۔
تعمیر نو کا آغاز ہوا: پروجیکٹ: printf_UART0 دوبارہ تعمیر کا ہدف 'GPIO' مرتب کریں PUTCHAR.C… مرتب کریں Print_UART0.C… مرتب کریں Delay.c… مرتب کریں کامن سی سی… STARTUP.A51 جمع کرنا… لنکنگ… پروگرام کا سائز: ڈیٹا = 54.2 xdata = 0 کوڈ = 2341 "۔ سے آؤٹ پٹ \ Printf_UART1"… ". \ آؤٹ پٹ \ Printf_UART1" - 0 خرابی (زبانیں) ، 0 انتباہ (زبانیں)۔ عمارت کا وقت گزر گیا : 00:00:02 "G: \\ n76E003 \\ سافٹ ویئر لوڈ کریں \\ N76E003_BSP_Kil_C51_V1.0.6 \\ نمونہ_کوڈ \\ UART0_Printf \\ آؤٹ پٹ \\ پرنٹف_ورٹ 1" فلیش مٹائیں۔ فلیش رائٹ ڈون: 2341 بائٹس پروگرامڈ۔ فلیش تصدیق شدہ ہو گیا: 2341 بائٹس کی تصدیق ہوگئی۔ فلیش لوڈ 15:48:08 بجے ختم ہوا
ڈویلپمنٹ بورڈ پروگرامر اور لیپ ٹاپ کے ذریعہ پاور سے ماخذ میں USB سے UART ماڈیول کا استعمال کرتا ہے۔ UART ڈیٹا کو ظاہر کرنے یا بھیجنے کے لئے ، سیریل مانیٹر سافٹ ویئر کی ضرورت ہے۔ میں اس عمل کے لئے تیرا اصطلاح استعمال کر رہا ہوں ۔
جیسا کہ آپ نیچے کی تصویر میں دیکھ سکتے ہیں ، میں ہمارے نووٹن کنٹرولر سے بھیجے گئے ڈوروں کو ڈسپلے کرنے اور اسے سیریل مانیٹر سافٹ ویئر پر ظاہر کرنے کے قابل تھا۔ سیریل مانیٹر سے بھی اقدار کو پڑھنے کے قابل تھا۔
آپ اس ٹیوٹوریل کے مکمل مظاہرے کے لئے نیچے لنک کردہ ویڈیو چیک کرسکتے ہیں۔ امید ہے کہ آپ نے مضمون سے لطف اندوز ہوئے ہوں گے اور کوئی مفید چیز سیکھی ہوگی۔ اگر آپ کے کوئی سوالات ہیں تو ، آپ انہیں نیچے تبصرہ سیکشن میں چھوڑ سکتے ہیں یا دیگر تکنیکی سوالات پوسٹ کرنے کے لئے ہمارے فورمز کا استعمال کرسکتے ہیں۔