improved crc

This commit is contained in:
Marcel Peterkau 2022-03-08 21:23:27 +01:00
parent 7a84b80126
commit 86e289f56f

View File

@ -172,14 +172,19 @@ uint32_t Checksum_EEPROM(uint8_t const *data, size_t len)
{ {
if (data == NULL) if (data == NULL)
return 0; return 0;
uint32_t crc = 0; uint32_t crc, mask;
crc = 0xFFFFFFFF;
while (len--) while (len--)
{ {
crc ^= *data++; crc ^= *data++;
for (uint8_t k = 0; k < 8; k++) for (uint8_t k = 0; k < 8; k++)
crc = crc & 1 ? (crc >> 1) ^ 0xb2 : crc >> 1; {
mask = -(crc & 1);
crc = (crc >> 1) ^ (0xEDB88320 & mask);
}
} }
return crc ^ 0xff; return ~crc;
} }
void dumpEEPROM(uint16_t memoryAddress, uint16_t length) void dumpEEPROM(uint16_t memoryAddress, uint16_t length)