车载高速CAN(HighSpeed CAN)通信之CAN Bus Off

本文主要以普及CAN通信基本原理为目的,如有从事相关领域或者有意从事车载嵌入式开发的读友们欢迎留言探讨。

本文含有关键字如下。

CAN Bus Off,Bus Off DTC,Bus Off Recovery

CAN Bus Off

连接到CAN网络的通信设备一般称为节点,但在CAN中,它是电子控制单元(ECU)。通信线路称为总线,向总线传输数据称为总线访问。

CAN 支持 5 种类型的错误检测。 每个节点(ECU)都有一个错误计数器。 发生错误时,计数器按指定的常数递增(增加)。 相反,如果通信成功,则计数器递减(递减)一个固定常数。 根据该错误计数器的值,每个节点的通信状态发生变化。 这样,每个节点的通信受到限制。

每个节点都有一个错误计数器,根据值改变状态。 每个节点都有一个用于传输的 TEC(传输错误计数)和一个用于接收的 REC(接收错误计数)。 有三种类型的状态。

1. Error active

处于正常参与总线的状态。

当主动节点检测到错误时,会向总线传送Error Flag。

2.Error passive

当错误计数器从Error active状态超过某个值(REC>127 or TEC>127)时,它会转变为Error passive状态。

如果处于Error passive状态的节点检测到Error,但处于Error active状态的另一个节点未检测到Error,判断为整个总线没有Error。

处于Error passive状态的节点将处于对数据传输应用某些限制的状态。

如果Error很少,则可以返回到Error active状态。


3.Bus off

当错误计数器从Error passive状态进一步增加时,则会进入Bus Off状态。

它处于与总线分离的状态。 要返回总线,必须满足返回条件。

如图2所示,当一个节点 FCE 大于255则会请求进入Bus Off状态,该节点进入Bus Off状态。处于Bus Off的节点不发送或接受帧(Frame),不发送显性(Dominant)位。

 关于上文中提到的CAN网络中的Error分为以下5类。

l Bit error

发现节点:发送/接收

它将输出电平与总线上的电平进行比较,并检测这两个电平是否不匹配。

主要输出填充位是检测对象,传输时的仲裁字段和 ACK 被排除在外。

l Staff error

发现节点:发送/接收

在应进行位填充的字段中,同一级别连续 6 位时检测到Error。

l CRC error

发现节点:接收

当根据接收到的消息计算出的 CRC 结果与接收到的 CRC 序列值不同时检测到Error。

l Form error

发现节点:发送/接收

检测何时违反固定格式位域的Error。

l ACK error

发现节点:发送

发送节点的ACK时隙为ACK时检测到Error(未返回ACK时检测到Error)

将上述内容做一个汇总,则可得到以下关系表格。

 通常情况下,节点(ECU)如图3所示一般由MCU和CAN收发器组成,CAN收发器向CAN总线或者MCU负责传输和接收CAN帧(CAN Frame),MCU则按照CAN通信协议进行进一步处理。

  Error的检出一般由MCU完成。MCU将Frame传送到CAN收发器后,检查传输的数据和总线上采样的数据的差异,如果有差异,则将其视为Error并且累计FCE计数器,当FCE大于255时该节点进入Bus Off状态。

CAN Bus Off DTC

1、成熟条件

恢复N次不能成功之后,记录DTC,N的具体数值,各个OEM定义不同。
节点通信丢失类DTC 使能条件

Bus Off产生后,不再记录通信类DTC,原因显而易见,所有通信类DTC都会产生,记录没有意义,不能准确定位到是什么通信故障发生,有一个Bus off 的DTC就够了。

CAN Bus Off Recovery

   当节点(ECU)发生Bus Off事件后,代表这个CAN网络节点掉线,既不能发送消息,也不能接收消息。

   在AUTOSAR中,Can Controller检测到Bus Off状态后会逐层上报。经由Can,CanIf模块儿将发生的Bus Off事件报告给CanIf_User_Cbk(通常指CanSM模块)。并由CanSM模块儿进行,Bus Off恢复处理,通常称作为Bus Off Recovery。

   通常ECU检测出Bus Off后,会采取等待策略,称之为Bus Off Recovery。
 

 1、快恢复(L1)

恢复时间, <=100ms
恢复次数,5~10次不等
2、慢恢复(L2)

恢复间隔, [200ms, 1s]
恢复次数, 不限

CAN Bus Off恢复功能进行需求分解,主要划分给了CAN Driver, CAN Interface, CAN state Manager三个模块。

CAN Driver要做什么?

该模块负责实现供一个报告CAN Bus off状态的接口, 但不能自动恢复

CAN Interface 要做什么?

该模块需要实现向上层报告CAN Bus Off状态的接口

CAN State Manager要做什么?

The CanSm module is responsible for mode control management of all supported CAN Controllers and CAN Transceivers.

该模块需要实现为每一个CAN控制器实现CAN Bus Off恢复算法

该模块需要支持CAN Bus Off恢复时间配置

该模块需要提供一个接口,以在上电初始化时,支持通信模式配置(No communication,or silent communication)

若有想优先了解的ECU功能欢迎留言,我会根据留言的内容调整之后更新的ECU功能以及AUTOSAR中实现方法的详解。

编写内容不易,希望各位看官们点个赞同哦。

本文主要以普及CAN通信基本原理为目的,如有从事相关领域或者有意从事车载嵌入式开发的读友们欢迎留言探讨
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
车载CAN总线是一种用于汽车电子系统之间进行通信的总线协议。它被广泛应用于现代汽车中,可以实现多个电子控制单元(ECU)之间的数据交换和通信。CAN总线具有以下基础知识点: 1. CAN是什么?CAN是“控制器局域网络”的缩写,是一种串行通信协议,用于在车辆电子系统中传输数据。 2. CAN的技术原理:CAN总线采用差分信号传输和冲突检测机制,能够实现高速、可靠的数据传输。 3. CAN总线的特点:CAN总线具有高可靠性、抗干扰能力强、传输速率高等特点,适用于复杂的汽车电子系统环境。 4. CAN与其他通信方案的比较:相比于其他通信方案,如LIN总线和FlexRay总线,CAN总线具有成本低、可扩展性好等优势。 5. CAN总线的作用:CAN总线用于连接和管理车辆的各个电子控制单元,如发动机控制单元、制动系统控制单元等,实现数据交换和协同工作。 6. CAN的发展历史:CAN总线协议最早由德国Bosch公司在1983年提出,并在之后的几十年间得到了广泛应用和发展。 7. ISO/OSI基本参照模型与CAN协议:CAN总线协议按照ISO/OSI参考模型进行了分层设计,其中数据链路层和物理层对应了CAN总线的通信规范和电气特性。 8. CAN总线协议标准:CAN总线协议有多个版本和标准,如CAN 2.0A、CAN 2.0B等,每个版本都定义了不同的数据帧格式和通信规则。 9. CAN总线协议数据链路层中的帧:CAN总线的数据链路层使用了两种帧格式,即标准数据帧和扩展数据帧,用于在CAN总线上传输数据和控制信息。 如果您还有其他相关问题,请告诉我。 相关问题: 1. 什么是CAN总线的差分信号传输? 2. CAN总线如何实现冲突检测? 3. 为什么CAN总线适用于汽车电子系统?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水火汪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值