Отправленный протокол CRC Calaculation
Я генерирую отправленный импульс в моем проекте. Для реализации протокола SENT клочки данных равны 6. Таким образом, 24-битные данные, включая клев состояния, крэш CRC и импульс паузы. Мне нужно рассчитать CRC для 6 клев данных. Первое значение для расчета CRC - 5, как я знаю. Но когда я декодирую сигнал с помощью Оз. У меня есть ошибка в сообщении, потому что я посылаю случайное значение для CRC и для состояния клев. Итак, на мои вопросы: как я могу рассчитать значение CRC и клев статуса? ОТПРАВЛЕННАЯ РАМА
uint8_t calculatedCRC, i;
const uint8_t CrcLookup[16] = {0, 13, 7, 10, 14, 3, 9, 4, 1, 12, 6, 11, 15, 2, 8, 5};
calculatedCRC = 5; // initialize checksum with seed "0101"
for (i = 0; i < 6; i++)
{
calculatedCRC = CrcLookup[calculatedCRC];
calculatedCRC = (calculatedCRC ^ Data[i]) & 0x0F;
}
// One more round with 0 as input
calculatedCRC = CrcLookup[calculatedCRC];
Я видел этот код, но я действительно не понимаю, как мы получаем эту таблицу поиска. Код расчета CRC
я пытался следовать за циклом for, но после первой итерации это невозможно, потому что рассчитанный Crc будет в 11^11. Пожалуйста, мне нужна твоя помощь!
1) i=0 >>> calculatedCRC== 11
2) i=1 >>> calculatedCRC==
3) i=2 >>> calculatedCRC
4) i=3 >>> calculatedCRC
5) i=4 >>> calculatedCRC
6) i=5 >>> calculatedCRC