网络上搜到的CAN错误笔记
CAN总线错误总结

SJA1000的错误中断处理推荐SJA1000的错误处理好似还是比较复杂的的啦,下面是我自己的一些理解,有不对之处还请各位大虾多多指点啊!SJA1000的错误有:仲裁丢失;数据溢出;总线错误;错误状态有:错误主动(Error Active)错误被动(Error Passive)总线关闭;错误中断:总线错误中断;仲裁丢失中断;错误消极中断;数据溢出中断;错误报警中断;涉及到的寄存器:状态寄存器(SR);中断寄存器(IR);中断使能寄存器(EIR);仲裁丢失捕捉寄存器(ALC);错误代码捕捉寄存器(ECC);错误报警限制寄存器(EWLR);TX错误计数寄存器(TXERR);RX错误计数寄存器(RXERR);处理中断当然是从中断寄存器说起了;中断寄存器:只说和错误有关的位啦;IR.7:BEI总线错误中断;当CAN控制器检测到总线错误且中断使能寄存器(EIR)中的BEIE被置位时此位被置位当前的错误代码可以通过错误代码捕捉寄存器(ECC)获得;其中可以分为:位错误;格式错误;填充错误;其它错误;IR.6:ALI仲裁丢失中断;当CAN控制器丢失仲裁,变为接收器和中断使能寄存器的ALIE为被置位时,此位被置位当前仲裁丢失的位置可以通过读仲裁丢失捕捉寄存器(ALC)获得;IR.5:EPI 错误消极中断;当CAN控制器到达错误消极状态(Error Passive)(至少一个错误计数器超过协议规定的值127)或从错误消极状态(Error Passive)又进入错误活动状态(Error Active)以及中断寄存器的EPIE位被置位时此位被置1IR.3:DOI 数据溢出中断;数据溢出状态位(状态寄存器的SR.1位 DOS)有0-1 跳变且中断寄存器的DOIE位被置位时此位被置1IR.2 EI 错误报警中断;错误状态位(状态寄存器的SR.6位 ES)和总线状态位(状态寄存器的SR.7位 BS)的改变和中断寄存器的EIE位被置位时此位被置1影响错误状态位的有:1,错误计数器至少有一个错误计数器满2,超过错误报警限制寄存器(EWLR)设置的值时错误状态位被置位;报警中断。
浅析CAN总线错误分析与解决

浅析CAN总线错误分析与解决CAN(Controller Area Network)总线是一种常用于汽车及工业场合的通信协议,它能够实现多个节点之间的高速数据传输。
然而,在实际应用中,由于各种原因,CAN总线可能会出现错误,影响通信的稳定性和可靠性。
本文将对CAN总线错误进行分析,并提出一些解决方案。
首先,CAN总线错误可以大致分为以下几类:1. 位错误(Bit Error):CAN总线中的数据传输是基于二进制编码的,位错误是指在传输过程中由于电磁干扰、线路质量差等原因,导致数据位传输错误。
位错误的情况较为常见,可以通过提高线路质量、增强抗干扰能力或使用差分传输方式等方式来解决。
2. 标志位错误(Frame Error):在CAN总线中,每个数据帧的开始和结束位置都有一个标志位。
标志位错误是指这个标志位被错误地接收或丢失,导致数据帧无法正确识别。
标志位错误通常是由于通信速率设置有误、线路中存在干扰或接地问题等原因导致的。
解决这个问题可以从通信参数设置和线路质量等方面入手。
3. 校验错误(Checksum Error):在数据帧中,发送节点会携带一个校验码,用于校验数据传输的正确性。
如果接收节点计算出的校验码与发送节点携带的校验码不一致,则会产生校验错误。
校验错误通常是由于数据传输中发生位错误导致的,可以通过提高错误检测和纠错能力来减少校验错误。
4. 故障给出错误(Error Passive):当CAN总线上的错误数量达到一定限制时,节点会进入故障给出(Error Passive)状态,不再主动发送数据。
故障给出错误通常是由于线路质量差、硬件故障或软件错误等原因导致的。
解决故障给出错误可以通过检查硬件连接、调整通信参数或修复软件故障等方式。
针对CAN总线错误,可以采取以下解决方案:1.提高线路质量:CAN总线的线路质量直接影响通信的稳定性和可靠性。
可以采用屏蔽线缆、增加终端电阻、加强接地等方式来提高线路质量,减少电磁干扰和信号失真。
CAN总线错误类型和故障界定

CAN 总线错误类型和故障界定CAN 是控制器局域网络(Controller Area Network,CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH 公司开发了的,并最终成为国际标准(ISO11898)。
是国际上应用最广泛的现场总线之一。
在建立之初,CAN 总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。
上世纪90 年代CAN 总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。
CAN 总线错误检测CAN 总线协议定义了 5 种错误类型用于监测总线上的数据传输。
这五种错误包括:1.位错误(Bit Error):CAN 总线上的节点在发送数据的同时也在检测总线上的电平。
如果在仲裁域之外,所发送的数据与节点监测到的数据不一致,则CAN 总线产生了一次位错误。
但是,如果在发送ACK 段或者被动错误标志时,节点检测到总线上电平与发送值不一致,并不判定产生了位错误。
2.填充规则错误(Stuff Error):在CAN 总线传输中,报文的侦起始、仲裁域、控制域、数据域以及CRC 校验部分只要连续出现五个相同的位就需要额外插入一个相反的位,这是CAN 总线位填充的机制。
在CAN 总线通信中,如果一个节点检测到六个连续相同的电平就判断总线出现了位填充错误。
3.CRC 校验(CRCError):CAN 总线的数据帧自带了CRC 校验,在发送数据的同时也计算这一帧的CRC 校验码,将校验码在数据帧的末尾部分发送。
接收节点接收到数据帧后计算接收到的数据帧中数据域的CRC 码,并与接收到的CRC 校验码比较以确定接收到的数据是否准确,如果不正确,则出现了一次CRC 校验错误。
4.格式错误(Form Error):在固定格式的位场中出现了非法位,比如,在本该是隐性位的CRC界定符中出现了显性电平,则监控节点判断出现了一次格式错误。
CAN总线错误类型和故障界定

CAN 总线错误类型和故障界定
CAN 是控制器局域网络(Controller Area Network,CAN)的简称,
是由研发和生产汽车电子产品着称的德国BOSCH 公司开发了的,并最终成为国际标准(ISO11898)。
是国际上应用最广泛的现场总线之一。
在建立之初,CAN 总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。
上世纪90 年代CAN 总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。
CAN 总线错误检测
CAN 总线协议定义了 5 种错误类型用于监测总线上的数据传输。
这五种错误包括:
1.位错误(Bit Error):
CAN 总线上的节点在发送数据的同时也在检测总线上的电平。
如果在仲裁域之外,所发送的数据与节点监测到的数据不一致,则CAN 总线产生了一次位错误。
但是,如果在发送ACK 段或者被动错误标志时,节点检测到总线上电平与发送值不一致,并不判定产生了位错误。
CAN总线错误帧分析

CAN总线错误帧分析1、CAN 错误检测(Error Detection)CAN 网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU 的干涉除非错误累计该发送器退隐(Bus Off)。
CAN 控制器可检测如下五种错误:√位错误(Bit Check Error)发送器在发送比特流的同时也对发出的比特流采样回收,若送出的bit 与所期待的bit 不合,则会检测到一个Bit Check Error;√ 位填充错误(Bit Stuff Error)在需要执行位编码规则的位流序列中检测到第6 个连续的极性相同的位序流时,则检测到一个Bit Stuff Error;√ CRC 错误(CRC Error)发送端送出的CRC 序列由发送器算出,接收器执行同样的CRC 算法,若计算结果与接收到的CRC 序列不符,一个CRC Error 被检测到,由发送端送出;√ 帧格式错误(Frame Check Error)当一个固定形式的位场含非法位,则检测到一个Frame Check Error(接收端检测到帧结束最后一位为显性时帧错误忽略);√ 应答错误(Acknowledgment Error)ACK SLOT 采样为隐性,则检测到一个Acknowledgement Error;2、CAN 错误界定(Error Confinement)CAN 控制器内置两个错误计数器:Receive Error Counter 及Tranmit ErrorCounter(错误计数器的计数规则后附)。
当某个计数器的当前值达到128 时,CAN 控制器将进入Error Passive Mode,此时该节点仍然参与CAN 通讯,检测到错误时只能发送Error Passive Flag,且错误帧发送完毕重启下一个发送之前有8bits 位时的挂起状态;当Tranmit Error Counter 当前值为255 接着又一个错误被检测到时,CAN 控制器将进入Bus Off Mode,此时该节点与总线完全脱离,整个瘫痪;计数器当前值均小于128 时,CAN 控制器被标识为Error Active。
经典CAN总线错误分析与解决方案

经典CAN总线错误分析与解决方案1、(CAN)总线的常见故障CAN总线错误分析与解决当CAN总线出现故障或数据传输异常时,往往会出现多种奇怪的故障现象,如仪表板显示异常,车辆无法启动,启动后无法熄灭,车辆动力性能下降,某些电控系统功能失等。
这是因为相关数据或(信息)是通过CAN总线传输的,如果传输失败,那么会产生多种连带故障,甚至造成整个(网络)系统瘫痪。
最为常见的故障症状是仪表板的显示异常,如下图所示。
在检修过程中,首先应查看具体的故障症状,根据故障症状和网络结构图来初步分析有可能是哪些原因造成的,然后使用相关的诊断仪器进行诊断,根据诊断结果制定相关检修方案,做到心中有数,目标明确。
接着查找具体的故障部位和原因,同时结合相应的(检测)方法和测量结果找到故障点,从而彻底排除故障。
由于CAN网络采用多种协议,每个控制模块的(端口)在正常的情况下都有标准电压,因此电压测量法可用于判断线路是否有对地或(电源)短路、相线间短路等问题。
为了确定CAN H 或CAN L 导线是否损坏或(信号)是否正常,可以测量其对地电压(平均电压)。
测量点通常在OBD 诊断(接口)处,如下图所示。
诊断接口的6号针脚连接CAN H 导线,14号针脚连接CAN L 导线。
如果诊断接口上连接有两组CAN总线,那么动力CAN总线使用6号和14号针脚,舒适总线使用3号和11号针脚。
诊断接口的针脚含义如下图所示。
正常情况下,当CAN总线唤醒后,CAN H 对地电压约为2.656V,CAN L 对地电压约为2.319V,而且两者相加为4.975V▼正常的CAN H 电压正常的CAN L 电压CAN故障通常的原因有CAN线短路、对电源短路、对地短路、相互接反。
2、CAN H与CAN L短路当CAN H 与CAN L 短路时,CAN网络会关闭,无法再进行(通信)。
会有相应的网络故障码。
CAN H 与CAN L 短路的总线波形如下图所示。
当两者相互短路之后,CAN电压电位置于隐性电压值(约2.5V)。
CAN总线的信号错误

CAN总线的信号错误1. 帧结构1.1 错误帧错误帧用于在接收和发送消息时检测出错误通知错误的帧,它由错误标志和错误界定符构成。
图1 错误帧结构,引自[1]上图1的错误标志包括主动错误标志(6个位的显性位)和被动错误标志(6个位的隐性位)两种。
主动错误标志处于主动错误状态下的单元检测出错误时输出的错误标志。
被动错误标志处于被动错误状态的单元检测出错误时输出的错误标志。
错误界定符由8个位的隐性位构成。
注意上图0~6位的错误标志重叠,这段怎么确定呢?需先介绍2个概念:位填充和错误类型。
1)位填充(Bit Stuffing)位填充是为防止突发错误而设定的功能。
当同样的电平持续5位则添加一个位的反型数据位:图2 位填充示意,引自[1]注意:位填充作用范围为SOF-CRC段机间的数据。
2) 错误类型错误类型有5种,如下图3所述。
图4为CRC错误示意。
图3 错误类型描述,引自[1]图4 CRC验证示意,引自[2]针对上述位错误再做说明(引自[3]):所谓“发出的电平与从总线上回读的电平不一致”,指的就是节点向总线发出隐性位,却从总线上回读到显性位或者节点向总线发出显性位,却从总线上回读到隐性位这两种情况。
有三种例外情况不属于位错误:在仲裁区,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示该节点仲裁失败;在ACK槽,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示,该节点当前发送的这一帧报文至少被一个其它节点正确接收;一个节点发送被动错误标志,该节点向总线发送连续六个隐性位(被动错误标志)却回读到显性位,不认为是位错误。
因为被动错误标志是六个连续的隐性位,所以在总线上按照线与机制,有可能这六个连续隐性位被其它节点发送的显性电平覆盖。
3)错误帧发送检查到错误后,什么时候发送错误帧呢?按照CAN协议的规定:•位错误、填充错误、格式错误、ACK错误。
在错误产生的那一位的下一位开始发送错误帧。
CAN总线的通信错误及其处理

CAN总线的通信错误及其处理在CAN中存在5种错误类型,它们相互并不排斥,下面容易介绍一下它们的区分、产生的缘由及处理办法。
位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平与送出的电平不同时9则在该位时刻检测到一个位错误。
但是在仲裁区的填充位流期偶尔应答间隙送出隐性位而检测到显性位时,不认为是错误位。
送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。
填充错误:在用法位填充办法举行编码的报文中,浮现了第6个延续相同的位电平常,将检测出一个填充错误。
CRC错误:CRC序列是由发送器CRC计算的结果组成的。
接收器以与发送器相同的办法计算CRC。
假如计算的结果与接收到的CRC序列不同,则检测出一个CRC错误。
形式错误: 当固定形式的位区中浮现一个或多个非法位时,则检测到一个形式错误。
应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。
检测到出错条件的节点通过发送错误标记举行标定。
当任何节点检测出位错误、填充错误、形式错误或应答错误时,由该节点在下一位开头发送出错误标记。
在中,任何一个单元可能处于下列3种故障状态之一:错误激活状态(ErrorActive)、错误认可状态(Error Pasitive)和总线关闭状态(Bus off)。
错误激活单元可以照常参加总线通信,并且当检测到错误时,送出一个活动错误标记。
错误认可节点可参加总线通信,但是不允许送出活动错误标记。
当其检测到错误时,只能送出认可错误标记,并且发送后仍为错误认可状态,直到下一次发送初始化。
总线关闭状态不允许单元对总线有任何影响。
为了界定故障,在每个总线单元中都设有2个计数:发送出错计数和接收出错计数。
这些计数根据下列规章举行。
(1)接收器检查出错误时,接收器错误计数器加1,除非全部检测错误是发送活动错误标记或超载标记期间的位错误。
(2)接收器在送出错误标记后的第一位检查出显性位时,错误计数器加8。
浅析CAN总线错误分析与解决

浅析CAN总线错误分析与解决CAN节点数据收发过程了解CAN节点在总线上数据上的收发过程很重要,之前的一篇文章讲解了一些CAN总线的错误处理机制,但是那些都是理论上的东西,如果不深入了解CAN总线上的数据收发过程,理解那些理论的东西难免有些晦涩。
我们知道CAN总线上的每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。
CAN信息发送成功后,在这个间隙内,接收节点可以准备要回复的信息,也就是把应答场填充为显性0,在发送时其为隐性1应答过程可能如下:当信息传输到ACK前的Del 时,可以认为信息已经传输完毕,接收节点也接收到了足够的信息来检测接收的信息是否正确,所以这时接收节点就会检测信号是否正确,如果正确,就将ACK置位为显性0,注意这时,发送节点因为还在发送而接收节点又将ACK信息置位为1,所以它就会在回读时检测到ACK为0,判断接收成功。
注意:这其中有个接收节点用显性覆盖隐性---覆盖ACK位的过程,覆盖+回读。
ACK前后各加一个Del,就是为了考虑到时间误差,让接收节点有足够的时间对ACK确认。
这个过程说明,CAN发送是个双向互动的过程,发送节点一边发送,一边对节点进行回收确认数据正确,而接收节点也时刻接收,并在正确的时间将ACK设置为1。
CAN总线错误CAN总线错误分别有发送和接收错误计数,计数达到一定的累计以后就会产生CAN BUS OFF,这说明CAN总线上出现了严重的错误。
如下图CAN总线产生错误后的状态转换机制:如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源。
CAN总线分析的一些工具和文档:CAN分析仪或者逻辑分析仪数字示波器相关的软件debug工具CAN控制器芯片数据手。
CAN笔记

CAN总线活动讲座十:CAN总线基础扫盲讲座/html/41/n-41.htmlCAN总线学习专区/html/6/category-catid-6.html1、CAN协议(Conroller Area Network Protocol)为Robert Bosch公司开发(1982年),最初应用于汽车内部网络的通讯。
CAN通讯具有严格的错误检测机制、高传输速率,兼低成本、易于实施,特别适合节点之间关键数据传输的小型嵌入式网络通讯;2、CAN网络各节点平等竞争,无所谓主从,CAN通讯基于生产/消费者模型,一个节点生产(发送)的数据可同时为网络上的一个或几个节点同时消费也即接收(本人强烈鄙视某些教科书上将CAN网络描述为多主方式!!);3、CAN协议严格的规范了OSI模型中的数据链路层,并未对物理层作出强硬的约束,因此,CAN帧msg可传输在各种物理介质上,比较常见的为双绞线信号传输;4、CAN总线上的逻辑电平:CAN-bus采用差分电压信号驱动,用显性电平(逻辑0)、隐性电平(逻辑1)标识,当CAN-bus表现为显性时,CAN-bus为差分电压驱动状态,CANL电平为“Gnd”偏上,CANH电平为“Vcc”偏下;当CAN-bus表现为隐性状态时,CAN-bus为未驱动空闲状态,此时CANL、CANH电平均为“Vcc”的一半,比如:假设Gnd=0V,Vcc=5V,则C ANH=CANL=2.5V。
总线上的先行隐性电平会被显性电平所改写;5、CAN-bus上的位流序列:仲裁场-CANID最高位最先发送;数据场-Data0最先发送,Data 7最后传输,对应每一个字节,高位msb将会先发送;位填充规则:位流序列中一旦出现五个连续的显性位将插入一个隐性位,如下图示;同时位流序列中一旦出现五个连续的隐性位将插入一个显性位。
位编码规则:1、错误帧和过载帧形式固定,并不通过位填充编码;2、数据帧或远程帧的CRC界定符、应答场、帧结束等位场形式固定,不通过位填充编码;3、数据帧或远程帧的帧起始、仲裁场、控制场、数据场、CRC序列等位场,均通过位填充规则编码。
can通讯故障解决方法

can通讯故障解决方法全文共四篇示例,供读者参考第一篇示例:CAN通讯故障是在现代汽车和其他机械设备中常见的问题,它可能会导致车辆或设备失去信号,甚至引发更严重的故障。
及时发现并解决CAN通讯故障至关重要。
在本文中,我们将探讨一些常见的CAN 通讯故障原因,并提供一些解决方法。
让我们了解一下CAN通讯系统。
CAN(Controller Area Network)是一种用于在不同模块之间传输数据的网络协议,它通常用于汽车和工业设备等领域。
CAN总线上的每个模块都有一个唯一的地址,通过这个地址可以将数据发送到特定的模块。
如果CAN通讯出现故障,可能会导致模块间无法正确传输数据,进而影响设备或车辆的正常工作。
接下来,我们将介绍一些常见的CAN通讯故障原因及解决方法:1. 接触不良:CAN总线上的连接器或接头可能会出现接触不良,导致数据无法正确传输。
解决方法是检查连接器是否紧固,清洁连接器,并确保连接器的引脚没有腐蚀。
2. 电源问题:如果CAN通讯模块缺乏电源供应,可能会导致通讯中断。
解决方法是检查电源线路是否正常,确保电源供应稳定。
3. 线路故障:CAN通讯线路可能会出现短路、断路或电磁干扰等问题,导致通讯故障。
解决方法是使用多用表检测线路的连通性,修复断路或短路问题,并注意避免电磁干扰。
4. 节点故障:CAN总线上的某个节点可能会故障,导致整个通讯系统受影响。
解决方法是逐个检查各个节点的工作状态,及时更换故障节点。
5. 软件问题:CAN通讯模块的软件可能会出现问题,导致通讯故障。
解决方法是更新软件版本,或者尝试重新设置CAN通讯模块。
及时发现并解决CAN通讯故障对于保障设备或车辆的安全和稳定运行至关重要。
通过定期检查和维护CAN通讯系统,可以有效预防故障的发生,并确保设备或车辆的正常工作。
希望本文能帮助读者更好地了解和解决CAN通讯故障问题。
【文章结束】.第二篇示例:CAN通讯故障解决方法CAN(Controller Area Network)通讯是一种广泛应用于汽车产业的网络通讯协议,可以实现车辆各个控制单元之间的快速、可靠的数据交换。
CAN总线局部错误及全局通知分析

CAN 总线局部错误及全局通知分析
局部错误,全局通知是CAN 总线错误类型中较为典型的一种,如何通
过错误报文及波形快速定位错误原因呢?本文结合现场实测案例简要分析。
一、CAN 总线错误简介
在CAN 总线中存在5 种错误类型,如图1 所示:它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因。
图1 5 种错误类型
位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平和送出的电平不同时,则在该位时刻检测到一个位错误。
但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。
填充错误:在使用位填充方法进行编码的报文中(帧起始到CR 序列),出现了第6 个连续相同的位电平时,将检测出一个填充错误。
CRC 错误:CRC 序列是由发送器CRC 计算的结果组成的。
接收器以和发送器相同的方法计算CRC。
如果计算的结果和接收到的CRC 序列不同,则检测出一个CRC 错误。
格式错误:当固定格式的位区中(如CRC 认可位、ACK 认可位、帧结束位)出现一个或多个非法位时,则检测到一个形式错误。
应答错误:在应答间隙,每一个接收端都会向总线回一个显性位,如果发送端在ACK 场检测不到显性位应答,将产生应答错误。
当出现5 种错误类型之一时,发送或接收节点将发送错误帧。
其中错误帧又分主动错误帧和被动错误帧。
浅析CAN总线错误分析与解决

浅析CAN总线错误分析与解决浅析CAN总线错误分析与解决CAN节点数据收发过程了解CAN节点在总线上数据上的收发过程很重要,之前的一篇文章讲解了一些CAN总线的错误处理机制,但是那些都是理论上的东西,如果不深入了解CAN总线上的数据收发过程,理解那些理论的东西难免有些晦涩。
我们知道CAN总线上的每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。
CAN信息发送成功后,在这个间隙内,接收节点可以准备要回复的信息,也就是把应答场填充为显性0,在发送时其为隐性1应答过程可能如下:当信息传输到ACK前的Del 时,可以认为信息已经传输完毕,接收节点也接收到了足够的信息来检测接收的信息是否正确,所以这时接收节点就会检测信号是否正确,如果正确,就将ACK置位为显性0,注意这时,发送节点因为还在发送而接收节点又将ACK信息置位为1,所以它就会在回读时检测到ACK为0,判断接收成功。
注意:这其中有个接收节点用显性覆盖隐性---覆盖ACK位的过程,覆盖+回读。
ACK前后各加一个Del,就是为了考虑到时间误差,让接收节点有足够的时间对ACK确认。
这个过程说明,CAN发送是个双向互动的过程,发送节点一边发送,一边对节点进行回收确认数据正确,而接收节点也时刻接收,并在正确的时间将ACK设置为1。
CAN总线错误CAN总线错误分别有发送和接收错误计数,计数达到一定的累计以后就会产生CAN BUS OFF,这说明CAN总线上出现了严重的错误。
如下图CAN总线产生错误后的状态转换机制:如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源。
CAN总线分析的一些工具和文档:CAN分析仪或者逻辑分析仪数字示波器相关的软件debug工具CAN控制器芯片数据手。
can通讯故障解决方法

can通讯故障解决方法
通讯故障可能会出现在各种不同的设备和系统中,包括手机、
电脑、网络设备等。
解决通讯故障需要根据具体情况采取不同的方法。
以下是一些常见的通讯故障解决方法:
1. 检查网络连接,首先要确保设备已经连接到稳定的网络。
如
果是无线网络,可以尝试重新连接或者移动到信号覆盖更好的区域。
如果是有线网络,检查网线是否插好,并且端口是否正常工作。
2. 重启设备,有时候设备出现通讯故障可能是由于临时的软件
问题,重启设备可以帮助清除这些问题。
重启后再次尝试进行通讯
操作。
3. 检查设置,确保设备的通讯设置正确无误,比如Wi-Fi密码
输入正确、手机数据网络开启、通讯应用的权限设置等。
4. 更新软件,有时通讯故障可能是由于软件版本过旧导致的,
可以尝试更新设备上的操作系统或者通讯应用程序至最新版本。
5. 检查硬件,如果是通讯设备硬件故障,比如网卡、路由器、
手机芯片等出现问题,可能需要联系厂家进行维修或更换。
6. 排除干扰,有时候其他无线设备或者电磁干扰会影响通讯质量,可以尝试将设备移动到干扰较小的位置进行通讯。
7. 重置网络设置,在一些情况下,重置设备的网络设置可以帮助解决通讯故障,但需要注意重置网络设置会清除设备上保存的所有网络信息,包括Wi-Fi密码等。
总的来说,解决通讯故障需要根据具体情况采取不同的方法,有时可能需要结合多种方法来解决问题。
如果以上方法都无法解决通讯故障,建议联系设备厂家或者专业人士寻求帮助。
CAN总线错误及故障处理

致远电子
传递价值 成就你我
http://www.embedcontrol.
com
错误中断处理(SJA1000)
总线错误入口
inline void KSJA1000T::INT_BusError(void)
{
错误帧的组成
错误帧结构(续)
6 Error Flag
8
Error Delimiter
0 0 0 0 0 0 0 0 0 0 0 01 1 11 1 1 1 1
1
6-12 bits
Superposition of Error Flags
致远电子
传递价值 成就你我
超载帧
http://www.embedcontrol. com
wwwembedcontrolcom致远电子总线关闭模式任意一个错误计数器超越255导致控制器进入总线关闭模式在总线故障清除控制器检测到总线上连续的11位隐性位发生128次后总线关闭的节点将返回到错误激活状态错传递价值 成就你我
http://www.embedcontrol.
com
基于信息帧级别的错误检测
帧格式错误检测,当接收端在以下位置检 测到非法的位时格式错误标记
1. CRC认可位
2. ACK认可位
3. 帧结束位
致远电子
传递价值 成就你我
http://www.embedcontrol.
com
基于信息帧级别的错误检测
m_rCommand=(UCHAR)CMD_CLR_DATA_OVER;
}
m_TraceCode |= INT_DATA_OVERFLOW; }
必看丨三个CAN网络故障分析

必看⼁三个CAN⽹络故障分析在8⽉23⽇的每周⼀课带领⼤家⼀起认识了什么是CAN通讯、CAN⽹络的⼯作原理、CAN⽹络的组成、简单介绍了CAN⽹络在卡车上的应⽤。
本期⼩轨将带领⼤家⼀起学习⼀下CAN⽹络的故障分析与排除。
CAN总线诊断基础01总线系统⼯作条件★电源供给正常、⽆虚接★地线正常★唤醒电源正常★CAN线正常★终端电阻正常★节点正常★控制模块硬件正常★控制模块软件正常★各接插件、接触端⼦正常02哪些情况查CAN⽹络?★报出CAN通讯相关、或者数据错误之类的故障★仪表不显⽰、或显⽰混乱★⽆法通讯★车⾝灯光系统异常★⽆法定位、⽆法起动★其它CAN相关故障03节点的确认★仪表不显⽰、或显⽰混乱➩仪表★车⾝灯光系统异常➩ CBCU/灯光控制模块★⽆法换档➩ TCU★电动车窗⽆反应➩车门控制器★⽆法起动➩ ECU/VCU/CBCU★防盗开启➩防盗模块/GPS/GPRS★空调⽆反应➩空调控制模块04指⽰灯常见CAN故障码的分析CAN接受侦AT101超时错误(博世EDC17系统)故障原理:1、NOx传感器通过CAN总线,将监测的氮氧浓度时时发送给ECU。
如果ECU 超过0.5秒没有接收到NOx浓度信号,就会报出此故障;2、没有接受到的原因⽆⾮是发送器、传输媒介、接收器故障。
基本上都是:传输媒介故障导致,也就是NOx传感器的线束、接插件故障导致;极少数情况是,NOx传感器故障。
故障影响:影响NOx浓度的监测;发动机故障灯点亮、发动机限扭。
常见原因:1、NOx传感器的4根线束开路、短路,或接插件故障:检查NOx传感器的接插件及4根线束,是否存在开路、短路故障,电压是否正常。
其中NOx传感器接插件1号针脚是正极24V,2号针脚是负极0V,3号针脚是CAN低2.2V左右,4号针脚是CAN⾼2.8V左右。
如电压不符,请排查原因;2、极少数可能NOx传感器损坏:也可能NOx传感器损坏,但NOx传感器售价较⾼,最后考虑更换测试。
can错误类型和界定

can错误类型和界定9.2.4 错误类型和界定1. 错误类型有以下5种不同的错误类型(这5种错误不会相互排斥)(1)位错误(Bit Error)节点在发送位的同时也对总线进行监视。
如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。
但是在仲裁场(Arbitration Field)的填充位流期间或应答间隙(ACK Slot)发送一“隐性”位的情况是例外的——此时,当监视到一“显性”位时,不会发出位错误。
当发送器发送一个“认可错误”标志但检测到“显性”位时,也不视为位错误。
(2)填充错误(Stuff Error)如果在使用位填充法进行编码的报文中,出现了6个连续相同的位电平时,将检测到一个填充错误。
(3)CRC错误(CRC Error)CRC序列包括发送器的CRC计算结果。
接收器计算CRC的方法与发送器相同。
如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。
(4)格式错误(Form Error)当一个固定形式的位场含有1个或多个非法位,则检测到一个格式错误。
(注意:接收器的帧末尾最后一位期间的显性位不被当作帧错误)(5)应答错误(Acknowledgment Error)只要在应答间隙期间所监视的位不为“显性”,则发送器会检测到一个应答错误。
2. 错误信号的发出检测到错误条件的节点通过发送错误标志指示错误。
对于“错误激活”的节点,错误信息为“激活错误”标志”;对于“错误认可”的节点,错误信息为“认可错误”标志。
节点检测到无论是位错误、填充错误、形式错误,还是应答错误,这个节点会在下一位时发出错误标志信息。
如果检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(除非其他错误条件引起的错误标志已经开始)。
3. 故障界定(1)CAN的3种故障状态①错误激活(Error Active)“错误激活”的节点可以正常地参与总线通信,并在错误被检测到时发出“激活错误”标志。
CAN错误识别及处理.

Thank You
比特错误
监视到总线发送出的比特接收时逻辑值与发送时不一致。 仲裁字段(同时多次读取时覆盖隐性比 特)和确认时段(通过另一个总线设备的接收确认覆盖由发送器设置的隐性比特)除外。
比特填充错误
识别到5个以上连续相同的比特。帧结束区域除外。
CAN错误识别
CAN错误识别
CRC错误 所发送的校验码和与计算出的校验码不一致。 格式错误 数据格式损坏,例如未将CRC定界符识别为隐性比特。 确认错误 发送器在确认时段中没有接收到低位启用(显 性)比特,也就是说其他总线设备未将信息识别为正确。
CAN错误处理
3.CAN错误处理 如果一个或多个总线设备多次干扰系统且发送错误或接收错误的错误计数器达到规定限值,就会 将这个或这些设备与总线完全断开。在这种总线关闭状态下,这些控制单元无法发送或接收信息。
■ 错误主动与错误被动状态之间的过渡通过CAN 控制器自动实现。只有通过相应的操作,例如软件 或硬件复位,才能撤消总线关闭状态。
《总线与诊断系统》课程
CAN错误识别及处理
CAN错误识别
1.传输错误的因素
接触不良、短路、软件错误或者外部强电磁场可能会引起数据传输时的错误。
短路
外ቤተ መጻሕፍቲ ባይዱ强电磁场
CAN错误识别
2.CAN错误识别
每个CAN节点发送信息的同时监测总线电平, 此时会立即识别出所发送比特与所接收比特是否一
致。此外接收器还检查总线信号的逻辑性。 因此CAN可以识别出五种类型的错误。
CAN错误处理
3.CAN错误处理
某个CAN节点识别到的每个错误都立即通过一 条错误信息(错误帧)提供给所有其他节点。因 此 所有总线设备不再将此前接收的信息继续发送给应用程序微控制器。在此通过自动重复传输有 错误的信息来校正错误。
干货知识!CAN详解,错误数据格式坑优先级电阻报文数量!

干货知识!CAN详解,错误数据格式坑优先级电阻报文数量!什么是CAN(控制器局域网)控制器局域网 (Controller Area Network,简称CAN或者CAN bus) 是一种功能丰富的车用总线标准。
被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。
它基于消息传递协议,设计之初在车辆上采用复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。
CAN创建在基于信息导向传输协定的广播机制(Broadcast Communication Mechanism)上。
其根据信息的内容,利用信息标志符(Message Identifier,每个标志符在整个网络中独一无二)来定义内容和消息的优先顺序进行传递,而并非指派特定站点地址(Station Address)的方式。
因此,CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。
除此之外,消息的传递不基于特殊种类的节点,增加了升级网络的便利性。
优势及特点特点:1.CAN是一个用于连接电子控制单元(ECU)的多主机串行总线标准。
电子控制单元有时也被称作节点。
CAN网络上需要至少两个节点才可进行通信。
节点的复杂程度可以只是简单的输入输出设备,也可以是包含有CAN交互器并搭载了软件的嵌入式组件。
所有节点通过两根平行的总线连接在一起。
两条电线组成一条双绞线,并且接有120Ω的特性抗。
2.数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序。
3.多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞。
4.通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M)。
5.CAN总线传输介质可以是双绞线,同轴电缆,CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络上搜到的CAN错误笔记CAN笔记再再续1、CAN错误检测(Error Detection)CAN网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU的干涉除非错误累计该发送器退隐(Bus Off)。
CAN控制器可检测如下五种错误:√ 位错误(Bit Check Error)发送器在发送比特流的同时也对发出的比特流采样回收,若送出的bit与所期待的bit不合,则会检测到一个Bit Check Error;√ 位填充错误(Bit Stuff Error)在需要执行位编码规则的位流序列中检测到第6个连续的极性相同的位序流时,则检测到一个Bit Stuff Error;√ CRC 错误(CRC Error)发送端送出的CRC序列由发送器算出,接收器执行同样的CRC算法,若计算结果与接收到的CRC序列不符,一个CRC Error被检测到,由发送端送出;√ 帧格式错误( Check Error)当一个固定形式的位场含非法位,则检测到一个 Check Error(接收端检测到帧结束最后一位为显性时帧错误忽略);√ 应答错误(Acknowledgment Error)ACK SLOT采样为隐性,则检测到一个Acknowledgement Error;2、CAN错误界定(Error Confinement)CAN控制器内置两个错误计数器:Receive Error Counter及Tranmit Error Counter(错误计数器的计数规则后附)。
当某个计数器的当前值达到128时,CAN控制器将进入“Error Passive Mode”,此时该节点仍然参与CAN通讯,检测到错误时只能发送“Error Passive Flag”,且错误帧发送完毕重启下一个发送之前有8bits位时的挂起状态;当Tranmit Error Counter当前值为255接着又一个错误被检测到时,CAN控制器将进入“Bus Off Mode”,此时该节点与总线完全脱离,整个瘫痪;计数器当前值均小于128时,CAN控制器被标识为“Error Active Mode”,CAN节点可正常通讯并检测到错误时发送“Error Active Flag”。
这三种状态之间关系为:3、LPC2294中的CAN控制器错误处理LPC2294内置的CAN控制模块完全符合CAN Spec 2.0B,当CAN控制器被迫进入BusOff状态后:CANGSR寄存器中的BS位置位;CANICR中的BEI位置位,若CANIER寄存器的 BEIE使能,将引发CAN中断;CANMOD中的RM置位,CAN控制器处于复位状态;同时发送错误计数器被设置为127,接收错误计数器清零。
CAN 控制器进入BusOff状态后必须由软件复位RM位,以恢复通讯;RM清零进入Normal Operation状态后,当检测到总线上11bits的连续隐性位流出现128次之后,发送错误计数器清零,CANGSR中的BS、ES位清零,同时若 中断允许,将产生中断,CAN控制器重返CAN通讯。
4、CAN2.0B(Active)规范的错误计数器的计数规则:1. When a RECEIVER detects an error, the RECEIVE ERROR COUNT will be increased by 1, except when the detected error was a BIT ERROR during the sending of an ACTIVE ERROR FLAG or an OVERLOAD FLAG.2. When a RECEIVER detects a ’dominant’ bit as the first bit after sending an ERROR FLAG the RECEIVE ERROR COUNT will be increased by 8.3. When a TRANSMITTER sends an ERROR FLAG the TRANSMIT ERROR COUNT isincreased by 8.Exception 1:If the TRANSMITTER is ’error passive’ and detects an ACKNOWLEDGEMENT ERROR because of not detecting a ’dominant’ ACK and does not detect a ’dominant’ bit while sending its PASSIVE ERROR FLAG.Exception 2:If the TRANSMITTER sends an ERROR FLAG because a STUFF ERROR occurred during ARBITRATION, and should have been ’recessive’, and has been sent as ’recessive’ but monitored as ’dominant’.In exceptions 1 and 2 the TRANSMIT ERROR COUNT is not changed.4. If an TRANSMITTER detects a BIT ERROR while sending an ACTIVE ERROR FLAG or an OVERLOAD FLAG the TRANSMIT ERROR COUNT is increased by 8.5. If an RECEIVER detects a BIT ERROR while sending an ACTIVE ERROR FLAG or an OVERLOAD FLAG the RECEIVE ERROR COUNT is increased by 8.6. Any node tolerates up to 7 consecutive ’dominant’ bits after sending an ACTIVE ERROR FLAG, PASSIVE ERROR FLAG or OVERLOAD FLAG. After detecting the 14th consecutive ’dominant’ bit (in case of an ACTIVE ERROR FLAG or an OVERLOAD FLAG) or after detecting the 8th consecutive ’dominant’ bit following a PASSIVE ERROR FLAG, and after each sequence of additional eight consecutive ’dominant’ bits every TRANSMITTER increases its TRANSMIT ERROR COUNT by 8 and every RECEIVER increases its RECEIVE ERROR COUNT by 8.7. After the successful transmission of a message (getting ACK and no error until END OF is finished) the TRANSMIT ERROR COUNT is decreased by 1 unless it was already 0.8. After the successful reception of a message (reception without error up to the ACK SLOT and the successful sending of the ACK bit), the RECEIVE ERROR COUNT is decreased by 1, if it was between 1 and 127. If the RECEIVE ERROR COUNT was 0, it stays 0, and if it was greater than 127, then it will be set to a value between 119 and 127.9. A node is ’error passive’ when the TRANSMIT ERROR COUNT equals or exceeds 128, or when the RECEIVE ERROR COUNT equals or exceeds 128. An error condition letting a node become ’error passive’ causes the node to send an ACTIVE ERROR FLAG.10. A node is ’bus off’ when the TRANSMIT ERROR COUNT is greater than or equal to 256.11. An ’error passive’ node becomes ’error active’ again when both the TRANSMIT ERROR COUNT and the RECEIVE ERROR COUNT are less than or equal to 127.12. An node which is ’bus off’ is permitted to become ’error active’ (nolonger ’bus off’) with its error counters both set to 0 after 128 occurrances of 11 consecutive ’recessive’ bits have been monitored on the bus.Note:An error count value greater than about 96 indicates a heavily disturbed bus. It may be of advantage to provide means to test for this condition.5、未完待续...数据帧,远程帧相关的总结3月份的时候就想把这一份总结给晒出来,但是由于是图片的形式总结, 不太好上传,一直拖到现在(其实是自己比较懒惰-_-)错误帧相关的总结过载帧相关总结帧间空间相关的总结位定时,位同步的总结。