labview中使用CAN总线中crc15算法

原创 2012年03月26日 14:44:21

CRC15校验,输入二进制字符串,返回字符串的15位校验位。
可用于CAN总线中CRC校验位的生成。CRC-15算法。


P(x) = x15+ x14+ x10+ x8+ x7+ x4+ x3+ x0


其实现代码如下:




// CRC Generation Unit - Linear Feedback Shift Register implementation

// (c) Kay Gorontzi, GHSi.de, distributed under the terms of LGPL
// ==========================================================================
char *MakeCRC(char *BitString)
   {
   static char Res[16];                                 // CRC Result
   char CRC[15];
   int  i;
   char DoInvert;
   
   for (i=0; i<15; ++i)  CRC[i] = 0;                    // Init before calculation
   
   for (i=0; i<strlen(BitString); ++i)
      {
      DoInvert = ('1'==BitString[i]) ^ CRC[14];         // XOR required?

      CRC[14] = CRC[13] ^ DoInvert;
      CRC[13] = CRC[12];
      CRC[12] = CRC[11];
      CRC[11] = CRC[10];
      CRC[10] = CRC[9] ^ DoInvert;
      CRC[9] = CRC[8];
      CRC[8] = CRC[7] ^ DoInvert;
      CRC[7] = CRC[6] ^ DoInvert;
      CRC[6] = CRC[5];
      CRC[5] = CRC[4];
      CRC[4] = CRC[3] ^ DoInvert;
      CRC[3] = CRC[2] ^ DoInvert;
      CRC[2] = CRC[1];
      CRC[1] = CRC[0];
      CRC[0] = DoInvert;
      }
      
   for (i=0; i<15; ++i)  Res[14-i] = CRC[i] ? '1' : '0'; // Convert binary to ASCII
   Res[15] = 0;                                         // Set string terminator

   return(Res);
   }

// A simple test driver:

#include <stdio.h>

int main()
   {
   char *Data, *Result;                                       // Declare two strings

   Data = "1101000101000111";
   Result = MakeCRC(Data);                                    // Calculate CRC
   
   printf("CRC of [%s] is [%s] with P=[1100010110011001]\n", Data, Result);
   
   return(0);
   }


其中输入为二进制字符串。



                    

CRC算法及原理

CRC算法及原理  本文转自:http://www.cnblogs.com/FPGA_DSP/archive/2010/05/08/1730529.html CRC校验码的基本思想是利用线性编...

CRC-16校验(多项式为x16+x15+x2+1):

CRC-16校验(多项式为x16+x15+x2+1): type {CRC校验} TDataByte = array of byte; const        CRCHi: arr...
  • lchu55
  • lchu55
  • 2015年09月29日 15:40
  • 2713

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

TCP/IP协议各层数据格式及首部含义

TCP/IP四层模型 原帖:http://www.cnblogs.com/BlueTzar/articles/811160.html TCP/IP参考模型      ISO制定的OSI参考模型的...

CRC校验码生成与数据校验源码程序 (包括CRC-4,5,6,7,8,16,32)

C语言的CRC4-ITU,CRC5-EPC,CRC5-ITU,CRC5-USB,CRC6-ITU,CRC7-MMC,CRC-8,CRC8-ITU,CRC8-ROHC,CRC8-MAXIM,CRC16-...

LabVIEW中CAN总线CRC实现

  • 2013年01月16日 16:52
  • 12KB
  • 下载

labview开发CAN总线

  • 2015年01月16日 15:21
  • 592KB
  • 下载

CAN总线使用总结

一,CAN总线是由德国BOSCH公司提出,目的是为了解决汽车内部硬件信号线的复杂走线 二,CAN:controller area area:控制器局域网络 三,CAN总线的特点:        ...

NI Labview CAN总线函数库

  • 2015年07月14日 08:36
  • 398.31MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:labview中使用CAN总线中crc15算法
举报原因:
原因补充:

(最多只允许输入30个字)