Transcription of AN1817 Using a Hardware or Software CRC with …
1 2015 Microchip Technology - B IEC 60730 (CRC) CRC B CRC ( PIC16F161X ) CRC IEC 60730 1 B URL A Painless Guide on CRCA lgorithms (Ross N. Williams 1993 8 19 ) (CRC)CRC CRC CRC 2 CRC-16-ANSI CRC CRC CRC-16-CCITT CRC B CRC CRC CRC CRC (LFSR) CRC-16-ANSI LFSR 2 CRC XOR CRC CRC PIC16 B CRC XOR CRC CRC-16-CCITT CRC-16-ANSI CRC 1 2 CRC CRC CRC CRC CRC CRC MSb LSb CRC :Corey SimoncicMicrochip Technology Inc.
2 B PIC16F1 XXX CRC AN1817 : AN1817DS00001817A_JP - 2015 Microchip Technology B CRC CRC : CRC-16-ANSI : 0xFFFF : : MSb B CRC PIC16F1613 CRC 1 CRC( B ) CRC 2 CRC 1: B 2:CRC LFSRCRC entire Memory Range except last 2 words(1)Is Check Value Correct?NoYesCLASS B Start-up TestsApplication InitializationIs Check Value Correct?NoYesCLASS B Periodic TestsError:Set Application in controlled state and set appropriate error flagsApplication Main LoopCRC entire Memory Range except last 2 words(1)Note 1: 2 Data inb0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15 Linear Feedback Shift Register for CRC-16-ANSIx16+ x15+ x2+ 1 b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15 Data inAugmentation Mode OFFA ugmentation Mode ON 2015 Microchip Technology - B CRC PIC16F161X CRC B CRC PIC16F161X CRC CRC PIC16F1613 CRC CRC PIC16F1613 (DS40001737) CRC-16 :CRCXORH = 0b10000000;CRCXORL = 0b00000101; 1 :CRCACCH = 0b11111111;CRCACCL = 0b11111111; = 1.
3 (MSb ) = 0; CRC CRC 16 = 0b1111; 16 = 0b1111;Note:PIC16F1613 14 16 CRC CRC 0 2 16 1 AN1817DS00001817A_JP - 2015 Microchip Technology CRC CRC CPU 8 MHz FOSC (2000 ) CRC ms CPU = 0b01; ms = 1; SCANLADRH:L SCANHADRH:L SCANLADR 1 2 :SCANLADRH = 0x00; SCANLADRL = 0xFD; :SCANHADRH = 0x07; SCANHADRL = 0xFB; 1:CRC uint16_t HWCRC (uint16_t lastAddress){ uint16_t HWCRC result; CRCACCL = 0xFF; //Seed with 0xFFFF CRCACCH = 0xFF; CRCXORH = 0x80; // Using CRC-16-ANSI 0x8005 CRCXORL = 0x05; = 15; // Using 16 bit data length to match the Software CRC //the most-significant 2 bits will be treated as 0.}
4 = 15; // Using the maximum 17-bit polynomial (-2) = 1; //turn on augmented zeros = 0; //MSb-first (normal) = 0b01; //turn on "Burst mode" to stop all //other execution until CRC complete SCANLADRH = 0x00; //set the first address for memory scan SCANLADRL = 0x00; SCANHADRH = lastAddress >> 8; //set the last address for memory scan SCANHADRL = lastAddress; = 1; = 1; = 1; //Turn on the CRC = 1; //Turn on the scan to begin the CRC //This should halt CPU Execution until the Scanner is complete and the final //memory location is in the CRC while( ); HWCRC result = ((CRCACCH<<8) | CRCACCL); return HWCRC result;} 2015 Microchip Technology - CRC CRC-16-ANSI CRC CRCGO CRC SCANGO CPU ( ) CPU ms CRC CRCCON0 BUSY CRCACCH:L CRC FOSC 16 CRC 1 4 2046 2046*4 8 MHz 8211 4 ms (SMT) SMT CRC B.
5 SMT AN1817DS00001817A_JP - 2015 Microchip Technology CRC CRC CRC B CRC CRC CRC CRC 2 1 [Data] 1 MPLAB X IDE 16 (Section MPLAB X IDE ) CRC CRC-16-ANSI [Polynomial] 0xC002/0x8005 ANSI-16 16bits [Accumulator] [F] 0xFFFF [Data Width] 16 ( 3 ) 3:CRC-16-ANSI CRC X IDE MPLAB X IDE CRC [Data] MPLAB X IDE ( 4 ) (Windows Ctrl+C) ( 5 ) ( 6 ) CRC [File]>[ImportFile] ( 7 ) MPLAB X IDE [Data] 2015 Microchip Technology - 4: 5: AN1817DS00001817A_JP - 2015 Microchip Technology Inc.
6 6: 7: 2015 Microchip Technology - [Data] [Accumulate] [Accumulator (hex)] [Values] CRC [Data Entry] [Accum] CRC ( 8 ) 8:CRC AN1817DS00001817A_JP - 2015 Microchip Technology B CRC CRC B EEPROM CRC CRC CRC CRC-16-ANSI B DS00001799 CRC CLASSB_CRCF lashTest(..); 3 ( CRC ) CRC uint16_t FlashAddress = 0x00 uint16_t Flashlength = 0x07FC uint16_t crcSeed = 0xFFFF 2:CRC CRC CRC 8172 CRC 216,956 ms Note: 16 2 uint16_t flashAddress = 0x00;uint16_t flashLength = 0x07FC;uint16_t crcSeed = 0xFFFF;uint16_t CRC-libraryResult;CRC_libraryResult = CLASSB_CRCF lashTest(myAddress,length,crcSeed).
7 2015 Microchip Technology - CRC CRC B CRC 2 2 2 CRC 2 1 PIC MCU SRAM CRC CRC (Section CRC ) const 0x1234 const uint16_t CRC_checkValue @ 0x7FE =0x1234 0x7FE 0x3434 0x7FF 0x3412 MSB 0x34 RETLW 1 1: 20477FE3434 RETLW0x3420487FF3412 RETLW0x12AN1817DS00001817A_JP - 2015 Microchip Technology Inc.
8 CRC ( 3 4 ) 3: 4:CRC if (CRC_checkValue == CRC_libraryResult){ // do nothing, check value matches}else{ ErrorMode();}if ((CRC_checkValue >> 8) == CRCACCH){ if ((CRC_checkValue & 0x00FF) == CRCACCL) { // do nothing, check value matches } else { ErrorMode(); }}else{ ErrorMode();} 2015 Microchip Technology - A: (WWDT) PIC16F161X CLRWDT CRC 1 (Section CRC ) ( LFINTOSC) LFINTOSC +-15% CRC PIC16F1613 (2K ) 4 ms ( 8 MHz ) CRC WDT 8 ms LFINTOSC A-1.
9 Window PeriodCLRWDT Instruction (or other WDT reset)Window Delay(window violation can occur)Window ClosedWindow OpenTime-out EventAN1817DS00001817A_JP - 2015 Microchip Technology Inc. B:SMT (SMT) PIC16F161X Timer 1 16 SMT 24 FOSC/4 SMT B-1 B-1:SMT PR SMT 24 STP (bit 5) SMTxPR SMT 24 B-1 SMT SMTxCON1 SMTxGO SMT SMTxGO SMTxGO SMTxTMRU:H:L (FOSC/4) B-2 CRC B-2:SMT SMT2 CON0 = 0b10100000; //SMT enabled, rising edges, prescaler 1:1, //counter will halt at = 0b001; // Fosc/4 SMTxPR = 0xFFFFFF; = 1; // start SMT timing//start the Hardware CRC check (LASTCRCADDRESS); = 0.
10 // finish SMT timing 2015 Microchip Technology - Microchip Microchip Microchip Microchip Microchip Microchip Microchip dsPIC FlashFlex KEELOQ KEELOQ MPLAB PIC PICmicro PICSTART PIC32 rfPIC SST SST SuperFlash UNI/O Microchip Technology Incorporated FilterLab Hampshire HI-TECH C Linear Active Thermistor MTP SEEVAL Embedded Control Solutions Company Microchip Technology Incorporated Silicon Storage Technology Microchip Technology Inc. Analog-for-the-Digital Age Application Maestro BodyCom chipKIT chipKIT CodeGuard dsPICDEM dsPICworks dsSPEAK ECAN ECONOMONITOR FanSense HI-TIDE In-Circuit Serial Programming ICSP Mindi MiWi MPASM MPF MPLAB Certified MPLIB MPLINK mTouch Omniscient Code Generation PICC PICC-18 PICDEM PICkit PICtail REAL ICE rfLAB Select Mode SQl Serial Quad I/O Total Endurance TSHARC UniWinDriver WiperLock ZENA Z-Scale Microchip Technology Incorporated SQTP Microchip Technology Incorporated GestIC ULPP Microchip Technology Inc.