جدول المحتويات:

أساسيات RC522 و PN532 RFID: 10 خطوات
أساسيات RC522 و PN532 RFID: 10 خطوات

فيديو: أساسيات RC522 و PN532 RFID: 10 خطوات

فيديو: أساسيات RC522 و PN532 RFID: 10 خطوات
فيديو: ☑️ RFID أردوينو للمبتدئين - فهم واستخدام جهاز ال 2024, يوليو
Anonim
أساسيات RC522 و PN532 RFID
أساسيات RC522 و PN532 RFID

ملاحظة: لدي الآن Instructables التي تقدم كود Arduino لـ RC522 و PN532.

منذ بعض الوقت اشتريت ثلاث وحدات RFID مختلفة للتجربة. في مشروع سابق ، قمت بتفصيل كيفية استخدام وحدة 125 كيلو هرتز بسيطة للقيام بوظيفة أمان أساسية. تستخدم وحدات مثل هذه علامات للقراءة فقط بحيث يتم فحص العملية بحثًا عن المعرف ، وتخزينها إذا رغبت في ذلك ، ومقارنتها بالمعرفات المخزنة. تعمل الوحدات الأخرى التي اشتريتها بسرعة 13.56 ميغاهرتز وتستخدم علامات يمكن قراءتها وكتابتها على حدٍ سواء ، لذا فإن استخدامها لمجرد توفير الأمان الأساسي يعد نوعًا من الهدر. تستخدم الوحدتان الشائعتان إما شريحة RC522 أو شريحة PN532 - وكلاهما من صنع NXP.

إذا كنت قد قرأت أيًا من مشاريعي الأخرى ، فأنت تعلم أنني أحب استخدام وحدات تحكم دقيقة PIC رخيصة وبرنامج بلغة التجميع. لذلك ما كنت أبحث عنه هو سلسلة من الخطوات المطلوبة للتحدث إلى الوحدات وعلامات RFID. في حين أن هناك الكثير من أمثلة البرامج عبر الإنترنت للوحدات النمطية ، فإن معظمها مكتوب في برنامج "C" لـ Arduino ويستخدم واجهة SPI. أيضًا ، تتطلب أدلة الرقائق وعلامات Mifare بعضًا من فك الشفرات. يتعلق هذا المنشور بشكل أساسي بالمعلومات التي كنت أتمنى أن أحصل عليها عندما بدأت المشروع. أقوم أيضًا بتضمين برامج تجميع 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 حرفًا في سطرين). لدي أيضًا شاشة LCD من 40 حرفًا في سطرين أستخدمها لتفريغ البيانات الأولية أثناء تصحيح الأخطاء ، لذلك قمت بتضمين تعريف في البرنامج يسمح لي بالاستفادة من مساحة العرض الإضافية.

الخطوة 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 تسمى كتل مقطورة. كتل Trailer هي الأخيرة في كل قطاع وتحتوي على مفتاحين وبتات وصول الكتلة. تنطبق المفاتيح وبتات الوصول للحظر على كتل البيانات فقط في هذا القطاع بحيث يمكنك الحصول على مفاتيح وقواعد وصول مختلفة لكل قطاع. يتم تعيين المفاتيح الافتراضية على "FF FF FF FF FFh". بالنسبة لهذا المشروع الأساسي ، أستخدم كتلة بيانات واحدة فقط وأحتفظ بالمفاتيح الافتراضية وبتات الوصول. هناك الكثير من المستندات المتعلقة بهذه البطاقات ، لذا ما عليك سوى إجراء بحث عبر الإنترنت عن "Mifare" أو زيارة موقع NXP على الويب إذا كنت ترغب في استكشافها بمزيد من التعمق.

الخطوة 4: التشغيل العام

على الرغم من أن كلتا الوحدتين فريدتان من حيث طريقة الوصول إليهما وطريقة وصولهما إلى العلامات ، إلا أن هناك عملية عامة مطلوبة لإنجاز المهمة. بالنسبة لهذا المشروع ، نفترض أن العلامات هي نوع Mifare Classic 1k وأننا لا نسمح إلا بعلامة واحدة في كل مرة في مجال الهوائي. يتم تحديد الخطوات الأساسية أدناه.

· تهيئة الوحدة: بشكل عام يتطلب ذلك أشياء مثل كتابة القيم للسجلات في الشريحة ، وإرسال أوامر "التنبيه" ، وتشغيل الطاقة للهوائي. في تطبيق يعمل بالبطارية ، قد ترغب في أن تكون قادرًا على تشغيل وإيقاف طاقة الهوائي لحفظ البطارية ولكن بالنسبة لهذا التطبيق البسيط ، نقوم بتشغيله مرة واحدة ثم نتركه قيد التشغيل.

· امسح علامة التشفير (522 فقط): عندما تتم مصادقة العلامة ، يتم تعيين علامة لإعلام المستخدم بأن الاتصالات مع العلامة سيتم تشفيرها. يجب مسح هذه العلامة من قبل المستخدم قبل الفحص التالي ، حتى لو كانت العلامة التي يتم مسحها هي نفسها.

· المسح بحثًا عن بطاقة: الوحدة النمطية تطلب أساسًا "هل هناك أي شخص بالخارج؟" وترد العلامة "أنا هنا". إذا لم تحصل الوحدة على استجابة سريعة ، فإنها تتوقف عن الاستماع. هذا يعني أننا بحاجة إلى إرسال أوامر الفحص بشكل متكرر إلى الوحدة النمطية حتى تعثر على علامة.

· الحصول على رقم تعريف المستخدم للعلامة (UID): ستستجيب العلامة لطلب الفحص ببعض المعلومات المحدودة مثل نوع العلامة. هذا يعني أننا قد نحتاج إلى إرسال أمر آخر للحصول على UID الخاص به. المعرف الفريد العمومي (UID) هو أربعة بايت لعلامات Mifare Classic 1k. إذا كان من الممكن أن يكون أطول بالنسبة للعلامات الأخرى ولكن هذا المشروع لا يعالجها.

· حدد العلامة (522 فقط): يتم استخدام المعرف الفريد العمومي (UID) لتحديد العلامة التي يريد المستخدم المصادقة عليها للقراءة والكتابة. يعتمد هذا على احتمال وجود أكثر من علامة واحدة في مجال الهوائي. ليس هذا هو الحال بالنسبة لتطبيقنا البسيط ولكننا نحتاج إلى تحديد العلامة على أي حال.

· مصادقة العلامة: هذه الخطوة مطلوبة إذا أردنا القيام بأي قراءة أو كتابة للعلامة. إذا كان كل ما نريد فعله هو التفريق بين العلامات لتطبيق أمان بسيط ، فعندئذٍ يكون المعرف الفريد كافيًا. تتطلب المصادقة أن نعرف UID وأن نعرف مفتاح التشفير لقطاع البيانات للعلامة التي نريد الوصول إليها. بالنسبة لهذا المشروع ، نتمسك بالمفاتيح الافتراضية ولكن مشروع المتابعة الخاص بي يغير المفاتيح بحيث يمكن استخدام العلامة كمحفظة إلكترونية.

· قراءة العلامة أو كتابتها: تُرجع القراءات دائمًا جميع بايتات كتلة البيانات المطلوبة البالغ عددها 16 بايت. تتطلب عمليات الكتابة كتابة 16 بايت كلها في نفس الوقت. إذا كنت ترغب في قراءة أو كتابة كتلة أخرى في نفس قطاع البيانات ، فلن تحتاج العلامة إلى المصادقة مرة أخرى. إذا كنت ترغب في قراءة أو كتابة كتلة في قطاع بيانات مختلف ، فيجب أن تتم المصادقة على العلامة مرة أخرى باستخدام المفتاح الخاص بهذا القطاع.

الخطوة 5: تسلسل الوصول إلى وحدة MFRC522

يتضمن روتين بدء التشغيل هذه الخطوات الأساسية الموجودة في معظم التطبيقات التي نظرت إليها:

· إرسال بايت البيانات الوهمية (انظر الفقرة التالية)

· إعادة تشغيل رقيقة

· ضبط كسب مستقبل التردد اللاسلكي (إذا كان هناك شيء آخر غير الإعداد الافتراضي)

· ضبط نسبة تعديل السؤال على 100٪

· تحديد قيمة البذور لحسابات اتفاقية حقوق الطفل

· قم بتشغيل الهوائي

· الحصول على إصدار البرنامج الثابت (غير مطلوب)

لبعض الأسباب غير المبررة ، تعمل الوحدة النمطية الخاصة بي وتعتقد أنها تلقت أمر كتابة بدون بايت البيانات. لا أعرف ما إذا كانت هذه مجرد مشكلة في الوحدة الخاصة بي ولكني لم أر أي إشارات إليها في مكان آخر. لقد جربت إعادة تعيين كل من الأجهزة والبرامج ولم أصلح المشكلة. كان الحل هو إضافة مكالمة قراءة وهمية لتسجيل "0" (غير محدد) في بداية روتين تهيئة الوحدة النمطية. إذا كانت الوحدة ترى هذا على أنه بيانات لأمر الكتابة غير المعروف ، فلا يبدو أن هناك أي تأثيرات سيئة. إذا رآها كأمر قراءة ، فلن يحدث شيء مفيد. يزعجني أنني لا أستطيع تحديد المشكلة بالكامل ، لا سيما بالنظر إلى أن إعادة تعيين الجهاز للوحدة فقط لا يحل المشكلة.

تتكون شريحة RC522 من عدد من السجلات ، معظمها للقراءة والكتابة. لإجراء الكتابة ، يتم إرسال رقم السجل إلى الوحدة متبوعًا بالقيمة المراد كتابتها. لإجراء قراءة ، تمت إضافة 0x80 إلى رقم السجل ويتم إرسالها إلى الوحدة النمطية. الاستجابة لأمر الكتابة هي صدى للسجل الذي تم الوصول إليه. الرد على أمر القراءة هو محتويات السجل. يستفيد البرنامج من هذه المعرفة للتحقق من تنفيذ الأمر بشكل صحيح.

الخطوة 6: تسلسل الوصول إلى الوحدة النمطية PN532

يتضمن روتين بدء التشغيل هذه الخطوات المطلوبة:

إرسال سلسلة التهيئة: هذا خاص بواجهة UART. ينص الدليل على أن واجهة UART ستستيقظ عند الحافة الصاعدة الخامسة التي تم اكتشافها على الواجهة. توصي بإرسال 0x55 ، 0x55 ، 0x00 ، 0x00 ، 0x00 ، 0x00. بالنسبة للجزء الأكبر ، هناك حاجة فقط إلى وجود عدد كافٍ من الأحرف ذات الحواف الصاعدة ويجب ألا تبدو مثل مقدمة الأمر (00 00 FF).

· إيقاظ الوحدة: تظهر في دليل المستخدم أن الوحدة يتم تهيئتها إلى نوع من حالة السكون تسمى "LowVbat". للخروج من هذه الحالة ، نحتاج إلى إرسال أمر "SAMConfiguration".

يتوقع PN532 أن يتم إرسال الأوامر بتنسيق رسالة محدد يتضمن مقدمة ، ورسالة ، و postamble. تتبع رسائل الرد نفس التنسيق. تشتمل كل من رسائل الأوامر والاستجابة على TFI (معرّف الإطار) وإصدار الأمر. يستخدم الأمر TFI من 0xD4 وتستخدم الاستجابة 0xD5. تختلف إصدارات الأمر ولكن الاستجابة ستؤدي دائمًا إلى زيادة إصدار الأمر وإعادته بالبايت بعد TFI. يسمح هذا الاتساق بمسح رسائل الاستجابة بسهولة بحثًا عن المعلومات ذات الصلة.

تتكون كل رسالة أمر (بعد التمهيد) من طول الرسالة ، والمكمل 2 لطول الرسالة ، و TFI ، والأمر ، والبيانات ، والمجموع الاختباري ، و postamble. يبني البرنامج الأوامر الفردية ثم يستدعي روتينًا يحسب المجموع الاختباري ويلحق postamble.

تنسيق الرسالة للرد مشابه لتنسيق الأمر. ستتضمن الاستجابة النموذجية 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 هو 115 كيلو ويمكن ضبطه على 1.288 ميجا باود. يتم تخزين وحدات البايت المتلقاة في منطقة عازلة ويستردها الجزء الرئيسي من البرنامج حسب الحاجة.

تشير علامة New_Msg إلى تلقي وحدات البايت ويشير Byte_Count إلى عدد وحدات البايت. لقد قمت بتضمين روتين "Disp_Buff" في البرنامج الذي يمكن استدعاؤه لعرض محتويات المخزن المؤقت للاستلام أثناء التصحيح. ستتجاوز بعض رسائل الإرجاع شاشة 1602 النموذجية ولكن لدي شاشة LCD مكونة من 40 حرفًا في سطرين وجدتها في موقع إلكتروني فائض للإلكترونيات. يمكن تعيين تعريف "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" الذي يمكّن ببساطة Watchdog Timer ثم ينتقل إلى حلقة لا نهائية في انتظار المهلة.

الخطوة 9: البرنامج الفريد MFRC522

تتطلب شريحة RC522 إرشادات ذات مستوى منخفض أكثر من شريحة PN532 لإنجاز الاتصالات باستخدام العلامات. إنه نوع من البرمجة في لغة التجميع مقابل البرمجة في "C". الفرق المهم الآخر هو أن RC522 يتطلب أن يتم توجيه الاتصالات مع العلامة من خلال المخزن المؤقت FIFO. الإجراءات الروتينية "Write_FIFO" و "Read_FIFO" تعالج هذه المهام. يشتمل برنامج MFRC522 على قسم للعديد من أوامر المستوى الأدنى التي تُبنى منها الوظائف الرئيسية.

يختلف حساب المجموع الاختباري لأمر العلامة لـ RC522 اختلافًا كبيرًا عن حساب PN532. بعد إنشاء أمر العلامة في FIFO ، يتم إرسال أمر الوحدة النمطية لحساب المجموع الاختباري. لا يتم إلحاق نتيجة 16 بت تلقائيًا بأمر العلامة ولكنها متاحة للقراءة من سجلين 8 بت. يؤدي حساب المجموع الاختباري إلى مسح البيانات الموجودة في الوارد أولاً يصرف أولاً ، وبالتالي يكون التسلسل المطلوب كما يلي:

· بناء القيادة في FIFO

قيادة حساب اختباري

· بناء الأمر في FIFO مرة أخرى

· اقرأ سجلات CRC واكتب بايتات المجموع الاختباري إلى FIFO

إرسال إما أمر Transceive أو المصادقة

سينقل الأمر Transceive المخزن المؤقت FIFO ثم ينتقل تلقائيًا إلى وضع الاستلام لانتظار الاستجابة من العلامة. يجب أن يتبع الأمر Transceive إعداد بت StartSend في BitFramingRegister من أجل نقل البيانات فعليًا. لا يحتوي أمر المصادقة على هذا المطلب.

بشكل عام ، تستخدم تطبيقات كود Arduino "C" المتاحة عبر الإنترنت سجلات علم المقاطعة وسجل المهلة لضمان تلقي الاستجابة الصحيحة في الوقت المناسب. في رأيي ، هذا مبالغة بالنسبة لهذا التطبيق المهم غير الزمني. بدلاً من ذلك ، أستخدم مهلات البرامج القصيرة لانتظار الاستجابة ثم التحقق من صحتها. يوضح دليل علامات Mifare تفاصيل توقيت المعاملات المختلفة ويُسمح أيضًا بالوقت للعدد المتوقع للبايتات التي سيتم استلامها. تم تضمين هذه التأخيرات الزمنية في معظم الإجراءات الفرعية للأوامر ذات المستوى المنخفض.

الخطوة 10: البرنامج الفريد PN532

بعد تهيئة الوحدة النمطية ، يتم تنفيذ الخطوات اللازمة للعثور على العلامة والمصادقة عليها عن طريق كتابة الأمر المناسب متبوعًا بالبيانات الضرورية. يقوم الأمر scan بإرجاع UID الذي يتم استخدامه بعد ذلك للمصادقة. بعد ذلك ، تقوم قراءة العلامة وكتابتها بإرسال أو إرجاع 16 بايت لكتلة البيانات الموجهة.

تم تفصيل تسلسل التهيئة مسبقًا ، كما يرسل إجراء البرنامج نفسه أمر SAMConfiguration لإخراج الوحدة النمطية من حالة "LowVbat". يتم إنشاء بقية الأوامر الأساسية ، مثل Scan و Authenticate و Read / Write Tag ، بالتسلسل في الإجراءات المعمول بها. يتم حساب المجموع الاختباري عن طريق إضافة بايت الأمر فقط ، وعمل تكملة ، ثم إضافة 1 لجعله مكملًا لـ 2. يتم إلحاق نتيجة 8 بت بسلسلة الأمر قبل postamble مباشرة.

لا يوجد ما يرد أولاً يصرف أولاً (FIFO) في RC522 ، لذلك يتم تلقي رسائل الاستجابة الكاملة تلقائيًا. يقوم روتين "Find_Response" بمسح المخزن المؤقت لبيانات الاستلام من أجل TFI (0xD5). يستفيد الروتين من معرفة ما يجب أن تكون عليه الرسائل المتوقعة ويتجاهل ردود ACK البسيطة التي لا تتضمن بيانات. بمجرد العثور على TFI ، تكون الاستجابات المرغوبة بمثابة تعويض معروف عنه. يتم حفظ بايتات حالة الأمر و echo الأمر بواسطة روتين "Read_Buff" للتحقق لاحقًا.

هذا كل ما يخص هذا المنشور. تحقق من مشاريعي الإلكترونية الأخرى على: www.boomerrules.wordpress.com

موصى به: