登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:请教一个CRC-CCITT计算问题

点击:9864 回复:4

我做了一个协议,要求计算7E 00 00 45 02 00 00 0A 50 这个命令的CRC的校验(最后两个0A 50为CRC的校验码),请问该如何计算呢?谢谢!!
03-08-11 16:13
把前面的7个数按16进制相加,得到的结果就是校验和
7E+00+00+45+02+00+00=xxnn
xx nn就是校验和,通常先传送nn,后传送xx

7E 00 00 45 02 00 00 C8 00
03-08-11 16:59
楼上这位先学学CRC原理:
循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。
根据应用环境与习惯的不同,CRC又可分为以下几种标准:
  ①CRC-12码;
  ②CRC-16码;
  ③CRC-CCITT码;
  ④CRC-32码
CRC使用手册下载: http://www.fpga.com.cn/freeip/crc_xilinx.pdf
CRC在线运行: http://www.easics.be/webtools/crctool
03-08-11 17:43
在巧合的时间里,场合下,看到您的心血。
俩字--感激!
06-04-13 02:25
void crc16(byte d[], int len)
{
       byte b = 0;
       ushort crc = 0xffff;
       int i, j;
       for(i=0; i        {        
               for(j=0; j<8; j++)
               {
                       b = ((d[i]<>8);
                       
                       crc<<=1;
                       if(b!=0)        crc^=0x1021;
               }
       }
       crc = ~crc;
       printf("crc: 0x%.4X ", crc);
}
08-06-17 10:27

工控新闻

更多新闻资讯