原创 在串口通信中的CRC实现

2008-1-11 21:48 2662 5 5 分类: 通信

 


在一些关键的通信在,对数据一致性要求很高的数据通信(如温度控制通信)需要加CRC来进行保证。如是本人在一个项目中用到一段精简的程序:


/*******************************************
函数原型:unsigned int cal_crc(unsigned char *ptr, unsigned char len)
函数功能:CRC校验
******************************************/
unsigned int cal_crc(unsigned char *ptr, unsigned char len)
{
 unsigned char i;
 unsigned int crc="0";
 while(len--!=0)
  {
 for(i=0x80; i!=0; i/=2)
     {
   if((crc&0x8000)!=0) {crc*=2; crc^=0x1021;}  
     else crc*=2;
 if((*ptr&i)!=0) crc^=0x1021;               
      }
 ptr++;
  }
 return(crc);


在发送端将要发送的数据放入ptr堆栈中计算值加在后面发送,接受端同样计算收到的信息的CRC码,如果计算的CRC与接受的一致,通信正确,否则要求重发。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条