LRC的定义为:LRC侦误值及是将第一至最后一个资料内容加总,得到之结果以256为单位,超出之部分去除(例如得到之结果为十六进位128H,则只取28H),然后计算二次反补后得到之结果即为LRC侦误值。
LRC 纵向冗余校验
例子程序如下:
Uint8 dsp_lrc_check(Uint8 buf[], Uint16 len)
{
Uint16 iCount = 0;
Uint8 lrcValue = 0x00;
for(iCount = 0; iCount < len ; iCount ++) {
lrcValue = lrcValue + buf[iCount];
}
// return ((unsigned char)((~lrcValue) + 1)); //两种操作都能实现
return ((unsigned char)(-((char)lrcValue)));
}
int main(void)
{
unsigned char buf[8] = {0x01,0x02,0x00,0x00,0x00,0x01,0xfc};
unsigned char lrc = 0x00;
lrc = dsp_lrc_check(buf, 7);
printf("lrc = 0x%x \n",lrc);
}
buf 里最后的0xfc 就是lrc的结果,以便与接收端收到的数据进行匹配!