您好、
几个小时后、我尝试以与 ADS122u04相同的方式计算 CRC16、但仍然无法使其正常工作。
例如、我的 ADS122u04配置为测量裸片温度、CRC16 ON -回答如下:
0xBA、0x21、0x0d、0x84、0xa0 [LSB_DATA、MID_DATA、MSB_DATA、lsb_CRC、MSB_CRC]
这在内部看起来几乎像是26.25°C (840*0.03125°C)。 但如何计算 c 代码中的 CRC?
在线计算器、如 www. zorc.breitbandkatze.de/crc.html 或以下代码可能会有所帮助、但对我来说却没有帮助。
unsigned short crc16(const unsigned char* data_p, unsigned char length){
unsigned char x;
unsigned short crc = 0xFF;
while (length--){
x = crc >> 8 ^ *data_p++;
x ^= x>>4;
crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x <<5)) ^ ((unsigned short)x);
}
return crc;
}
Any ideas?