CAN总线中循环冗余校验码的原理及其电路实现

发布者:快乐时刻最新更新时间:2012-02-06 来源: 21IC关键字: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位,用来存放余数p(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。可以看出,CANU叫线中的CRC校验采用的多项式能够校验七级,比一般CRC校验(CRC-4、CRC-12、CRC-16等)的级数(二~五级)要高许多,因而它的检错能力很强,误判率极低,成为提高数据传输质量的有效检错手段。


2 CRC码的电路实现

2.1 硬件电路的特点

在CAN总线中为了产生CRC码,硬件电路除了具有复位和时钟信号以外,还需要以下两个控制信号的参与:①填充位解除信号destuff,它的有效逻辑值是1;②CRC检验的使能信号enable,有效逻辑也为1。该硬件电路的特点是采用选择器和反相器代替传统设计中用的异或门,既实现了比较功能,又降低了生产成本,同时也为工程师们提供了一种新的设计思路。

2.2 硬件电路图

需要说明的几点如下:①使能信号和填充位解除信号省略;②crcnxt代表的逻辑值为输入报文序列和CRC寄存器的最高位异或的结果;③标号0~14所指示的为15位CRC寄存器,上升沿触发;④标号1~6所指示的为选择器和反相器的组合逻辑,实现异或功能,该选择器的逻辑功能为Y=AB+AC,具体结构如图3所示。

2.3 电路工作过程

从以上分析可知:①当enable=0时,CRC清0;②当enable=1、destuff=1时,进行正常CRC计算;③当enable=1而destuff=0时,正在解除填充时,数据暂停传送。

在各个控制信号均有效时,输入报文的每一位都是和CRC寄存器的最高位相异和后移入最低位,同时寄存器的第13、9、7、6、3、2位均和其最高位异或,结果分别左移一位;其它未进行异或操作的寄存器位值也分别左移一位,直到报文的每一位都移入CRC寄存器为止,此时寄存器中的值取为计算得到的CRC码。

如果报文的比特序列长度为16,则需要左移16次才能对报文的每一位均进行处理。如果以Ck表示CRC寄存器的第k位位值、Ck'表示移位后的第k位位值(k=0,1,2,3……15),则移位规律见表1。

表1 移位规律表

C14'=C13^crcnxt C13'=12 C12'=C11 C11'=C10
C10'=C9^crcnxt C9'=C8 C8'=C7^crcnxt C7'=C6^crcnxt
C6'=C5 C5'=C4 C4'=C3^crcnxt C3'=C2^crcnxt
C2'=C1 C1'=C0 C0'=crcnxt^datain  

[page]

3 CRC校验码的软件实现

CRC校验用软件实现起来非常方便。鉴于目前的资料中介绍的方法多使用C语言、汇编语言等实现,而缺乏用硬件描述语言实现,这里给出CRC码的Verilog HDL之行为级描述程序。

本程序在Verilog_XL下编译通过,同时在Synopsis上成功进行了综合及优化。

//用Verilog HDL实现CRC码

module crc(clk,rst,enable,destuff,datain,crc);

input clk;

input rst;

input enable;

input destuff;

input datain;

output[14:0]crc;

reg[14:0]crc;

wire crcnxt=datain^crc[14];

always@(posedge rst or posedge clk)

begin

if(rst)crc=0;

else if(enable && destuff)

begin

if(crcnxt)

crc<=crc^15h'4599;

else

crc<={crc[13:0],1'b0};

end

end

endmodule


4 仿真波形

假设发送的是一个标准格式的远程帧,需求的数据字节为8,标识符序列为10101011000。Crc序列从第20位开始输出。

CRC校验码的检错能力很强,并且由于CRC码检错的软件和硬件实现都很简单,因而被广泛地应用于各类数据校验中。CRC码检错是提高数据传输质量、高效检错的有力手段。

 

关键字:CAN总线  冗余校验  报文传输 引用地址:CAN总线中循环冗余校验码的原理及其电路实现

上一篇:基于RC7235的多种V.35接口转换和光纤MODEM方案
下一篇:COM组件技术在现场总线控制系统组态软件中的应用

推荐阅读最新更新时间:2024-05-02 21:53

μC/OS-II的多任务信息流与CAN总线驱动
摘要:阐述μC/OS-II多任务信息流关键技术与中断处理的一般方法和PC体系中断的基本概念;以CAN总线为例,详细分析在x86实模式下基于μC/OS-II的CAN总线驱动的实现过程。 关键词:μC/OS-II RTOS嵌入式系统 设备驱动 中断处理程序(ISR) 进程调度 μC/OS-II是美国人Jean Labrosse编写的一个免费的、源码公开的嵌入式实时内核。对于开发计算机嵌入式应用产品的技术人员来说是一个实用价值很高的实时嵌入式操作系统ERTOS(Embedded Real Time Operation System)。   要开发出完善的ERTOS,就要在多任务的调度和对I/O设备操作的稳定性、协调性方面做出大
[应用]
新能源客车CAN总线的故障定位和干扰排除
  安凯新能源客车是国内较早研发及批量化运营电动客车的企业,最早上电动车国家公告,公告数量全国第一,目前国内市场占有率达到70%以上,并且大量出口到欧美,已经成为了行业的领导品牌。安凯之所以取得广泛用户的信任,在于该公司对行驶安全性和可靠性有着极高的标准。针对新能源客车普遍存在CAN总线受到电磁干扰问题,安凯和致远电子合作,使用CANScope-Pro专业版CAN总线分析仪成功定位故障,排除干扰,并且进行可靠性测试,为安凯新能源客车稳定运行保驾护航。 安凯客车故障诊断纪实   ● 频谱分析准确定位故障根源   新能源客车与传统客车不同,其是使用电池、电容来存储能量,然后通过逆变成交流,带动电动机驱动车辆。当客车
[嵌入式]
关于CAN总线汽车仪表的研究
随着电子技术的不断发展并在汽车控制系统中的广泛应用,使得汽车的电子化程度越来越高,电子装置越来越多,汽车上每一个总成几乎都是机械、电子和信息一体化装置。汽车正在由一个拥有大量的电子技术与装置的机械系统,转变为一个由一定机械装置支撑的电子电气系统。为了减少车内连线实现数据的共享和快速交换,现代汽车以CAN总线通讯技术实现相互之间信息共享。成都盘沣科技有限公司小编就CAN总线汽车仪表做出以下介绍:   汽车仪表是汽车与驾驶员进行信息交流的窗口,是汽车信息的中心,能够集中、直观、迅速地反映汽车在行驶过程中的各种动态指标,如行驶速度、里程、电系状况、制动、压力、发动机转速、冷却液温度、油量、各种危险报警。随着科技进步,汽车排放、节能、安
[嵌入式]
基于AT89C51的CAN总线智能节点设计
   1 引言   CAN(Controller Area Network)是控制器局域网,主要用于各种设备检测及控制的现场总线。CAN总线是德国BOSCH公司20世纪80年代初为解决汽车中众多控制与测试仪器间的数据交换而开发的串行数据通信协议。这是一种多主总线,无论是在高速网络还是在低成本的节点系统,应用都很广泛。由于采用了许多新技术及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,其主要特点如下:   ●通信方式灵活,可以多主方式工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,不分主从。   ●CAN节点只需对报文的标识符滤波即可实现点对点、点对多点及全局广
[单片机]
基于AT89C51的<font color='red'>CAN总线</font>智能节点设计
基于CAN总线的高压开关柜状态监测单元通讯模块的设计
1. 引言 高压开关柜是电力系统的关键主设备之一,其运行状态对电力系统的可靠性具有重大影响。 统计表明,20世纪90年代中国电力系统开关事故类型分布如下:机械故障(拒分、拒合、误动)33.3%,尽缘故障37.3%,温升故障(载流)8.9%,其它20.5% 。 因此,有必要对高压开关柜的机械、温升及尽缘状态实施在线监测,及时发现事故隐患,防止事故发生。 现有高压开关柜监测单元的核心一般采用单片机(MCU),其处理能力有限、存贮空间很小,只能对数据进行简单的处理和存放少量的历史数据 。为了存放大量的历史数据以便对已有的数据进行复杂的处理(如寿命评估、故障诊断等),也为了对电力系统运行状态进行远程检测和诊断,有必要使监测单元具有通讯能
[单片机]
基于<font color='red'>CAN总线</font>的高压开关柜状态监测单元通讯模块的设计
CAN总线基础知识(二)
CAN协议和标准规范 1 由ISO标准化的CAN协议       CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。       (1)      关于ISO11898:这个标准用于高速CAN通讯。开始的时候,数据链路层和物理层都在标准ISO11898中规定,后来被拆分为ISO11898-1(仅涉及数据链路层)和ISO11898-2(仅涉及物理层)       (2)      关于ISO11519:这个标准用于低速(最高125kbps)CAN通讯 2   ISO11898和ISO11519-2之间的不同     
[嵌入式]
采用模块化编程设计的基于CAN总线的智能继电器研究
为解决电气系统中控制距离短,开关响应实时性不强,一般智能节点容易受到外界干扰,系统掉电后数据丢失等一些列问题,结合微电子技术、微处理器的特点,以及CAN总线的优势,对以AT89C51和SJA1000为控制核心,采用模块化编程设计的基于CAN总线的智能继电器进行了研究。研究结果表明,能更进一步提高系统的控制距离,有效检测系统中的大电流,并及时通断开关,对突发性电源故障能进行可靠检测,并及时保存重要数据,提高了系统的抗干扰性,也可以接入CAN总线网络,使得对继电器的控制变得更为灵活。 过去的几十年里,在很多电气设备中,比如车辆、舰船、飞机等中的电气用电设备,它们一直采用保险丝盒断路器等被动防护装置,致使无法故障预警,故障诊
[单片机]
采用模块化编程设计的基于<font color='red'>CAN总线</font>的智能继电器研究
CAN总线错误分析与解决
1、CAN总线的常见故障 CAN总线错误分析与解决 当CAN总线出现故障或数据传输异常时,往往会出现多种奇怪的故障现象,如仪表板显示异常,车辆无法启动,启动后无法熄灭,车辆动力性能下降,某些电控系统功能失等。 这是因为相关数据或信息是通过CAN总线传输的,如果传输失败,那么会产生多种连带故障,甚至造成整个网络系统瘫痪。 最为常见的故障症状是仪表板的显示异常,如下图所示。 在检修过程中,首先应查看具体的故障症状,根据故障症状和网络结构图来初步分析有可能是哪些原因造成的,然后使用相关的诊断仪器进行诊断,根据诊断结果制定相关检修方案,做到心中有数,目标明确。接着查找具体的故障部位和原因,同时结合相应的检测方法和测量结果找到故障点,从
[嵌入式]
<font color='red'>CAN总线</font>错误分析与解决
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved