We detect you are using an unsupported browser. For the best experience, please visit the site using Chrome, Firefox, Safari, or Edge. X

What Is CRC?


Whether you are trying to obtain regulatory compliance or to simply design a robust and reliable product, functional safety is an absolute necessity. Several methods can be used to ensure the functional safety of end products. One of them, Cyclic Redundancy Check (CRC), is a powerful technique commonly used to check integrity in digital data. CRC generates an initial checksum of the data in memory that can be later compared with the calculated checksum for mismatch. A checksum mismatch can indicate an otherwise undetectable memory fault.

Why Is CRC Used?


CRC is a vital element of functional safety, and it is one of the key methods required to meet IEC or UL safety standards such as Class B (IEC 60730). Implementation of functional safety techniques is required by law for almost all consumer appliances and industrial electronics.

How Does CRC Work in PIC® and AVR® Microcontrollers

Many modern PIC and AVR microcontrollers (MCUs) have a built-in hardware module for CRC. This allows faster and lower-power CRC calculation without extra memory usage or additional CPU cycles when compared with a software implementation. This hardware module supports up to 32-bit polynomials and is implemented with a Linear Feedback Shift Register (LFSR) to generate a checksum of the data. PIC devices can directly feed data into the CRC module, which is useful for calculating the checksum of an outgoing datastream or for verifying an incoming datastream for transmission errors.

If the device is equipped with the SCAN feature, then the CRC module can directly read the memory on the device. This allows you to automatically validate specific regions of memory, such as boot or application, for system integrity. A more advanced version of the SCAN feature (available on select devices) is CRC On-Boot. This feature can be used to scan and verify areas, such as the boot, application, or data EEPROM with a preprogrammed checksum prior to the device running code.

New/Popular 8-bit Microcontrollers with Cyclic Redundancy Check

View All Parametrics
Product Status 5K Pricing CPU Type Architecture Family Program Memory Size (KB) Program Memory Size (KWords) Bootload capable SRAM (Bytes) Emulated EEPROM in Flash DMA Channels Max I/O Pins Pin count Max CPU Speed (MHz) ADC with Enhanced Features Peripheral Pin Select / Pin Muxing Vbat/Vddbu battery backup Brown-Out Reset Low Voltage Detection Power On Reset Internal Oscillator Hardware RTCC/RTC Watch Dog Timer Windowed Watch Dog Timer (WWDT) Number of Comparators Number of Op Amps Number of ADCs ADC Input Max ADC Resolution (Bits) Max ADC Sampling Rate (ksps) ADC with Computation Number of DACs DAC Outputs Max DAC Resolution (Bits) Internal Voltage Reference (Bandgap) Zero Cross detect Slope Compensation / Programmable Ramp Generator Data Signal Modulator CTMU Max 8-Bit Digital Timers Max 16-Bit Digital Timers Signal Measurement Timer Hardware Limit Timer Stand alone PWMs Capture / Compare/PWM (CCP) Enhanced Capture/Compare/PWM (ECCP) Max PWM outputs (including complementary) Number of PWM Time Bases PWM Max Resolution (Bits) Quadrature Encoder Interface Angular Timer Math Accelerator UART SPI I2C Number of USB Modules USB Interface USB Active Clock Tuning Number of CAN Modules CAN Transmit Buffers CAN Receive Buffers Ethernet LIN IrDA Parallel Port Class B Support CRC Configurable Logic Cell (CLC/CCL) Complementary Waveform Generator / Complementary Output Generator Numerically Controlled Oscillator Programmable Switched Mode Controller Hardware Touch Peripheral Hardware Direct Touch Channel Buttons Hardware Touch Matrix Nodes Touch Library Support Hardware Cap Voltage Divider Segmented LCD Keeloq Hardware Crypto Engine JTAG Temp Range Min Temp Range Max Operation Voltage Min (V) Operation Voltage Max (V) High Voltage Capable Packages
PIC18F25K83 In Production $1.50 8-bit PIC MCU 8 8-bit MCU 32 16 Yes 2048 1024 2 25 28 64 Yes Yes No Programmable BOR Programmable LVD Yes 64 MHz, 32 kHz Yes Yes 2 0 1 24 12 0 Yes 1 0 5 Yes Yes 1 No 3 4 1 3 4 4 0 0 0 10 0 No No 2 1 1 0 None No 1 8 8 None Yes No No No Yes 4 1 1 0 ADC2 with HCVD 0 0 Yes 0 No No -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN
PIC18F25Q43 In Production $0.90 8-bit PIC MCU 8 8-bit MCU 32 16 No 2048 1024 6 25 28 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 24 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F26K83 In Production $1.51 8-bit PIC MCU 8 8-bit MCU 64 32 Yes 4096 1024 2 25 28 64 Yes Yes No Programmable BOR Programmable LVD Yes 64 MHz, 32 kHz Yes Yes 2 0 1 24 12 0 Yes 1 0 5 Yes Yes 1 No 3 4 1 3 4 4 0 0 0 10 0 No No 2 1 1 0 None No 1 8 8 None Yes No No No Yes 4 1 1 0 ADC2 with HCVD 0 0 Yes 0 No No -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN, 28/VQFN
PIC18F26Q10 In Production $0.78 8-bit PIC MCU 8 8-bit MCU 64 32 No 3615 1024 0 25 28 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 24 10 100 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 2 2 2 0 None No 0 0 0 None Yes No No No Yes 8 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F26Q43 In Production $0.98 8-bit PIC MCU 8 8-bit MCU 64 32 No 4096 1024 6 25 28 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 24 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F27Q10 In Production $0.89 8-bit PIC MCU 8 8-bit MCU 128 64 No 3615 1024 0 25 28 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 24 10 100 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 2 2 2 0 None No 0 0 0 None Yes No No No Yes 8 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F27Q43 In Production $1.09 8-bit PIC MCU 8 8-bit MCU 128 64 No 8192 1024 6 25 28 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 24 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F45Q43 In Production $1.06 8-bit PIC MCU 8 8-bit MCU 32 16 No 2048 1024 6 36 40 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 35 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/QFN, 44/TQFP
PIC18F46Q10 In Production $1.01 8-bit PIC MCU 8 8-bit MCU 64 32 No 3615 1024 0 36 40 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 35 10 0 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 2 2 2 0 None No 0 0 0 None Yes No No No Yes 8 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/TQFP
PIC18F46Q43 In Production $1.15 8-bit PIC MCU 8 8-bit MCU 64 32 No 4096 1024 6 36 40 64 Yes No BOR None Yes 64MHZ No No Yes 2 0 1 35 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/QFN, 44/TQFP
PIC18F47Q10 In Production $1.10 8-bit PIC MCU 8 8-bit MCU 128 64 No 3615 1024 0 36 40 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 35 10 0 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 6 0 10 0 No No 2 2 2 0 None No 0 0 0 None Yes No No No Yes 8 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/TQFP
PIC18F47Q43 In Production $1.29 8-bit PIC MCU 8 8-bit MCU 128 64 No 8192 1024 6 36 40 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 35 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/QFN, 44/TQFP
PIC18F55Q43 In Production $1.13 8-bit PIC MCU 8 8-bit MCU 32 16 No 8192 1024 6 44 48 64 Yes Yes No BOR None Yes 64MHZ, No No Yes 2 0 1 43 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 48/TQFP, 48/VQFN
PIC18F56Q43 In Production $1.25 8-bit PIC MCU 8 8-bit MCU 64 32 No 4096 1024 6 44 48 64 Yes Yes No BOR None Yes 64MHZ, No No Yes 2 0 1 43 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 3 3 0 6 3 16 0 No No 5 2 1 0 None No 0 0 0 None Yes No No No Yes 8 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 48/TQFP, 48/VQFN
PIC18F45Q10 In Production $0.96 8-bit PIC MCU 8 8-bit MCU 32 16 No 2048 256 0 36 40 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes 2 0 1 35 10 0 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 2 2 2 0 None No 0 0 0 None Yes No No No Yes 8 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/QFN, 44/TQFP
PIC16F18854 In Production $0.78 8-bit PIC MCU 8 8-bit MCU 7 4 Yes 512 256 0 25 28 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 24 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN, 28/VQFN
PIC16F18855 In Production $0.84 8-bit PIC MCU 8 8-bit MCU 14 8 Yes 1024 256 0 25 28 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 24 10 100 Yes 1 2 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN
PIC16F18856 In Production $0.94 8-bit PIC MCU 8 8-bit MCU 28 16 Yes 2048 256 0 25 28 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 24 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN, 28/VQFN
PIC16F18857 In Production $1.04 8-bit PIC MCU 8 8-bit MCU 56 32 Yes 4096 256 0 25 28 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 24 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP
PIC16F18875 In Production $0.97 8-bit PIC MCU 8 8-bit MCU 14 8 Yes 1024 256 0 36 40 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 35 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/UQFN, 44/QFN, 44/TQFP
PIC16F18876 In Production $1.05 8-bit PIC MCU 8 8-bit MCU 28 16 Yes 2048 256 0 36 40 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 35 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/UQFN, 44/QFN, 44/TQFP
PIC16F18877 In Production $1.16 8-bit PIC MCU 8 8-bit MCU 56 32 Yes 4096 256 0 36 40 32 Yes Yes No Programmable BOR Programmable LVD Yes 32 MHz, 32 kHz No Yes Yes 2 0 1 35 10 100 Yes 1 0 5 Yes Yes 0 1 No 3 4 2 3 2 5 0 19 3 10 0 No No 1 2 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 40/PDIP, 40/UQFN, 40/VQFN, 44/QFN, 44/TQFP
PIC18F24Q10 In Production $0.65 8-bit PIC MCU 8 8-bit MCU 16 8 No 1024 256 0 25 28 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 24 10 100 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 1 1 1 0 None No 0 0 0 None Yes No No No Yes 0 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN, 28/VQFN
PIC18F25K42 In Production $1.15 8-bit PIC MCU 8 8-bit MCU 32 16 No 2048 256 2 25 28 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 24 12 0 Yes 1 1 8 Yes Yes 0 1 No 3 4 1 3 4 4 0 0 0 10 0 No No 2 1 2 0 None No 0 0 0 None Yes No No No Yes 4 3 1 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/UQFN
PIC18F25Q10 In Production $0.71 8-bit PIC MCU 8 8-bit MCU 32 16 No 2048 256 0 25 28 64 Yes Yes No BOR None Yes 64MHZ, 64KHz No Yes Yes 2 0 1 24 10 100 Yes 1 1 5 Yes Yes 0 1 No 3 4 0 1 2 2 0 0 0 10 0 No No 1 1 1 0 None No 0 0 0 None Yes No No No Yes 0 1 0 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 28/QFN, 28/SOIC, 28/SPDIP, 28/SSOP, 28/VQFN
PIC18F04Q40 In Production $0.63 8-bit PIC MCU 8 8-bit MCU 16 8 No 1024 512 4 12 14 64 Yes Yes No BOR None Yes 64MHZ No No Yes 2 0 1 11 12 0 Yes 2 1 8 Yes Yes 0 1 No 2 3 1 3 3 3 0 6 3 16 0 No No 3 2 1 0 None No 0 0 0 None Yes No No No Yes 4 3 3 0 ADC2 with HCVD 0 0 Yes 0 No No None -40 125 1.8 5.5 No 14/SOIC, 14/TSSOP
PIC18F04Q41 In Production $0.69 8-bit PIC MCU 8 8-bit MCU 16 8 No 1024 512 4