CRC校验C程序及用labview编写的CRC校验小程序

2015-09-07 16:50:55来源: eefocus 关键字:CRC校验  C程序  labview编写
在一些通信规约中,经常会用到数据校验,其中CRC(Cyclical Redundancy Check)最为常见。它是利用除法及余数的原理来作错误侦测的,实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通信出现错误。有关CRC算法的原理就不详细说了,直接贴出C程序,用到的时候根据CRC生成多项式,做一些修改即可。

举个例子:CRC生成多项式G(x)= x^16 + x^15 + x^13 + 1   根据该多项式系数,就可以判断CRC值为16位两字节数。从bit0位 到 bit15位 ,可知系数为1010 0000 0000 0001,所以简记为OxAOO1。

 

//uc_p_Fst:校验的起始数据指针

//uc_p_End:指向校验结束数据的下一个数据的指针

//ui_CRC:初始数据(注意有些网上给出的程序习惯初始值为0 或初始值为0xffff,这两种情况下校验时的方向不同,前者校验位左移,后者右移,具体原因我也解释不清楚。)

 

uint16 CheckCRC(uint8* uc_p_Fst,uint8* uc_p_End,uint16 ui_CRC)

{

     uint16 ui_Reg,i;

     while(uc_p_Fst < uc_p_End)

   {

      ui_CRC = ui_CRC ^ (((uint16)(*uc_p_Fst))<<8);

      for(i=0;i<8;i++)

     {

        ui_Reg = ui_CRC & 0x8000;

        if(ui_Reg)

       {

          ui_CRC <<=1;   //注意左移

          ui_CRC = ui_CRC ^ 0xA001;  // 这个地方就是用到不同的CRC生成多项式,做相应的修改

       }

        else  ui_CRC <<=1;

     }

       uc_p_Fst ++;

   }

      return(ui_CRC);

}

 

下面贴出用labview编写CRC校验小程序

前面板:

程序框图:


 


 



如有错的地方,请大家指正!

关键字:CRC校验  C程序  labview编写

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0907/article_13013.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:LabView7.1点滴(5)--建立全局变量
下一篇:LabVIEW的数据线类型

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
CRC校验
C程序
labview编写

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved