一、基础知识 1、CRC简介: CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环
CRC校验原理简介: CRC校验就是将传输的数据当做一个位数很长的数,将这个数除以另一个数( “模2除法” )。得到的余数作为校验数据附加到原数据后面。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。如果有余数,则表明该帧在传输过程中出现了差错。模二除法实例:CRC校验分为以下几个步骤: (1)先选择一个用于在接收端进行校验时,对接收的帧进行除法运算的除数。
上一篇讲了CRC校验中的模2除算法。这次讲CRC校验原理和一些基础概念。百度百科:循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送
1、项目的需求来源 做为程序员码代码,开发软件,开发通信协议,相信避免不了与各种校验码打交道。校验码是通信协议中数据接收方用来校验数据合法性的一个编码。那么举个栗子,请看今早我和隔壁老王的对话, 隔壁老王:今天你吃了么?“嘎哈” 老赵:我今天吃的是包子。“哇哈” &
原文地址:CRC校验原理作者:神人转载:CRC校验原理1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码10111
转载
2023-06-25 11:57:37
552阅读
问题:在嵌入式系统开发中,Modbus协议是工业控制系统中广泛应用的一种协议。本题用来简单模拟Modbus协议,只需根据条件生成符合该协议的数据帧,并解析所获取的数据。假设设备使用的协议发送数据格式如下:<SlaveAddress, 1 Byte> <Function, 1 Byte> <Start Address, 2 Bytes> <NumberofB
CRC校验码举例一、首先复习一下异或运算(XOR),相同得0,相异得1.二、多项式算数 使用多项式算数是为了是为了在进行二进制计算时无需考虑进位问题。 CRC中用到的除数正是由多项式的各项系数组成。 比如+++1,CRC除数为10111。三、计算步骤 1.展开多项式,得到CRC除数。 
转载
2023-10-12 21:32:39
146阅读
5.3.2 循环冗余校验检错方案 奇偶校验码只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校验原理 CRC校验原理其实是很简单的问题,其根本思想就是先在要发送
转载
2023-09-28 08:56:25
365阅读
CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。1、CRC简介CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制
CRC校验,是对一个数据帧发送到对方时,对方能够正确的接收到这个数据帧的一种保证,保证接收到的数据帧是对的。CRC校验,一般占16位,两个字节。我们在发送一个数据帧的时候,对CRC校验前面那些位,用一种特殊的算法进行统计,算出来的数作为CRC校验这两个字节,填充到CRC这两个字节中。然后将数据帧发送出去。对方接收到这个数据帧的时候,将数据帧中的代表CRC校验的两个字节取出来,存下,然后自己对接收到
原创
2016-12-08 17:54:14
1147阅读
u16 GetCheckCode(unsigned char *ptr, unsigned char len)
{
u16 Code;
u8 i,j;Code = 0xffff;
for(i=0;i<len;i++)
{
Code ^= ptr[i];
for(j=0;j<8;j++)
{
if(Code&0x0001)
{
Code >>= 1;
Code ^=
转载
2020-10-15 17:14:00
139阅读
2评论
CRC简单地说就是用需要做处理的数据除以一个常数而得到的余数。 实际操作涉及到的操作数有校验初始值(即校验种子seed),操作数(char数组),操作数长度; 除以的常数Poly是一固定值,不同CRC算法(CRC12、CRC16、CRC32)该值固定。 在CRC中,除法按XOR异或处理。 本质按位操
转载
2016-07-12 17:06:00
275阅读
点赞
2评论
CRC校验原理 1、循环校验码(CRC码):
是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。 3
简介在数据通信中,接收端通常需要检测传输过程中是否发生差错,常用的方法包括: 奇偶校验(Parity Check)、校验和(Check Sum)和CRC(Cyclic Redundancy Check) 等。相应的检测方式是:①发送端按照某种算法对发送消息进行计算,得到校验码,然后将校验码和消息码一起发生到接收端;②接收端对接收到的消息按照相同算法计算,得到本地校验码;③将本地校验码与接收到校验码
一、CRC是什么?循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。--百度百科二、什么时候需要进行CRC校验?在数据通讯的过程中,难免
转载
2023-10-26 06:06:38
69阅读
程序的宗旨:通过编写CRC的校验程序,加深对CRC原理的理解,同时学会将书本上的原理运用于实际,动手实践才能学得更快。 注:本文关于CRC原理那部分内容,来自网络搜集。 1. 需求分析 编写一个CRC校验的模拟程序,该程序实现的功能如下:输入:一串二进制比特串 输出:CRC校验码 2. CRC校验原理分析 在此,我们主要从适合于编程实现的角度分析CRC校验
转载
2023-07-21 18:52:58
131阅读
#include <stdio.h>
#include <string.h>
// 转化后的二进制最多的位数
#define MAX_BIN_LENGHT 100
// 输入的表达式最多的字符数
#define MAX_EXP_LENGHT 100
// 根据表达式得到二进制数
void getBinary(char *express,int binary[MAX_
转载
2023-09-27 20:10:27
105阅读
基本概念CRC(循环冗余校验码):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。循环冗余校验码(CRC)的基本原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一
目录前言CRC算法简介CRC计算CRC校验CRC计算的C语言实现CRC计算工具总结前言最近的工作中,要实现对通信数据的CRC计算,所以花了两天的时间好好研究了一下,周末有时间整理了一下笔记。一个完整的数据帧通常由以下部分构成:校验位是为了保证数据在传输过程中的完整性,采用一种指定的算法对原始数据进行计算,得出的一个校验值。接收方接收到数据时,采用同样的校验算法对原始数据进行计算,如果计算结果和接收
转载
2023-08-23 15:37:01
269阅读
WORD CRC16Hi[] = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,
原创
2014-11-10 11:02:04
847阅读