
ตัวอย่างนี้แสดงให้เห็นถึงการใช้อุปกรณ์ต่อพ่วง CRC ในไมโครคอนโทรลเลอร์ PIC18F47Q10 โมดูล CRC ใน Microcontrollers PIC เป็นเครื่องกำเนิดไฟฟ้าตรวจสอบฮาร์ดแวร์ซึ่งคำนวณ CRC 16 บิตด้วยพหุนามที่ตั้งโปรแกรมได้ มันเป็นคู่กับเครื่องสแกนหน่วยความจำสำหรับการคำนวณ CRC ที่เร็วขึ้น เครื่องสแกนหน่วยความจำสามารถให้ข้อมูลกับโมดูล CRC โดยอัตโนมัติตัวอย่างนี้ใช้พารามิเตอร์มาตรฐาน CRC-16-CCITT การสาธิตนี้คำนวณ CRC ของหน่วยความจำโปรแกรมและเก็บไว้ในพื้นที่ EEPROM ของคอนโทรลเลอร์หลังจากเขียนโปรแกรมอุปกรณ์เป็นครั้งแรก ในการเพิ่มพลังงานที่ตามมาอุปกรณ์จะคำนวณแฟลช CRC เมื่อเริ่มต้นและตรวจสอบกับ CRC ที่เก็บไว้ในพื้นที่ EEPROM ในกรณีที่ไม่ตรงกันการดำเนินการของโปรแกรมจะระบุข้อผิดพลาด CRC การตรวจสอบ CRC นี้สามารถกำหนดเวลาเป็นระยะในระหว่างการทำงานของอุปกรณ์เพื่อให้แน่ใจว่ามีความสมบูรณ์ของแฟลช

รูปที่ 1: แผนผังโปรแกรม
ด้วยความสามารถของโปรแกรมและการดีบักเต็มรูปแบบชุด PIC18F47Q10 Curiosity Nano Evaluation Kit ให้การสนับสนุนที่สมบูรณ์สำหรับการออกแบบใหม่ ชุดนี้ใช้MPLAB® X IDE และMPLAB® Code Configurator (MCC) ให้การเข้าถึงอุปกรณ์ต่อพ่วงอัจฉริยะและแกนกลางอัจฉริยะบน PIC18F47Q10

รูปที่ 2: PIC18F47Q10 Curiosity Nano Board
MPLAB X IDE ฟรี, คอมไพเลอร์และ MPLAB Code Configurator (MCC) เครื่องกำเนิดรหัสกราฟิกถูกนำมาใช้ตลอดการพัฒนาเฟิร์มแวร์แอปพลิเคชันเพื่อให้ประสบการณ์ผู้ใช้ที่ง่ายและไม่ยุ่งยาก ต่อไปนี้เป็นเวอร์ชันเครื่องมือที่ใช้สำหรับแอปพลิเคชันตัวอย่างนี้:
หมายเหตุ: สำหรับการเรียกใช้การสาธิตเวอร์ชันเครื่องมือที่ติดตั้งจะต้องเหมือนหรือใหม่กว่า ตัวอย่างนี้ไม่ได้ทดสอบกับเวอร์ชันก่อนหน้า
เริ่มต้นด้วยการสร้างโครงการใหม่และเปิด MCC
กำหนดค่าอุปกรณ์ต่อพ่วงฮาร์ดแวร์
เปิดการตั้งค่า การควบคุมนาฬิกา ที่มีอยู่ภายใต้เมนู "ระบบ" ในแท็บ ทรัพยากรโครงการ

รูปที่ 3: การควบคุมนาฬิกา
เปิดการตั้ง ค่าบิตการกำหนดค่า ที่แสดงภายใต้เมนูแบบดรอปดาวน์ "ระบบ" ในแท็บ ทรัพยากรโครงการ

รูปที่ 4: บิตการกำหนดค่า
เพิ่มอุปกรณ์ต่อพ่วง CRC, UART2, TMR0 และ NVM ในโครงการ
ตรวจสอบให้แน่ใจว่าได้เพิ่มอุปกรณ์ต่อพ่วงที่อยู่ภายใต้เมนูดรอปดาวน์ ไดรเวอร์ ในแท็บ ทรัพยากรอุปกรณ์

รูปที่ 5: อุปกรณ์ต่อพ่วง
กำหนดค่าอุปกรณ์ต่อพ่วง CRC
ตรวจสอบว่าเปิดใช้งาน CRC
ตรวจสอบว่าเปิดใช้งานพหุนามที่กำหนดไว้ล่วงหน้า
เลือก CRC-16-CCITT จากรายการพหุนามที่กำหนดไว้ล่วงหน้า
ตั้งค่าเมล็ดเป็น 0xffff
ตั้งค่าโหมดการเพิ่มเป็นข้อมูลที่ไม่ได้เพิ่มด้วย 0's
ตั้งค่าความกว้างของคำข้อมูล (บิต) เป็น 16 (เป็นความกว้างของข้อมูลหน่วยความจำแฟลชคือ 16 บิต)
ตรวจสอบว่าสแกนเนอร์เปิดใช้งาน (เราจะใช้เครื่องสแกนเพื่อดึงข้อมูลจากหน่วยความจำ)

รูปที่ 6: การกำหนดค่า CRC
ตรวจสอบว่ามีการตั้งค่า EEPROM APIs (เราจะใช้ API เหล่านี้เพื่อเขียนข้อมูล EEPROM)

รูปที่ 7: การกำหนดค่าหน่วยความจำ
ในการสาธิตนี้ UART2 ใช้เพื่อส่งข้อมูลบนหน้าต่างเทอร์มินัลเพื่อแสดงค่า CRC ที่เก็บและคำนวณรวมถึงข้อความแสดงข้อผิดพลาดหากมีการตรวจพบความไม่ตรงกันใน CRC

รูปที่ 8: การกำหนดค่า UART2
ในตัวจับเวลาตัวอย่าง 0 นี้ใช้เพื่อสร้างเหตุการณ์เป็นระยะสำหรับการตรวจสอบ CRC ของหน่วยความจำโปรแกรม ตัวจับเวลา 0 สามารถปรับได้เพื่อเปลี่ยนความถี่การคำนวณ CRC

รูปที่ 9: ตัวจับเวลา 0 การกำหนดค่า
กำหนดค่าพินที่ใช้บนอุปกรณ์
ตั้งค่า RE0 เป็นพินเอาต์พุตโดยใช้ PIN Manager: Grid View LED เชื่อมต่อกับ PIN RE0
เลือก RD0 เป็น EUSART2: เอาต์พุต TX2
RB7 ใช้สำหรับ RX2

รูปที่ 10: PIN Manager: Grid View
เพิ่มชื่อที่กำหนดเองลงในขาเอาต์พุต RE0 เป็น LED โดยใช้ทรัพยากรโครงการ→ระบบ→พิน ทำเครื่องหมายในช่องทำเครื่องหมาย "เริ่มสูง" สำหรับ LED PIN RE0 เพื่อปิด LED

รูปที่ 11: ผู้จัดการพิน
เปิดไฟล์ main.c
ขั้นตอนในการคำนวณ Flash CRC โดยใช้ APIs MCC ที่สร้างขึ้น:
CRC_SetScannerAddressLimit(START_ADDRESS, END_ADDRESS);
(ที่อยู่เริ่มต้นที่ใช้ในการสาธิตนี้คือ 0x00000 และที่อยู่สุดท้ายที่ใช้คือ 0x7ffe ดังนั้นขนาดบล็อกทั้งหมดของหน่วยความจำที่ใช้สำหรับการคำนวณ CRC คือ 32KB
หมายเหตุ: หากขนาดโปรแกรมเกิน 32KB เพิ่มขนาดบล็อกโดยการเปลี่ยนที่อยู่สุดท้าย
CRC_StartScanner();
while(CRC_IsCrcBusy() || CRC_IsScannerBusy());
CRC_GetCalculatedResult(false,0x00);

รูปที่ 12: โปรแกรมอุปกรณ์
//#define ERASE_EEPROM_CRC ในรหัสเพื่อลบตำแหน่ง EEPROM ซึ่งเก็บ CRC สิ่งนี้ทำให้แน่ใจว่าไม่มีค่า CRC ที่ไม่ถูกต้องหรือก่อนหน้านี้ที่เก็บไว้ก่อนหน้านี้ที่ตำแหน่งนั้น สร้างโครงการและโปรแกรมอุปกรณ์ สังเกตข้อความที่แสดงบนหน้าต่างเทอร์มินัล(สามารถใช้เครื่องจำลองเทอร์มินัลใด ๆ เช่น MPLAB Data Visualizer ตั้งค่าอัตราการรับส่งข้อมูลเป็น 9600)

รูปที่ 13: ข้อความ Eeprom Erase
#define ERASE_EEPROM_CRC สร้างโครงการและโปรแกรมอุปกรณ์
รูปที่ 14: การคำนวณ CRC ครั้งแรก

รูปที่ 15: CRC เป็นระยะ
หมายเหตุ: CRC ในรูปที่ 15 คำนวณโดยใช้คอมไพเลอร์ v2.41 พร้อมระดับการเพิ่มประสิทธิภาพ -0
โมดูล CRC เป็นเครื่องกำเนิดตรวจสอบฮาร์ดแวร์ที่ใช้งานซึ่งสามารถคำนวณ CRC 16 บิตด้วยพหุนามที่ตั้งโปรแกรมได้ นอกจากนี้ยังใช้คุณสมบัติสแกนเนอร์หน่วยความจำซึ่งให้การอ่านแฟลชอัตโนมัติสำหรับการคำนวณ CRC การกำหนดค่าโมดูล CRC นั้นง่ายโดยใช้ MCC GUI นอกเหนือจากการกำหนดค่าโมดูลแล้ว MCC ยังสร้าง APIs พร้อมใช้งานสำหรับการคำนวณ CRC ของโปรแกรมโปรแกรมโดยใช้ CRC และหน่วยความจำสแกนฮาร์ดแวร์ต่อพ่วงฟรีในไมโครคอนโทรลเลอร์ PIC