
يوضح هذا المثال استخدام CRC الطرفية في Microcontroller PIC18F47Q10. وحدة CRC في الموافقة المسبقة عن علم الموافقة المسبقة عن علم هي أجهزة تنفيذ المولد الاختبارات الذي يحسب CRC 16 بت مع كثير الحدود القابلة للبرمجة. يقترن مع ماسحة الذاكرة لحسابات CRC أسرع. يمكن لماسح الذاكرة تلقائيًا توفير البيانات إلى وحدة CRC يستخدم هذا المثال معلمات CRC-16-CCITT القياسية. يحسب هذا العرض التوضيحي CRC لذاكرة البرنامج وتخزينه في منطقة EEPROM من وحدة التحكم بعد برمجة الجهاز لأول مرة. على عمليات التشغيل اللاحقة ، يقوم الجهاز بحساب CRC Flash عند بدء التشغيل ويتحقق منه مقابل CRC المخزنة في منطقة EEPROM. في حالة عدم تطابق تنفيذ البرنامج يشير إلى خطأ CRC. يمكن جدولة فحص CRC بشكل دوري أثناء تشغيل الجهاز لضمان سلامة الفلاش.

الشكل 1: مخطط انسيابي للبرنامج
من خلال إمكانيات البرنامج الكامل والتصحيح ، تقدم مجموعة تقييم Nano PIC18F47Q10 Corriosity دعمًا كاملاً للتصميم الجديد. تستخدم المجموعة MPLAB® X IDE و MPLAB® Code (MCC) ، مما يوفر الوصول إلى الأجهزة الطرفية المستقلة التناظرية والأساسية على PIC18F47Q10.

الشكل 2: PIC18F47Q10 Corriosity Nano Board
يتم استخدام مولد الرمز الرسومي المجاني MPLAB X IDE من MicroChip و Compiler و MPLAB Configurator (MCC) في جميع أنحاء تطوير البرنامج الثابت لتوفير تجربة مستخدم سهلة وخالية من المتاعب. فيما يلي إصدارات الأدوات المستخدمة لهذا التطبيق التجريبي:
ملاحظة: لتشغيل العرض التوضيحي ، يجب أن تكون إصدارات الأدوات المثبتة هي نفسها أو أحدث. لا يتم اختبار هذا المثال مع الإصدارات السابقة.
ابدأ بإنشاء مشروع جديد وفتح MCC
تكوين الأجهزة الطرفية للأجهزة
افتح إعداد التحكم على مدار الساعة الموجود ضمن قائمة "System" المنسدلة في علامة التبويب "موارد المشروع" .

الشكل 3: التحكم في الساعة
افتح إعداد بتات التكوين الموجودة تحت قائمة "System" المنسدلة في علامة التبويب "موارد المشروع" .

الشكل 4: بتات التكوين
أضف CRC و UART2 و TMR0 و NVM الطرفية إلى المشروع.
تأكد من إضافة الأجهزة الطرفية الموجودة ضمن قائمة Drivers Solddown في علامة التبويب " موارد الجهاز" .

الشكل 5: الأجهزة الطرفية
تكوين CRC الطرفية
تحقق من تمكين CRC
تحقق من تمكين استخدام متعدد الحدود المحدد مسبقًا
حدد CRC-16-CCITT من قائمة متعدد الحدود المحددة مسبقًا
اضبط قيمة البذور على 0xffff
اضبط وضع التعزيز على البيانات غير المعززة بـ 0
اضبط عرض كلمة البيانات (بت) إلى 16 (حيث يكون عرض بيانات ذاكرة الفلاش 16 بت)
تحقق من تمكين الماسح الضوئي (سنستخدم الماسح الضوئي لجلب البيانات من الذاكرة)

الشكل 6: تكوين CRC
تحقق من أن توليد واجهات برمجة التطبيقات EEPROM يتم تعيينها (سنستخدم واجهات برمجة التطبيقات هذه لكتابة بيانات EEPROM)

الشكل 7: تكوين الذاكرة
في هذا العرض التوضيحي ، يتم استخدام UART2 لنقل البيانات على النافذة الطرفية لعرض قيمة CRC المخزنة والمحسوبة وكذلك رسالة الخطأ إذا تم اكتشاف أي عدم تطابق في CRC.

الشكل 8: تكوين UART2
في هذا الموقت التجريبي 0 يستخدم لإنشاء حدث دوري للتحقق من اتفاقية حقوق الطفل لذاكرة البرنامج. الموقت 0 يمكن تعديل الفترة لتغيير تردد حساب CRC.

الشكل 9: تكوين الموقت 0
تكوين المسامير المستخدمة على الجهاز
اضبط RE0 كـ PIN الإخراج باستخدام PIN Manager: Grid View. LED متصل بـ PIN RE0.
حدد RD0 كـ EUSART2: TX2 OUTPUT.
RB7 المستخدمة ل RX2.

الشكل 10: مدير الدبوس: عرض الشبكة
أضف اسمًا مخصصًا إلى دبوس الإخراج RE0 كمصباح ، باستخدام موارد المشروع → النظام → دبابيس. تحقق من خانة الاختيار "ابدأ عالية" لـ LED PIN RE0 لإيقاف تشغيل LED.

الشكل 11: مدير الدبوس
افتح ملف main.c.
خطوات لحساب CRC Flash باستخدام واجهات برمجة التطبيقات التي تم إنشاؤها: MCC:
CRC_SetScannerAddressLimit(START_ADDRESS, END_ADDRESS);
(عنوان البدء المستخدم في هذا العرض التوضيحي هو 0x00000 والعنوان النهائي المستخدم هو 0x7ffe. لذا فإن حجم الكتلة الكلي للذاكرة المستخدمة لحساب CRC هو 32 كيلو بايت.)
ملاحظة: إذا تجاوز حجم البرنامج 32 كيلو بايت ، فقم بزيادة حجم الكتلة عن طريق تغيير العنوان النهائي
CRC_StartScanner();
while(CRC_IsCrcBusy() || CRC_IsScannerBusy());
CRC_GetCalculatedResult(false,0x00);

الشكل 12: برنامج الجهاز
//#define ERASE_EEPROM_CRC في الكود ، لمحو موقع EEPROM ، الذي يخزن اتفاقية حقوق الطفل. هذا يتأكد من عدم وجود أي قيمة غير صحيحة أو محسوبة في وقت مبكر مخزنة مسبقًا في هذا الموقع. بناء المشروع وبرنامج الجهاز. راقب الرسالة المعروضة على النافذة الطرفية.(يمكن استخدام أي محاكي طرفي مثل MPLAB Data Potentizer. اضبط معدل Baud على أنه 9600.)

الشكل 13: رسالة محو EEPROM
#define ERASE_EEPROM_CRC . بناء المشروع وبرنامج الجهاز.
الشكل 14: أول مرة حساب اتفاقية حقوق الطفل

الشكل 15: اتفاقية حقوق الطفل الدورية
ملاحظة: يتم حساب CRC في الشكل 15 باستخدام برنامج التحويل البرمجي V2.41 بمستوى تحسين -0.
وحدة CRC عبارة عن مولد اختبارات يتم تنفيذه الأجهزة والذي يمكنه حساب CRC 16 بت مع متعدد الحدود قابل للبرمجة. كما أنه يستخدم ميزة ماسح ضوئي الذاكرة التي توفر قراءة تلقائية لعمليات حسابات اتفاقية حقوق الطفل. من السهل تكوين وحدة CRC باستخدام واجهة المستخدم الرسومية MCC. بصرف النظر عن تكوين الوحدة النمطية ، تقوم MCC بإنشاء واجهات برمجة التطبيقات (MCC) جاهزة لاستخدام واجهات برمجة التطبيقات ، للحساب الخالي من المتاعب لاتفاقية حقوق الطفل لذاكرة البرنامج ، باستخدام أجهزة CRC ومسح الذاكرة الطرفي في موكنت الموافقة المسبقة عن علم الموافقة المسبقة عن علم.