Работа по коммуникационной шине SPI между массивом микроконтроллеров SAMD.
У меня есть входящий пакет, который выглядит примерно как { 0x00, 0xFF, 0x00, 0xFF }
. Чип приемника выполняет проверку CRC16 для входящего пакета.
Поскольку я ожидаю каждый раз один и тот же пакет, я хочу иметь нулевую контрольную сумму CRC, когда пакет действителен, а не нулевую контрольную сумму, когда есть ошибка передачи.
Я знаю, что могу добавить вычисленный CRC16 в конец пакета при его отправке, и на стороне получателя проверка CRC выдаст 0, но в этом случае невозможно добавить контрольную сумму CRC16 к пакету, поскольку пакет построен несколькими микросхемами отправителя на линии SPI, и каждая микросхема заполняет только свои два байта из всего пакета.
Мне нужно загрузить начальную контрольную сумму CRC на стороне получателя, поэтому после проверки входящего пакета результирующий CRC равен нулю (если пакет не поврежден).
Ответ здесь, на SO на самом деле это то, что я ищу, но это для формата CRC32, и я на самом деле не понимаю принципа кода, поэтому я не могу переписать его для формата CRC16.
Любая помощь будет принята с благодарностью!
С уважением, Нико