CRC Arduino - простая реализация для теста Sanity - PullRequest
0 голосов
/ 09 февраля 2019

Я отправляю команду и параметры с одной платы Arduino на другую.Я хочу проверить, были ли данные повреждены или нет на другом конце.Я ищу базовую проверку здравомыслия.

Мой пакет выглядит как

struct Command {
   uint8_t id,
   uint8_t action,
   int param
}

Как бы я мог создать CRC для проверки на другом конце?Спасибо.

1 Ответ

0 голосов
/ 09 февраля 2019

Простой пример:

unsigned crc8_koop(unsigned crc, unsigned char const *data, size_t len) {
    if (data == NULL)
        return 0;
    crc = ~crc & 0xff;
    while (len--) {
        crc ^= *data++;
        for (unsigned k = 0; k < 8; k++)
            crc = crc & 1 ? (crc >> 1) ^ 0xb2 : crc >> 1;
    }
    return crc ^ 0xff;
}

Вызовите с data, равным NULL, чтобы получить начальное значение CRC.

...