SENT协议CRC计算

时间:2019-05-25 17:32:07

标签: signals communication fpga sensors

我正在我的项目中生成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 

0 个答案:

没有答案