您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
   
 
 订阅
一文详解Autosar CAN Bus off
 
作者:汽车小Z
   次浏览      
 2024-9-6
 
编辑推荐:
本文主要介绍了Autosar CAN Bus off相关内容。希望对您的学习有所帮助。
本文来自于微信公众号谦益行,由火龙果软件Linda编辑、推荐。

1.总线错误

1.1 电平

作为基础知识。

CAN总线的电平分为显性电平与隐性电平。CAN总线的差分电平分为显性电平和隐性电平,显性电平的逻辑为0,隐性电平的逻辑为1,在同一个位时间,一个节点发显性电平,另一个节点发隐性电平,则总线电平为显性电平,这是CAN总线仲裁的基础。就是像有些书上写的线与的概念,如图1所示,很好理解,1&0=0,显性能覆盖隐性。

1.2 错误帧

错误帧有下面五种情况

1.2.1 格式错误

很好理解,报文的帧有着严格的格式。如下图。果然检测到格式不一样了。比如缺少了,长了,就会有问题

1.2.2 CRC 错误

注意这里的CRC 和 CAN 报文内部用户自己定义的CRC 不是一个东西。这是链路层使用的CRC。如下图所示,链路层会自己计算。

1.2.3 ACK 错误

前面我们直到显性会抑制隐形,这里就用到了,在发送的时候,发送端会在ACK 位置置隐形位。接收方正常收到之后会改为显性,这时候发送方回读到之后发现是显性了,则认为这一帧正常发出去了。

2. Busoff

上面的一些错误会导致busoff. 当然也不是立马进入busoff

这里面是有一些错误的counter。这个counter的自增,是硬件自身处理的。可以看下面寄存器。

自此 BusOff 发生了。

3.Busoff 恢复

3.1 硬件需要做的

在发生busoff 时,硬件会对一些寄存器进行置位。这里列取两个,主要直到这是硬件自己做的事情即可。

3.2 软件需要做的

上面可以看到,CAN 已经被硬件停了,想要恢复的话,软件需要重新拉起来。软件通过清除CCCR INIT 寄存器。

后面就需要硬件开始内部处理了,从软件的角度就是在这等就可以了。

3.3 硬件需要又做了

但是要等多长时间呢?

然后设备将等待129次总线Idle的出现(129 * 11个连续的隐性位),然后再恢复正常操作。在Bus_Off恢复流程结束时,错误管理计数器将被重置。

有了这个支撑就可以计算一下到底需要等多长时间了。我们可以拿报文来分析 下图为 CAN 的报文

对于一帧8字节数据的标准CAN报文总共的Bit位数量:

帧起始(1位)+ 仲裁段(13位)+ 控制段(5位)+ 数据段(64位)+ CRC段(16位)+ ACK段(2位)+ 帧结束(7位)= 108位

对于数据8字节的扩展帧:

帧起始(1位)+ 仲裁段(33位)+ 控制段(5位)+ 数据段(64位)+ CRC段(16位)+ ACK段(2位)+ 帧结束(7位)= 128位

当对应CAN报文传输速率为500kBaud/s时,即传输一个Bit需要的时间为:1/500k = 2us/bit,对应上述的标准帧及扩展帧的传输时间:

标准帧:108 x 2 = 216us

扩展帧:128 x 2 = 256us

当然 CANFD 也是一样的分析过程

由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。

仲裁域波特率所占位数:帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位),共26位。

数据域波特率所占位数:控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位),最多共550位。

假设仲裁域波特率为500Kbps(位时间2us),数据域波特率为2Mbps(位时间0.5us)

则发送一帧标准CANFD报文需要的时间为:26 x 2us+550 x 0.5us = 52 + 275 = 327us

可以进行计算了。

CAN使用接收错误计数器来计数总线空闲条件的发生情况。如果需要,可以在ECR.REC上进行监控。此外,总线空闲条件的每次发生都被PSR.LEC = 5 =位0错误,它触发一个中断 IR.PRA当然这需要 IR.PEAE 已经被启用。

从上面的过程也能得出一个结论,在Busoff recovery 的过程。CAN 一直处于 synchronizing 状态。这时候PSR.ACT = 1. PSR.BO 也是置位的。

在这个过程之后。CAN 依然需要保持一个bit位的idle。随后PSR.ACT 为2. 就是可以接收。随后为3. 可发可收的状态。

自此 CAN BusOff 恢复完毕。

4.Autosar CanSM 快慢恢复

4.1 快速恢复机制

快速恢复机制旨在尽可能迅速地将 CAN 控制器从 Bus Off 状态恢复到正常工作状态。这种机制适用于需要快速恢复总线通信的场景。具体过程如下:

1.错误处理和清除:

控制器在检测到严重错误并进入 Bus Off 状态后,会进行内部的错误处理,如清除错误标志和重置错误计数器。

2.重新初始化:

快速恢复机制会尽快重新初始化 CAN 控制器。这通常包括重新配置 CAN 控制器的参数和重置内部状态。

3.重新尝试通信:

控制器会尽快重新尝试重新加入总线。通常,控制器在总线处于空闲状态时,会开始发送重启帧或监测总线活动。

4.短时间内恢复:

在快速恢复过程中,CANSM 会尽量减少等待时间和延迟,使得控制器能尽快进入正常工作状态。

5.系统调整:

如果快速恢复机制无法解决问题,可能会触发额外的诊断或错误处理流程。

4.2 慢速恢复机制

慢速恢复机制则更加稳健,通常用于对恢复过程有更高可靠性要求的场景。该机制会在恢复过程中引入更多的时间和步骤,以确保所有错误和潜在问题都被妥善处理。具体过程如下:

1.错误处理和监控:

控制器进入 Bus Off 状态后,会进行详细的错误处理,并启动错误监控,以防止在恢复过程中出现更多错误。

2.较长时间的初始化:

慢速恢复机制可能会在重新初始化 CAN 控制器时引入较长的延迟,以确保所有错误标志都被清除,并对控制器状态进行全面检查。

3.周期性检查:

控制器会周期性地检查总线活动,并在确认总线状态稳定后才会尝试重新加入网络。这包括监测总线空闲状态和等待其他节点的活动。

4.逐步恢复:

慢速恢复机制可能会采取逐步恢复的方法,例如,首先恢复部分功能,然后逐渐恢复全功能。

5.系统诊断:

在慢速恢复过程中,系统会进行详细的诊断和日志记录,以确保问题被正确定位并解决。

4.3 AUTOSAR CANSM 配置

在 AUTOSAR 中,CANSM 的恢复机制可以通过配置文件进行设置和调整。具体的配置参数包括:

•Error Detection:配置错误检测机制的敏感度和处理策略。

•Recovery Timing:设置恢复的时间参数,包括超时时间和重试次数。

•Retry Strategies:定义重试策略和恢复步骤的顺序。

 

 

   
次浏览       
 
相关文章

CMM之后对CMMI的思考
对软件研发项目管理的深入探讨
软件过程改进
软件过程改进的实现
 
相关文档

软件过程改进框架
软件过程改进的CMM-TSP-PSP模型
过程塑造(小型软件团队过程改进)
软件过程改进:经验和教训
 
相关课程

以"我"为中心的过程改进(iProcess )
iProcess过程改进实践
CMMI体系与实践
基于CMMI标准的软件质量保证

最新活动计划
C++高级编程 12-25 [线上]
白盒测试技术与工具实践 12-24[线上]
LLM大模型应用与项目构建 12-26[特惠]
需求分析最佳实践与沙盘演练 1-6[线上]
SysML建模专家 1-16[北京]
UAF架构体系与实践 1-22[北京]
 
 
最新文章
iPerson的过程观:要 过程 or 结果
基于模型的需求管理方法与工具
敏捷产品管理之 Story
敏捷开发需求管理(产品backlog)
Kanban看板管理实践精要
最新课程
基于iProcess的敏捷过程
软件开发过程中的项目管理
持续集成与敏捷开发
敏捷过程实践
敏捷测试-简单而可行
更多...   
成功案例
英特尔 SCRUM-敏捷开发实战
某著名汽车 敏捷开发过程与管理实践
北京 敏捷开发过程与项目管理
东方证券 基于看板的敏捷方法实践
亚信 工作量估算
更多...