工具/软件:Code Composer Studio
尊敬的专家:
我的客户对 BQ76940 CRC 示例代码有一些疑问。 请参阅下面的蓝色粗体部分、CRC 和 PTR 之间将存在直接计算关系。 下面的红色粗体部分是否与下面的蓝色粗体部分具有相同的功能? (在此 CRC 示例代码中、CRC 是独立运行的、我找不到 CRC 与要发送 ptr 的数据之间的异或关系、或者这是我误解的吗?) 感谢您的支持。
- CRC 示例代码:
unsigned char CRC8 (unsigned char * ptr、unsigned char len、unsigned char key)
{
unsigned char i;
unsigned char crc=0;
while (len--!=0)
{
对于(i=0x80;i!=0;i/=2)
{
if ((CRC & 0x80)!= 0)
{
CRC *= 2;
CRC ^= KEY;
}
其他
CRC *= 2;
if ((* ptr & i)!=0)//
CRC ^= KEY;
}
PTR++;
}
return (CRC);
}
- 正常 CRC 二极管:
unsigned char CRC8 (unsigned char * ptr、unsigned char len、unsigned char key)
{
unsigned char i;
unsigned char crc=0;
while (len-)
{
CRC ^=*PTR++; // 每次对需要计算的数据执行异或运算,计算将指向下一个数据*/
对于(i=8;i>0;--i)/* ,以下计算过程与计算一个字节 CRC */相同
{
IF (CRC 和0x80)
CRC =(CRC << 1)^ 0x31;
其他
CRC =(CRC << 1);
}
}
返回(CRC);
}
----------------------