总线关闭(bus off)状态下CAN节点的恢复过程分析与测试

发布者:RadiantSmile最新更新时间:2020-08-04 来源: EEWORLD关键字:AN控制器  编程  CAN  CAN总线  MCU 手机看文章 扫描二维码
随时随地手机看文章

总线关闭(bus off)是CAN节点比较重要的错误处理机制。那么,在总线关闭状态下,CAN节点的恢复流程是怎样的?又该如何理解节点恢复流程的“快恢复”和“慢恢复”机制?本文将为大家详细分析总线关闭及恢复的机制和原理。


一、 故障界定与总线关闭状态

为了避免X某个设备因为自身原因(例如硬件损坏)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其它正常节点通信,CAN网络具有严格的错误诊断功能,CAN通用规范中规定每个CAN控制器中有一个发送错误计数器和一个接收错误计数器。根据计数值不同,节点会处于不同的错误状态,并根据计数值的变化进行状态转换,状态转换如下图所示。

图1节点状态转换图情形1
 

以上三种错误状态表示发生故障的严重程度,总线关闭是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或应答总线上的报文,也就意味着不能再对总线有任何影响。

状态跳转和错误计数的规则使得节点在发生通信故障时有了较好的自我错误处理和恢复机制,从一种较严重的错误状态跳转到另一种严重性相对较低的状态,本质上就是一种恢复过程。图1所呈现的转换过程是CAN通用规范所要求的,我们从设备供应商买回来的CAN控制器已经把这些功能固化在硅片之中。

在通信过程中,错误主动和错误被动两种状态下节点的恢复过程一般不需要MCU进行额外的编程处理,直接使用CAN控制器固有功能即可。但对于总线关闭状态,往往不直接使用CAN控制器固有的恢复过程,而是对其进行编程控制,以实现“快恢复”和“慢恢复”机制。

注:

1、由于篇幅有限,关于错误计数的详细规则以及各状态下节点的具体特性不在本文进行讨论,读者可以查阅CAN的相关协议规范。

2、本文的“CAN控制器”是指已经实现了CAN通用协议物理层数据链路层所要求的功能和特性的器件,如SJA1000;而“节点”是指把CAN控制器与MCU、收发器等相关器件进行整合开发出来的具有一定功能的CAN节点。

二、 为什么需要对总线关闭状态的节点实现“快恢复”和“慢恢复”策略?

当节点进入总线关闭状态后,如果MCU仅是开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信,在实际的CAN通信总线中,这一条件是很容易达到的。以125K的波特率为例,128*11*(1/125000)= 0.011264s。这意味着如果节点所在的CAN总线的帧间隔时间大于0.011264s,节点在总线空闲时间内便可轻易恢复通信。我们已经知道,当进入总线关闭状态时,节点已经发生了严重的错误,处于不可信状态,如果迅速恢复参与总线通信,具有较高的风险,因此,在实际的应用中,往往会通过MCU对CAN控制器总线关闭状态的恢复过程进行编程处理,以控制节点从总线关闭状态恢复到错误主动状态的等待时间,达到既提高灵活性又保证节点在功能上的快速响应性的目的。具体包括“快恢复”和“慢恢复”策略,两种策略一般同时应用。

通过以上的讨论,我们可以知道,节点进入总线关闭状态后,存在以下几种恢复情况:

(1)MCU仅开启CAN控制器的自动恢复功能,节点只需检测到128次11个连续的隐性位便可以恢复通信,恢复过程如图1所示。

(2)MCU没有开启CAN控制器的自动恢复功能,也不主动干预总线关闭错误,节点将一直无法“自动”恢复总线通信,只能通过重新上电的方式使节点恢复, 恢复过程如图2所示。

图2 节点状态转换图情形2
 

(3)MCU对CAN控制器的恢复过程进行编程处理,这时,节点的恢复行为由具体的编程逻辑决定,各厂家普遍采用了先“快恢复”后“慢恢复”的恢复策略,恢复过程如图3所示。

图3 节点状态转换图情形3
 

三、MCU如何实现“快恢复”和“慢恢复”?

MCU编程实现总线关闭“快恢复”和“慢恢复”的一般过程可用以下流程图描述:

图4  MCU实现总线关闭恢复流程
 

节点以正常发送模式发送报文的过程中,如果出现了发送错误,发送错误计数会增加,只要发送错误计数没有超过255, CAN控制器便会自动重发报文,如果出现多次发送错误,使发送错误计数累加超过255,则节点跳转为总线关闭状态。MCU能够第一时间知道节点进入了总线关闭状态(例如在错误中断处理逻辑中查询状态寄存器的相应位),这时MCU控制CAN控制器进入“快恢复”过程,即控制CAN控制器停止报文收发,并进行等待,计时达到需要的时间T1(如100ms)后,MCU重新启动恢复CAN控制器参与总线通信,这样便完成了一次“快恢复”过程。

节点每进入一次“快恢复”过程时,MCU会对此进行计数,当节点“快恢复”计数达到设定的值N(如5次),则后续再次进入总线关闭状态时MCU把恢复总线通信的等待时间T2进行延长(如1000ms),这样便实现了“慢恢复”过程。“快恢复”和“慢恢复”过程的主要区别就在于恢复节点参与总线通信的等待时间的不同。

通过MCU对于总线关闭后的恢复行为进行编程控制,实际上是对CAN控制器的错误管理和恢复机制进行了补充,使得总线关闭状态后的恢复过程更加灵活,更能适应实际应用的需要。对于 “快恢复”和“慢恢复”的等待时间,以及“快恢复”计数多少次后进入“慢恢复”过程,不同厂家可根据具体的需求进行编程实现。

四、 实测总线关闭恢复过程

通过广州致远电子有限公司的CAN总线分析仪的流量分析功能,可以很方便分析总线关闭后节点的恢复过程及测试“快恢复”和“慢恢复”的恢复时间。

第一步,连接DUT但先不要上电。按以下配置,使能接收干扰功能,并开启报文读取功能。

图5 功能设置
 

第二步,给DUT上电,并采集一段时间报文,停止采集后使用流量分析功能进行分析。

图7 读取恢复时间
 

至此,我们便可以得出结论:该DUT对总线关闭的恢复过程进行了编程控制,采用了先“快恢复”后“慢恢复”的恢复机制,节点进入总线关闭状态后,进行一次“快恢复”过程,后续进行“慢恢复”过程,两个恢复过程的恢复时间分别为27.5ms和209.5ms。

那么,我们该如何根据所得波形理解该DUT进入总线关闭状态及恢复通信的整个过程呢?
把第一个波形“团”放大得到下图:

图8 放大波形“团”观察
 

可以清晰的看到,波形“团”中包含共32帧CAN报文。把其余各波形“团”放大后也都是包含32帧,这里不再把详细的图片贴出来。

DUT上电后,初始发送和接收错误计数都为0。由于在测试时配置了接收干扰功能,当DUT开始发送报文后,每一帧报文都受到CAN总线分析仪的干扰而出现发送错误,第一次发送时发送错误计数加8,并自动重发,第二次发送时错误计数再加8,直到发送了32次后,发送错误计数大于255,根据图3的错误状态的转换规则,这时DUT跳转为总线关闭状态,MCU控制进入“快恢复”过程同时对“快恢复”次数进行计数,并等待约27ms后,MCU控制DUT从总线关闭状态恢复为错误主动状态,由MCU继续启动发送,由于仍然受CAN总线分析仪的持续干扰,发送32帧后再次进入总线关闭状态,再次执行“快恢复”或“慢恢复”过程,以此类推。

根据流量分析的结果可知,该DUT进入“快恢复”的计数达到1次后便执行“慢恢复”过程,“慢恢复”等待时间约为209ms。

注:

1、干扰的设置可以根据需要设置其他的参数,只要保证能对DUT发送的帧进行干扰使其出现发送错误即可。

2、为了分析完整的总线关闭恢复过程,建议DUT和CAN总线分析仪连接好后,先开启“报文读取”和“接收干扰”功能后再上电DUT。因为这样能确保DUT的接收错误计数和发送错误计数的初始计数都为0。

3、需要对DUT进行连续的干扰,否则DUT恢复后成功发送了报文,“快恢复”次数的计数会递减,这不利于分析DUT总线关闭后的整个恢复行为。 

4、总线关闭后节点的“恢复”是指恢复参与总线的通信,但并不意味着恢复后一定能成功发送或接收报文。如上述案例,DUT恢复通信后由于仍然受CAN总线分析仪的干扰,导致报文发送再次失败。

总结:

在总线关闭状态下,“快恢复”和“慢恢复”不是CAN控制器固有的功能,而是通过MCU的编程逻辑实现的恢复机制,是总线关闭状态下恢复过程的补充,使恢复过程更具有灵活性。


关键字:AN控制器  编程  CAN  CAN总线  MCU 引用地址:总线关闭(bus off)状态下CAN节点的恢复过程分析与测试

上一篇:汽车网络发展解析
下一篇:这个无线BMS车将掀起一场连接革命

推荐阅读最新更新时间:2024-11-03 17:37

基于MSP430单片机的汽车舒适度评价系统设计
引言 随着经济水平的发展,人们对汽车的需求量越来越大。汽车给我们的出行带来了极大方便的同时,也对驾驶及乘坐人员的健康提出了挑战。汽车车厢是一个相对狭小的空间,其内部环境对于驾驶及乘坐人员(尤其是对长时间驾车的驾驶员)的身体健康的影响不容忽略。 加强对汽车舒适度的研究能为改进汽车舒适度提供理论支持。目前,人们对汽车舒适度评价的研究还是很少,无论是理论还是技术方面都还不成熟。提出一套合理的汽车舒适度评价系统的设计方法,将有利于汽车舒适度的提高,也有利于汽车综合性能的提高。在此基础上我们设计了一个基于MSP430单片机的汽车舒适度评价系统,此系统用MSP430系列单片机为系统的硬件核心,通过三种 传感器 (温度传感器,湿度传感器,振动
[单片机]
基于MSP430<font color='red'>单片机</font>的汽车舒适度评价系统设计
51单片机教程(八):图型带字库液晶128×64
简介:上期我向大家介绍了字符型液晶1602的基本功能,并用51单片机的驱动显示,你可以用它表达你的幸运日期或者你喜欢的数字。虽然说1602液晶使用方便,但如果你想用它表达更多的语言,就难以满足要求了。 一、原理简介 我手里的这款128×64液晶内部是以ST7920芯片作为控制器,是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16×16点汉字,和128个16×8点ASCII字符集。可以显示8×4行16×16点阵的汉字。因此利用该液晶模块可以灵活的构成全中文人机交互图形界面,也可完成图形显示。低电压低功耗也是其一显着特点。
[单片机]
51<font color='red'>单片机</font>教程(八):图型带字库液晶128×64
ICL7135的串行采集方式在单片机电压表中的应用
摘要:介绍了对A/D芯片ICL7135进行串行数据采集的具体方法,同时利用该方式结构简单、编程简洁、占用单片机资源少的特点,给出了用ICL7135与AT89C52单片机构成电压表系统的硬件和软件设计方法。 关键词:单片机 ADC 电压表 ICL7135 在常用的A/D转换芯片(如ADC0809、ICL7135、ICL7109等)中,ICL7135与其余几种有所不同,它是一种四位半的双积分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。通常情况下,设计者都是用单片机来并行采集ICL7135的数据,本文介绍用单片机串行方式采集ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。 1
[应用]
单片机实现灵活创新的电表设计
  近年来,市场上固定功能的电表 集成电路 ( IC )不断增多,这使得在电表设计方面保持竞争力变得越来越困难。许多模拟前端(AFE) 电能 计量IC都采用△-∑ ADC,并通过基于ROM的固定功能状态机来计算 功率 输出。这些IC不能进行修改,也不能用于电能 测量 之外的其他功能。   数字计算模块(例如有功功率、视在功率和RMS电流与电压)的功能都是固定的,以固定频率运行,具有固定的输出精度。虽然这些器件可以良好地执行它们的固定功能,但这种方案对于设计师来说不够灵活。      图1a 典型的基于ROM的电表设计      图1b 消除电能计量IC和闪存 MCU 之间的界线   以前,IC制造商只提供基
[电源管理]
<font color='red'>单片机</font>实现灵活创新的电表设计
三菱PLC基本指令编程举例
   本文以几个具体的例子说明基本指令的应用。     一、保持电路     二、延时断开电路     三、分频电路     四、振荡电路     五、报警电路     六、十字路口交通灯控制     编程规则与典型程序块     利用梯形图编程与采用继电器控制电路有些相似,因此,很多人习惯采用梯形图编程。梯形图编程有些基本要求和规则,也有一些规律可循。     2.1梯形图设计的基本原则     PLC编程应注意以下基本原则。     (1)外部输入/输出继电器、内部继电器、定时器、计数器等软元件的触点可重复使用,没有必要特意采用复杂程序结构来减少触点的使用次数。     (2)梯形图每
[嵌入式]
C8051F064单片机在远端测控装置中的应用
  本文介绍了 C8051F 系列单片机在远端测控装置中的应用,给出了整个系统的结构,包括硬件配置和系统网络构成,对一些技术问题也做出了详尽的说明。   一 系统简介   远端测控装置是一种现场可编程的控制器,它能完成数据的采集控制,而通过远程通信的方式(如电台、CDMA、拨号等)将数据上传至中心站或接收中心站的遥控指令。它往往被安装在比较分散、环境比较恶劣、无电源保障(经常断电或使用太阳能)且无人值守的地方,因此它运行的可靠性和功耗就显得尤为重要了。C8051F单片机的工业级工作温度(-40℃~+84℃)、低电压、低功耗、自带看门狗和多复位源等特点满足了此系统的要求。   基于此系统的定位,选用C8051F064做主控部分
[单片机]
C8051F064<font color='red'>单片机</font>在远端测控装置中的应用
车规级MCU进入[大混战]时代
ICInsights预测从2021年到2026年,全球 MCU 市场规模的复合增长率约为6.7%,在2026年达到272亿美元。 随着汽车智能化趋势推进,汽车功能增加与电子架构的集成化推动单车MCU价值量的提升,促使汽车从分布式架构向集成化域架构的转变,将进一步促进车用MCU的需求增长。 MCU市场三足鼎立,国产率不足10% 根据Yole最新对全球MCU市场的数据分析:在整个MCU市场中,2022年排名前十的玩家分别是英飞凌、瑞萨、恩智浦、 意法半导体 、Microchip、德州仪器、三星电子、新唐科技、SiliconLabs和华大半导体。 前十大MCU厂商中唯一一家大陆厂商就是华大半导体。 而剩下5.5%的全球市
[汽车电子]
车规级<font color='red'>MCU</font>进入[大混战]时代
STM32H7系列微控制器全新Arm 强化互联智能设备保护功能
意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM),今天发布了平台安全架构(PSA)。 PSA是实现同级最佳的普适网络安全的关键技术。意法半导体的STM32H7高性能微控制器采用与PSA框架相同的安全概念,并将这些概念与 STM32产品家族 的强化安全功能和服务完美融合。 个人用户和组织机构越来越依赖通过互联电子产品管理时间,监测健康状况,处理社交活动,享受或提供服务,提高工作效率。防止与未经授权的设备与互动,对于保护设备身份、个人信息、实体资产和知识产权极其重要。随着物联网的规模和普及率提高,公民安全和国家安全均受到威胁。设备厂商为打击黑客层出不穷的入侵手段而必须不断地创新安保系统,P
[嵌入式]
STM32H7系列<font color='red'>微控制器</font>全新Arm 强化互联智能设备保护功能
小广播
最新汽车电子文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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