CAN总线中循环冗余校验码的原理

在CAN系统中为保证报文传输的正确性,需要对通信过程进行差错控制。目前常用的方法是反馈重发,即一旦收到接收端发出的出错信息,发送端便自动重发,此时的差错控制只需要检错功能。常用的检错码有两类:奇偶校验码和循环冗余校验码。奇偶校验码是一种最常见的检错码,其实现方法简单,但检错能力较差;循环冗余校验码的编码也很简单且误判率低,所以在通信系统中获得了广泛的应用。下面介绍CAN网络中循环冗余校验码(即CRC码)的原理和实现方法。 1 CRC码检错的工作原理          CRC码检错是将被处理报文的比特序列当作一个二进制多项式A(x)的系数,该系数除以发送方和接收方预先约定好的生成多项式g(x)后,将求得的余数p(x)作为CRC校验码附加到原始的报文上,并一起发给接收方。接收方用同样的g(x)去除收到的报文B(x),如果余数等于p(x),则传输无误(此时A(x)和B(x)相同);否则传输过程中出错,由发送端重发,重新开始CRC校验,直到无误为止。         上述校验过程中有几点需注意:①在进行CRC计算时,采用二进制(模2)运算法,即加法不进位,减法不借位,其本质就是两个操作数进行逻辑异或运算;②在进行CRC 计算前先将发送报文所表示的多项式A(x)乘以xn,其中n为生成多项式g(x)的最高幂值。对二进制乘法来讲,A(x)·xn就是将A(x)左移n位,用来存放余数(x),所以实际发送的报文就变为A(x)·xn+p(x);③生成多项式g(x)的首位和最后一位的系数必须为1。图1为CRC校验的工作过程。

          目前已经有多种生成多项式被列入国际标准中,如:CRC-4、CRC-12、CRC-16、CCITT-16、CRC-32等。CAN总线中采用的生成多项式为g(x)=x15+x14+x10+x8+x7+x4+x3+1。可以看出,CAN总线中的CRC校验采用的多项式能够校验七级,比一般CRC校验(CRC-4、CRC-12、CRC-16等)的级数(二~五级)要高许多,因而它的检错能力很强,误判率极低,成为提高数据传输质量的有效检错手段。

 

2 CRC序列计算方法

多项式g(x)除法的余数就是发送到总线上的CRC序列。为了实现这个功能,可以使用15位的移位寄存器----CRC_RG(14 : 0)。如果NXTBIT指示位流的下一位,那么从帧的起始到数据末尾都由没有填充的位顺序给定。CRC序列的计算如下:

CRC_RG=0;                                             //初始化移位寄存器 REPEAT         CRCNXT = NXTBIT  EXOR  CRC_RG(14);        //异或运算         CRC_RG(14 : 1)= CRC_RG(13 : 0);     //寄存器左移1位         CRC_RG(0)=0;                IF CRCNXT THEN              CRC_RG(14 : 0)==CRC_RG(14 : 0)  EXOR   (4599hex);         ENDIF UNTIL   (CRC序列开始或有一错误条件)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN总线(Controller Area Network)是一种高可靠性的串行通信协议,广泛应用于汽车及工业控制领域。它的基本工作原理如下: 1. 网络拓扑:CAN总线采用多主控制器和多个节点的分布式网络拓扑结构。每个节点包括一个CAN控制器和一个或多个CAN节点。 2. 总线通信:CAN总线使用差分信号传输数据,其CAN_H(高电平)和CAN_L(低电平)两个线路构成一个差分对。 3. 帧结构:CAN总线采用帧结构进行数据传输。每个帧由一个起始位、标识符、控制位、数据域、CRC循环冗余校验码)和结束位组成。 4. 抢占式访问:CAN总线上的节点使用非冲突的抢占式访问机制来发送数据。节点根据优先级依次发送帧,具有较低优先级的节点会在总线空闲时发送数据。 5. 冲突检测和错误处理:CAN总线支持冲突检测机制,节点在发送数据前会检测是否与其他节点同时发送数据,如果发生冲突,则会止发送并等待一段随机时间后重新发送。此外,CAN总线还具有错误检测和纠正机制,如CRC校验和错误帧的自动检测。 6. 帧过滤和接收:CAN总线上的节点可以设置帧过滤规则,只接收满足规则的帧。节点会监听总线上的帧,并根据帧的标识符进行过滤,只有匹配的帧才会被接收和处理。 总的来说,CAN总线通过分布式网络拓扑、差分信号传输、帧结构、抢占式访问和冲突检测等机制,实现了高可靠性和实时性的数据通信。这使得CAN总线成为许多应用领域首选的通信协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值