毕业设计做的Lin总线,关键代码贴出来。
计算校验和
unsigned char LINCalcChecksum(unsigned char *data)
{
unsigned int sum = 0;
unsigned char i;
for(i = 0; i < 4; i++)
{
sum += data[i];
if(sum&0xFF00)
sum = (sum&0x00FF) + 1;
}
sum ^= 0x00FF;
return (unsigned char)sum;
}
unsigned char LINCalcParity(unsigned char id)
{
unsigned char parity, p0,p1;
parity=id;
p0=(BIT(parity,0)^BIT(parity,1)^BIT(parity,2)^BIT(parity,4))<<6; //偶校验位
p1=(!(BIT(parity,1)^BIT(parity,3)^BIT(parity,4)^BIT(parity,5)))<<7; //奇校验位
parity|=(p0|p1);
return parity;
}
结构体
//FrameProgress代表从机接收帧的进度,
// FrameProgress=