Отправленный протокол CRC Calaculation - PullRequest
1 голос
/ 25 мая 2019

Я генерирую импульс SENT в моем проекте.Для реализации протокола SENT клочки данных равны 6. Таким образом, 24-битные данные, включая клев состояния, крэш CRC и импульс паузы.Мне нужно рассчитать CRC для 6 клев данных.Первое значение для расчета CRC - 5, как я знаю.Но когда я декодирую сигнал с помощью Оз.У меня есть ошибка в сообщении, потому что я посылаю случайное значение для CRC и для состояния клев.Итак, на мои вопросы: как я могу рассчитать значение CRC и клев статуса? SENT FRAME

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 
...