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

本文含有关键字如下。

CAN Bus Off,Bus Off DTC,Bus Off Recovery

CAN Bus Off

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

图1 线型总拓扑概念图

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 ISO11898节点状态转换图

如图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)

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

No.

状态

TEC

REC

1

接收设备检测到Error(在发送活动Error标志和过载标志时排除位错误)

-

+1

2

发送错误标志后的第一位为显性

-

+8

3

发送设备发送Error标志

+8

-

4

在发送设备发送活动Error标志或过载标志时检测到位Error

+8

-

5

在接收设备发送活动错误标志或过载标志时检测到位错误

-

+8

6

在发送主动错误标志、被动错误标志和过载标志后,发送和接收设备都允许最多 7 个连续显性位。

每次出现主动错误标志时,过载标志都会检测到 14 位连续显性,被动错误标志之后是 8 位连续显性,之后是 8 位连续显性。

+8

+8

7

送信成功时

If TEC<>0
TEC= -1
If TEC=0
TEC=0

-

8

接收成功时

-

If 1<=REC<=127
REC= -1
If REC=0
REC= 0
If REC>=128
REC= 119~127

9

如果 TEC 或 REC 为 128 或更多,则转移到Error passive。

-

-

10

如果 TEC 为 256 或更多,则进入Bus Off状态

-

-

11

当 TEC 和 REC 变为 127 或更小时,从Error passive转变为Error active。

-

-

12

当 11 个连续的隐性位发出 128 次时,将 TEC 和 REC 设置为 0 并从总线关闭转换为错误激活。

0

0

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

图3 ECU组成概念图

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]
  • 恢复次数, 不限

图4 AUTOSAR Bus Off 通知

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通信基本原理为目的,如有从事相关领域或者有意从事车载嵌入式开发的读友们欢迎留言探讨。

车载高速CAN(HighSpeed CAN)通信之CAN Bus Off相关推荐

  1. 高速跟踪--High-Speed Tracking-by-Detection Without Using Image Information

    高速跟踪: 当检测精度较高,视频帧率较高时,跟踪问题就会变得很简单,主要是多阈值目标检测和 判断前后帧的重合率 High-Speed Tracking-by-Detection Without Usi ...

  2. 车载开发中,蓝牙通信需要学习那些核心技术点?

    车载蓝牙通信是指在汽车内部或车辆与外部设备之间使用蓝牙技术进行数据传输和通信.蓝牙5.0是现代蓝牙技术的最新版本,它引入了一系列新功能和改进,提供了更快的数据传输速度.更长的传输距离.更稳定的连接和更 ...

  3. vue基础 - 11 (组件间的通信:event bus -- 事件车,$emit,$on,$off,封装一个事件车)

    技术名称: event bus  -- 事件车 场景: 在`头部组件`中点击搜索按钮, 需要把输入框的值传递给`商品组件` 这些组件的共同点: 同一个vue对象管理的, 这些组件中的`this.$ro ...

  4. 混合波束成形| 高速铁路通信系统的信道估计:Location-Aided mMIMO Channel Tracking and Hybrid Beamforming for High-Speed

    关于 <Location-Aided mMIMO Channel Tracking and Hybrid Beamforming for High-Speed Railway Communica ...

  5. 车载5G+4G多网聚合通信解决方案

    应急指挥车.现场应急指挥系统作为整个应急指挥平台的主要组成部分,被广泛用于救灾抢险,安全保障等特殊场景,可通过应急指挥车或现场应急指挥系统与后方指挥中心间传输音视频信息,实现现场与指挥中心的实时通信, ...

  6. Micropython——关于通信I2C协议的应用和原理讲解

    1.I2C总线是什么? I2C:俗称集成电路总线,是一种简单.双向二线制同步串行通信总线,使用多主从架构.它只需要两根线即可在连接于总线上的器件之间传送信息. 主器件用于启动总线传送数据,并产生时钟以 ...

  7. Virtex—5 GTP和Virtex—6 GTX间匹配通信研究及应用

    针对Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX之间的差异性,需对预/去加重和接收均衡值.接收终端电压以及发送差分电压值等参数作出灵活调整,才能适应二 ...

  8. 全速USB和高速USB的识别过程分析

    注:本文是根据网上的一些资料整理而成. 1 前言 我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed ...

  9. GPS/GPRS车载定位系统智能终端设计μC/OS-Ⅱ调度液晶显示汽车行驶记录仪电路

    wx供重浩:创享日记 对话框发送:gps电路 免费下载完整无水印论文报告(包含主板电路图和采集板电路图) 文章目录 一.绪论 二.车载智能终端 三.车载智能终端的硬件结构及设计 四.车载智能终端的软件 ...

最新文章

  1. [Android Pro] 有关Broadcast作为内部类时注册的一些问题
  2. openstack的云主机相关命令
  3. Zabbix配置模板监控指定服务器主机
  4. Cray:XC50提供了最高密度的性能
  5. 简述中断处理的6个步骤_基于SCDM软件的CFD前处理工作5个步骤
  6. 2017全国省市区县 json数据
  7. oracle中的ROLLUP函数
  8. 电磁仿真原理——1.0 电磁仿真原理简介
  9. MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
  10. [解决方法] 连接深信服Easyconnect之后无法代理抓包
  11. “红山开源”创新论坛 | ChinaOSC
  12. 电商直播元年 微媒云播打造私域流量火爆商业新模式
  13. One PUNCH Man——聚类
  14. 求两向量在0~360度之间的角度值及实际应用
  15. 年化费率和年利率的区别
  16. 从艾优尼之死,看Freeme OS的深远价值
  17. 浅谈 缀点成线 问题
  18. 数据压缩·作业五(tga文件分析)
  19. react-prev
  20. 十三、基于DMSP/OLS、NPP/VIIRS夜间灯光数据和兴趣点(POI)城市建成区提取——理论

热门文章

  1. 深圳大学计系汇编语言实验--四子棋游戏
  2. T/CAGIS 1—2019《空间三维模型数据格式》
  3. SE16N新改表内容方法
  4. halcon算子翻译——dev_update_off、dev_update_on
  5. Chrony -实现NTP时间同步
  6. 【电脑办公软件】万彩办公大师教程丨图片转PDF工具
  7. linux中kvm配置文件,如何在linux中通过kvm安装虚拟机
  8. 详谈!抖音怎么快速申请企业蓝V认证
  9. notepad++ 自动标序号
  10. Hbase慢请求常规排查流程