I tried to find out how to calculate the error detection capabilities of arbitrary CRC polynomials.
I know that there are various error detection capabilities that may (or may not) apply to an arbitrary polynomial:
Detection of a single bit error: All CRCs can do this since this only requires a CRC width >= 1.
Detection of burst errors: All CRCs can detect burst errors up to a size that equals their width.
Detection of odd numbers of bit errors: CRC with polynomials with an even number of terms (which means an even number of 1-bits in the full binary polynomial) can do this.
Detection of random bit errors (depending from frame size): I have a ready-to-use C algorithm that allows calculating the maximum frame size for given HD and poylnomial. I didn't understood it completely but it works.
Lets assume a 16 bit CRC polynomial x¹⁶+x¹²+x⁵+1 = 0x11021. That polynomial can:
- detect all single bit errors (data size independent).
- detect all burst errors up to 16 bit width (data size independent).
- detect all odd numbers of bit errors (since it has 4 polynomial terms; data size independent).
- detect 3 bit errors (HD4) up to 32571 bit data size.
Is the above correct?
Are there additional CRC error detection capabilities? If yes, how can I check (without deep math knowledge) if an arbitrary CRC polynomial supports them?