Hey!
I am planning an application that involves CRC with polynomials of unusual degrees.
Several Kinetis microcontrollers have a fast CRC engine, which supports either degree 16 polynomials or degree 32 polynomials (like Ethernet’s CRC-32). So far the documentation.
In general it is possible to use a certain CRC algorithm for polynomials of lower degree. (Already pointed out here on the forum or on Wikipedia.) Just append the necessary amount of zeros to the least significant end of the polynomial, and remove them from the result. The input data does not need any modification. Once understood, it’s really that simple.
However, the documentation on the CRC module misses one certain thing: If the polynomial has degree 16 of 32, there will always be the lowest bit set in the CRC_GPOLY register (which uses normal polynomial representation). Therefore it may be sensible to optimize the hardware, such that the XOR operation on the lowest bit is not configurable, but always enabled.
When a polynomial of lower degree shall be used, it is neccesary to clear the lowest bit.
Does the CRC module support polynomials with the lowest bit cleared? If yes, is this support general, or specific to a few devices?
Thanks in advance,
doxy