فهرست مطالب:

RC522 و PN532 مبانی RFID: 10 مرحله
RC522 و PN532 مبانی RFID: 10 مرحله

تصویری: RC522 و PN532 مبانی RFID: 10 مرحله

تصویری: RC522 و PN532 مبانی RFID: 10 مرحله
تصویری: NFC RFID PN532 | RAK13600 2024, جولای
Anonim
RC522 و PN532 مبانی RFID
RC522 و PN532 مبانی RFID

توجه: من در حال حاضر دارای دستورالعمل هایی هستم که کد Arduino را برای RC522 و PN532 ارائه می دهند.

چند وقت پیش من سه ماژول RFID مختلف برای آزمایش خریدم. در پروژه قبلی نحوه استفاده از یک ماژول ساده 125 کیلوهرتز برای انجام یک عملکرد امنیتی اساسی را توضیح دادم. ماژول هایی مانند آن از برچسب های فقط خواندنی استفاده می کنند ، بنابراین فرآیند شناسایی ID ، ذخیره در صورت تمایل و مقایسه با شناسه های ذخیره شده است. سایر ماژولهایی که خریدم با فرکانس 13.56 مگاهرتز کار می کنند و از برچسب هایی استفاده می کنند که قابل خواندن و نوشتن هستند ، بنابراین استفاده از آنها برای امنیت اولیه بیهوده است. دو ماژول رایج از تراشه RC522 یا تراشه PN532 استفاده می کنند - هر دو توسط NXP ساخته شده اند.

اگر پروژه های دیگر من را خوانده اید ، می دانید که من دوست دارم از میکروکنترلرها و برنامه های ارزان قیمت PIC به زبان اسمبلی استفاده کنم. بنابراین آنچه من دنبال آن بودم ، دنباله ای از مراحل لازم برای صحبت با ماژول ها و برچسب های RFID بود. در حالی که تعداد زیادی از برنامه های آنلاین برای ماژول ها وجود دارد ، اکثر آنها در نرم افزار C برای Arduino نوشته شده اند و از رابط SPI استفاده می کنند. همچنین ، راهنمای تراشه ها و برچسب های Mifare کمی رمزگشایی می کنند. این پست در درجه اول در مورد اطلاعاتی است که ای کاش هنگام شروع پروژه داشتم. من همچنین برنامه های نرم افزاری مونتاژ PIC را برای انجام دستورات اساسی مورد نیاز هر ماژول گنجانده ام. حتی اگر از PIC و/یا زبان اسمبلی استفاده نمی کنید ، کد منبع حداقل باید ایده خوبی از دستورات خاص مورد نیاز برای انجام هر مرحله را در اختیار شما قرار دهد.

مرحله 1: رابط های سریال

رابط های سریال
رابط های سریال
رابط های سریال
رابط های سریال
رابط های سریال
رابط های سریال
رابط های سریال
رابط های سریال

هر دو تراشه مورد استفاده در این ماژول ها قادر به اتصال از طریق SPI ، I2C یا UART (HSSP) هستند. ماژول PN532 دارای یک سوئیچ DIP است که برای انتخاب رابط مورد نظر استفاده می شود اما ماژول MFRC522 برای رابط SPI متصل است. من ترجیح می دهم از UART داخلی PIC استفاده کنم ، بنابراین آنلاین شکار کردم تا ببینم راهی وجود دارد که ماژول MFRC522 را وارد حالت UART کنم. چیزی که من پیدا کردم این بود که بریدن یک تکه روی تخته کار را می کند. این برش به طور موثر 3.3 ولت را از پین EA تراشه حذف می کند. از لحاظ فنی ، پین EA باید به زمین متصل شود ، اما بسیاری از افراد نمی توانند با توجه به تراکم پین تراشه ، این عملکرد لحیم کاری را انجام دهند. نگران نباشید ، زیرا پین EA دارای کشش داخلی نیست و مانند ورودی های منطقی قدیمی TTL شناور نیست. برای برش نقطه به نمودار تراشه و تصویر قسمت تخته مراجعه کنید. مطمئن شوید که فقط رد کوتاه را مستقیماً به پین EA بریده اید.

مرحله 2: سخت افزار

سخت افزار
سخت افزار

اتصالات سخت افزاری ارتباطات UART در نمودار بالا نشان داده شده است. اتصالات UART برای MFRC522 روی برد مشخص نشده اند ، اما همانطور که در شکل نشان داده شده است ، پین SDA داده های UART را دریافت می کند و پین MISO داده های UART را منتقل می کند. ماژول PN532 دارای علائم UART در پایین صفحه است.

هر دو ماژول با ولتاژ 3.3 ولت کار می کنند و سطح منطقی 5 ولت از پایه PIC TX نیز باید محدود باشد. اتصال LCD راه اندازی استاندارد 4 بیتی است که در تعدادی از پروژه های قبلی من استفاده شده است. قالب پیش فرض برای همه پیام ها برای LCD استاندارد 1602 (16 کاراکتر در 2 خط) تنظیم شده است. من همچنین دارای 40 کاراکتر در 2 خط LCD هستم که در هنگام اشکال زدایی برای تخلیه داده های خام از آن استفاده می کنم ، بنابراین من یک تعریف در نرم افزار قرار دادم که به من امکان می دهد از فضای صفحه نمایش اضافی استفاده کنم.

مرحله 3: بلوک های داده

برچسب های Mifare Classic 1k مورد استفاده برای این پروژه به صورت 16 بخش ، چهار بلوک داده در هر بخش ، 16 بایت در هر بلوک داده پیکربندی شده است. از 64 بلوک داده ، تنها 47 بلوک در واقع قابل استفاده هستند. بلوک داده 0 حاوی داده های سازنده است و بلوک های 3 ، 7 ، 11 ، 15 ، 19 ، 23 ، 27 ، 31 ، 35 ، 39 ، 43 ، 47 ، 51 ، 55 ، 59 و 63 بلوک های تریلر نامیده می شوند. بلوک های تریلر آخرین مورد در هر بخش هستند و شامل دو کلید و بیت دسترسی به بلوک هستند. کلیدها و بیت دسترسی به بلوک فقط برای بلوک های داده در آن بخش اعمال می شود تا بتوانید کلیدها و قوانین دسترسی متفاوتی برای هر بخش داشته باشید. کلیدهای پیش فرض روی "FF FF FF FF FFh" تنظیم شده است. برای این پروژه اساسی فقط از یک بلوک داده استفاده می کنم و کلیدهای پیش فرض و بیت های دسترسی را حفظ می کنم. اسناد زیادی در رابطه با این کارت ها وجود دارد ، بنابراین کافی است "Mifare" را به صورت آنلاین جستجو کنید یا اگر می خواهید آنها را عمیق تر بررسی کنید ، به وب سایت NXP مراجعه کنید.

مرحله 4: عملیات عمومی

در حالی که هر دو ماژول از نظر نحوه دسترسی و نحوه دسترسی به برچسب ها منحصر به فرد هستند ، یک فرایند کلی وجود دارد که برای انجام کار لازم است. برای این پروژه ما فرض می کنیم که برچسب ها از نوع Mifare Classic 1k هستند و ما فقط یک تگ را همزمان در قسمت آنتن مجاز می دانیم. مراحل اساسی در زیر تعریف شده است.

· راه اندازی اولیه ماژول: به طور کلی این امر مستلزم مواردی مانند نوشتن مقادیر برای ثبت در تراشه ، ارسال دستورات "بیدار" و روشن کردن قدرت به آنتن است. در برنامه ای که با باتری کار می کند ، می خواهید قادر به روشن و خاموش کردن آنتن برای صرفه جویی در باتری باشید ، اما برای این برنامه ساده ما آن را یک بار روشن کرده و سپس روشن می گذاریم.

· پاک کردن پرچم رمزنگاری (فقط 522): هنگامی که یک برچسب تأیید می شود ، یک پرچم تنظیم می شود تا به کاربر اطلاع دهد که ارتباطات با برچسب رمزگذاری می شود. این پرچم باید قبل از اسکن بعدی توسط کاربر پاک شود ، حتی اگر برچسب اسکن شده همان است.

· اسکن برای برچسب: ماژول اساساً می پرسد "آیا کسی در خارج وجود دارد؟" و برچسب پاسخ می دهد "من اینجا هستم". اگر ماژول پاسخ سریع دریافت نکند ، گوش دادن متوقف می شود. این بدان معناست که ما باید چندین بار دستورات اسکن را به ماژول ارسال کنیم تا یک برچسب پیدا کند.

· دریافت شناسه کاربر شناسه برچسب (UID): برچسب با برخی اطلاعات محدود مانند نوع برچسب به درخواست اسکن پاسخ می دهد. این بدان معناست که ممکن است برای دریافت UID آن نیاز به ارسال دستور دیگری داشته باشیم. UID چهار بایت برای برچسب های Mifare Classic 1k است. اگر ممکن است برای برچسب های دیگر طولانی تر باشد اما این پروژه به آنها توجه نمی کند.

· برچسب را انتخاب کنید (فقط 522): از UID برای انتخاب برچسبی که کاربر می خواهد برای خواندن و نوشتن احراز هویت کند ، استفاده می شود. این بر اساس این احتمال است که ممکن است بیش از یک برچسب در قسمت آنتن وجود داشته باشد. این برای برنامه ساده ما صادق نیست ، اما به هر حال باید برچسب را انتخاب کنیم.

· احراز هویت برچسب: اگر می خواهیم خواندن یا نوشتن برچسب را انجام دهیم ، این مرحله لازم است. اگر تنها کاری که می خواهیم انجام دهیم این است که بین برچسب ها برای یک برنامه امنیتی ساده تمایز قائل شویم ، UID کافی است. احراز هویت مستلزم این است که UID را بدانیم و کلید رمزنگاری بخش داده برچسب را که می خواهیم به آن دسترسی داشته باشیم ، بدانیم. برای این پروژه ما از کلیدهای پیش فرض استفاده می کنیم اما پروژه بعدی من کلیدها را تغییر می دهد تا از برچسب به عنوان یک کیف پول الکترونیکی استفاده شود.

· خواندن یا نوشتن برچسب: خوانده شده همیشه همه 16 بایت بلوک داده درخواست شده را برمی گرداند. نوشتن مستلزم این است که همه 16 بایت به طور همزمان نوشته شوند. اگر می خواهید بلوک دیگری را در همان بخش داده بخوانید یا بنویسید ، تگ نیازی به احراز هویت مجدد ندارد. اگر می خواهید یک بلوک را در بخش داده دیگری بخوانید یا بنویسید ، باید با استفاده از کلید مربوط به آن بخش ، تگ دوباره احراز هویت شود.

مرحله 5: دنباله دسترسی به ماژول MFRC522

روال راه اندازی شامل این مراحل اساسی است که در اکثر برنامه هایی که من بررسی کردم یافت می شود:

· ارسال بایت داده ساختگی (به پاراگراف بعدی مراجعه کنید)

· تنظیم مجدد نرم

· تنظیم افزایش گیرنده RF (اگر چیزی غیر از پیش فرض مورد نظر است)

· درصد مدولاسیون ASK را روی 100 Set تنظیم کنید

· مقدار بذر را برای محاسبات CRC تنظیم کنید

· آنتن را روشن کنید

· دریافت نسخه سیستم عامل (لازم نیست)

به دلایلی غیر قابل توضیح ماژول من قدرت می یابد و فکر می کند که دستور نوشتن را بدون بایت داده دریافت کرده است. من نمی دانم آیا این فقط یک مشکل مربوط به ماژول من است یا هیچ اشاره ای به آن در جاهای دیگر ندیده ام. من هر دو تنظیمات سخت افزاری و نرم افزاری را آزمایش کردم و هیچ کدام مشکل را برطرف نکردند. راه حل من اضافه کردن یک فراخوان ساختگی برای ثبت "0" (تعریف نشده) در ابتدای روال راه اندازی ماژول بود. اگر ماژول این را به عنوان داده های دستور نوشتن ناشناخته در نظر بگیرد ، به نظر نمی رسد که هیچ گونه عوارض جانبی وجود داشته باشد. اگر آن را به عنوان یک دستور خواندن در نظر بگیرد ، هیچ چیز مفید اتفاق نمی افتد. من را ناراحت می کند که من نمی توانم مشکل را به طور کامل تعریف کنم ، به خصوص با توجه به اینکه تنظیم مجدد سخت افزار فقط ماژول مشکل را برطرف نمی کند.

تراشه RC522 از تعدادی ثبات تشکیل شده است که اکثر آنها خواندن و نوشتن هستند. برای انجام نوشتن ، شماره ثبت به ماژول ارسال می شود و سپس مقدار آن برای نوشتن ارسال می شود. برای انجام خواندن ، شماره ثبت 0x80 به آن اضافه شده و به ماژول ارسال می شود. پاسخ به یک دستور نوشتن ، انعکاسی از ثبات دسترسی است. پاسخ به دستور read محتویات ثبت نام است. نرم افزار از این دانش برای تأیید صحت اجرای دستور استفاده می کند.

مرحله 6: دنباله دسترسی به ماژول PN532

روال راه اندازی شامل این مراحل مورد نیاز است:

· ارسال یک رشته مقداردهی اولیه: این مخصوص رابط UART است. در دفترچه راهنما آمده است که رابط UART در پنجمین لبه بالارونده تشخیص داده شده در رابط بیدار می شود. توصیه می کند 0x55 ، 0x55 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ارسال کنید. در بیشتر موارد ، فقط باید تعداد کافی از کاراکترها با لبه های رو به بالا وجود داشته باشد و آنها نباید شبیه مقدمه فرمان (00 00 FF) باشند.

· ماژول را بیدار کنید: در دفترچه راهنمای کاربر نشان داده شده است که ماژول به نوعی حالت خواب به نام "LowVbat" راه اندازی می شود. برای خروج از این حالت ، ما باید دستور "SAMConfiguration" را ارسال کنیم.

PN532 انتظار دارد که دستورات در قالب پیام مشخصی که شامل یک مقدمه ، پیام و یک پست پستال است ارسال شود. پیام های پاسخ از همان فرمت پیروی می کنند. پیام های فرمان و پاسخ هر دو شامل TFI (Frame Identifier) و نسخه فرمان هستند. فرمان از TFI 0xD4 و پاسخ از 0xD5 استفاده می کند. نسخه های فرمان متفاوت است اما پاسخ همیشه نسخه فرمان را افزایش می دهد و پس از TFI آن را در بایت باز می گرداند. این سازگاری اجازه می دهد تا پیامهای پاسخ به راحتی برای اطلاعات مربوطه اسکن شوند.

هر پیام فرمان (به دنبال مقدمه) شامل طول پیام ، مکمل طول پیام 2 ، TFI ، فرمان ، داده ، جمع چک ، و پست نامه است. این نرم افزار دستورات فردی را ایجاد می کند و سپس یک روال معمول را فرا می خواند که جمع چک را محاسبه و ضمیمه پست را ضمیمه می کند.

قالب پیام برای پاسخ مشابه دستور است. یک پاسخ معمولی شامل ACK (00 00 FF 00 FF 00) و به دنبال آن پاسخ خاص به فرمان است. هر پاسخ فرمان با مقدمه ای از 00 00 FF شروع می شود. پاسخ همچنین باید یک بایت TFI از D5 داشته باشد و شماره فرمان را 1 افزایش دهد. برای دستور "SAMConfiguration" (14) ما 15 خواهد بود. دستور "SAMConfiguration" این پاسخ را دریافت می کند: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00.

دستورات دیگر مخصوص ماژول وجود دارد که می توان آنها را ارسال کرد اما برای این برنامه مورد نیاز نیستند. با این حال ، من یک روال معمول را در نظر گرفتم که می تواند برای بازیابی شماره نسخه سیستم عامل فراخوانی شود. یک پاسخ معمولی (پس از ACK و مقدمه) این خواهد بود: 06 FA D5 03 32 01 06 07 E8 00. "01 06 07" نشان دهنده نسخه سیستم عامل شماره 1.6.7 است.

مرحله 7: دنباله دسترسی به برچسب

پس از آماده شدن ماژول ، می توانیم دستورات خاصی را برای برچسب ها ارسال کنیم. برای خواندن یا نوشتن داده های برچسب ، باید شماره شناسایی آن (UID) را داشته باشیم. سپس UID و کلید برای مجاز کردن بخش خاصی از داده های برچسب برای خواندن/نوشتن استفاده می شود. خواندن/نوشتن داده های برچسب همیشه در هر 16 بایت در یک بلوک داده مشخص انجام می شود. این بدان معناست که برنامه معمولی بلوک داده را می خواند ، داده ها را به دلخواه تغییر می دهد و سپس داده های جدید را به برچسب می نویسد.

مرحله 8: نرم افزار

هر زمان که PIC UART یک بایت داده دریافت می کند ، نرم افزار کنترل وقفه فراخوانی می شود. در برخی از پروژه های قبلی UART من به جای استفاده از کنترل کننده وقفه ، فقط می توانم از پرچم وقفه RX نظرخواهی کنم. این امر در مورد این نرم افزار صدق نمی کند ، مخصوصاً در مورد PN532 که با سرعت بسیار بیشتری نسبت به RC522 ارتباط برقرار می کند. رابط UART RC522 به 9600 باود محدود می شود در حالی که پیش فرض برای PN532 115k است و می تواند تا 1.288M baud تنظیم شود. بایت های دریافتی در یک منطقه بافر ذخیره می شوند و قسمت اصلی نرم افزار آنها را در صورت نیاز بازیابی می کند.

پرچم New_Msg نشان می دهد که بایت ها دریافت شده اند و Byte_Count تعداد آنها را نشان می دهد. من یک روال "Disp_Buff" را در نرم افزار گنجانده ام که می تواند برای نمایش محتویات بافر دریافت در حین اشکال زدایی فراخوانی شود. برخی از پیامهای برگشتی از صفحه نمایش معمولی 1602 سرریز می شوند ، اما من دارای LCD 40 کاراکتر در 2 خط هستم که در یک سایت الکترونیکی مازاد آنلاین پیدا کردم. تعریف "Max_Line" را می توان برای اندازه LCD شما تنظیم کرد. در صورت دستیابی به "Max_Line" ، روال "Disp_Buff" با نوشتن در خط دوم ادامه می یابد. اگر LCD 4 خطی دارید ، می توانید کمی کد به آن روال اضافه کنید تا خطوط سه و چهار را ادامه دهید. برای PN532 یک پرچم وجود دارد که می توان آن را طوری تنظیم کرد که روال همه بایت های دریافتی را رها کند یا فقط 16 بایت داده را از یک پاسخ خوانده شده بریزد.

نیازی به پاکسازی بافر دریافتی یا Byte_Count نیست زیرا پاک کردن پرچم New_Msg باعث پاک شدن Byte_Count توسط کنترل کننده وقفه می شود و این همان چیزی است که به عنوان نمایه در بافر استفاده می شود. New_Msg معمولاً قبل از هر مرحله از دستور پاک می شود تا نتایج خاص آن فرمان به راحتی پیدا و تأیید شوند. در RC522 این بدان معناست که بافر دریافت معمولاً فقط 1 تا 4 بایت دارد. در برخی موارد ، مانند خواندن بلوک داده ، دستور Read_FIFO باید چندین بار صادر شود تا بایت ها از FIFO به بافر دریافت منتقل شوند. تمام نتایج فرمان برای PN532 به بافر دریافت ختم می شود ، بنابراین یک روش اسکن برای تعیین بایت های مورد نیاز انجام می شود.

حلقه اصلی در نرم افزار یک برچسب را اسکن می کند و سپس برچسب را برای خواندن/نوشتن احراز هویت می کند. برای نرم افزار آزمایشی موجود در اینجا ، متغیر Junk_Num هر بار از طریق حلقه اصلی اصلاح می شود و در حین نوشتن برچسب استفاده می شود. مقادیر نوشته شده بین مقدار Junk_Num و مکمل 1 Junk_Num متناوب است. در نهایت ، 16 مقدار نوشته شده خوانده و نمایش داده می شود. برای هر مرحله پیام های نمایش داده شده با تاخیر تماس های روتین وجود دارد تا زمان خواندن هر پیام به شما امکان دهد. پیامهای خطا نیز ارائه می شوند اما معمولاً فقط در صورت حذف برچسب در حین عملیات رخ می دهد.

بخشی از مقداردهی اولیه نرم افزار قسمتی از کد است که فقط با قدرت بالا اجرا می شود و در صورت تشخیص بازنشانی نرم افزار حذف می شود. پیامهای خطا عموماً با راه اندازی مجدد نرم افزار به عنوان راهی برای خروج از حلقه اصلی خاتمه می یابد. بازنشانی در روال "Tilt" اتفاق می افتد که به سادگی Timer Watchdog را فعال می کند و سپس در یک حلقه نامحدود منتظر وقفه زمانی می رود.

مرحله 9: نرم افزار منحصر به فرد MFRC522

تراشه RC522 برای انجام ارتباطات با برچسب ها به دستورالعمل های سطح پایین بیشتری نسبت به تراشه PN532 نیاز دارد. این شبیه برنامه نویسی به زبان اسمبلی در مقابل برنامه نویسی در "C" است. تفاوت مهم دیگر این است که RC522 مستلزم ارتباطات با برچسب از طریق بافر FIFO است. روالهای "Write_FIFO" و "Read_FIFO" این وظایف را انجام می دهند. نرم افزار MFRC522 شامل قسمتی از بسیاری از دستورات سطح پایین است که عملکردهای اصلی از آن ساخته شده اند.

محاسبه فرمان برچسب برای RC522 بسیار متفاوت از PN532 است. بعد از اینکه دستور تگ در FIFO ساخته شد ، یک فرمان ماژول برای محاسبه جمع چک ارسال می شود. نتیجه 16 بیتی به طور خودکار به دستور tag اضافه نمی شود ، اما برای خواندن از دو ثبت 8 بیتی در دسترس است. محاسبه جمع چک داده ها را در FIFO پاک می کند ، بنابراین ترتیب مورد نیاز به شرح زیر است:

· فرمان را در FIFO بسازید

· فرمان محاسبه جمع چک

· دوباره فرمان را در FIFO بسازید

· ثبت CRC را بخوانید و بایت های چک چک را به FIFO بنویسید

· یک فرمان Transceive یا Authenticate ارسال کنید

دستور Transceive بافر FIFO را منتقل می کند و سپس به طور خودکار به حالت دریافت تغییر می کند تا منتظر پاسخ از تگ باشید. دستور Transceive باید با تنظیم بیت StartSend در BitFramingRegister انجام شود تا داده ها واقعاً منتقل شوند. دستور Authenticate چنین شرطی را ندارد.

به طور کلی ، برنامه های کاربردی کد Arduino "C" که به صورت آنلاین در دسترس هستند از ثبت پرچم وقفه و ثبت زمان استفاده می کنند تا اطمینان حاصل شود که پاسخ صحیح به موقع دریافت می شود. به نظر من ، این برنامه کاربردی مهم و غیر وقت بسیار زیاد است. در عوض ، من از وقفه های کوتاه نرم افزاری استفاده می کنم تا منتظر پاسخ باشم و سپس صحت آن را بررسی کنم. دفترچه راهنمای برچسب های Mifare زمان انجام معاملات مختلف را مشخص می کند و همچنین زمان دریافت تعداد مورد انتظار بایت مجاز است. این تاخیرهای زمانی در اکثر زیر روالهای فرماندهی سطح پایین تعبیه شده است.

مرحله 10: نرم افزار منحصر به فرد PN532

پس از راه اندازی اولیه ماژول ، مراحل لازم برای یافتن و احراز هویت برچسب با نوشتن دستور مناسب و به دنبال داده های لازم انجام می شود. دستور اسکن UID را باز می گرداند که سپس برای احراز هویت استفاده می شود. پس از آن ، خواندن و نوشتن برچسب ، ارسال یا بازگشت 16 بایت برای بلوک داده آدرس داده شده است.

دنباله مقداردهی اولیه قبلاً توضیح داده شد و همان روال نرم افزاری نیز دستور SAMConfiguration را ارسال می کند تا ماژول را از حالت LowVbat خارج کند. بقیه دستورات اساسی مانند اسکن ، احراز هویت ، خواندن/نوشتن برچسب ، به طور متوالی در روالهای قابل اجرا ساخته می شوند. جمع چک را فقط با جمع کردن بایت های فرمان ، انجام یک مکمل و سپس افزودن 1 برای تبدیل آن به مکمل 2 محاسبه می کند. نتیجه 8 بیتی درست قبل از ارسال پست به رشته فرمان اضافه می شود.

هیچ FIFO مانند RC522 وجود ندارد ، بنابراین پیامهای پاسخ کامل به طور خودکار دریافت می شوند. روال "Find_Response" بافر داده دریافت را برای TFI (0xD5) اسکن می کند. این روال از دانستن پیام های مورد انتظار استفاده می کند و پاسخ های ساده ACK را که شامل داده ها نیست نادیده می گیرد. هنگامی که TFI پیدا شد ، پاسخ های مورد نظر از آن جبران می شود. بوت های فرمان echo و فرمان توسط روال “Read_Buff” برای تأیید بعدی ذخیره می شوند.

همین برای این پست سایر پروژه های الکترونیکی من را در www.boomerrules.wordpress.com ببینید

توصیه شده: