我正在我的项目中生成SENT脉冲。 对于SENT协议实现,数据半字节为6。因此,24位数据包括状态半字节,CRC半字节和暂停脉冲。 我需要计算6个数据半字节的CRC。据我所知,CRC计算的第一个值为5。但是当我用Ozs解码信号时。我在消息中出错,因为我正在为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];
我看到了这段代码,但我真的不明白如何获取此Lookup表。 CRC Calculation Code
我尝试遵循for循环,但是在第一次迭代之后是不可能的,因为calculatedCrc将在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