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

news2024/11/19 10:33:19

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息安全:恶意代码防范技术原理.

信息安全&#xff1a;恶意代码防范技术原理. 恶意代码的英文是 Malicious Code, 它是一种违背目标系统安全策略的程序代码&#xff0c;会造成目标系统信息泄露、资源滥用&#xff0c;破坏系统的完整性及可用性。 目录&#xff1a; 恶意代码概述&#xff1a; &#xff08;1&a…

mac openssl 版本到底怎么回事 已解决

在mac 安装node多版本的时候&#xff0c;有可能把原有的 openssl1.1 版本 直接要再一次升级了&#xff0c;无奈的 php环境 编译器是 openssl 1.1 还是 3.0 &#xff0c;今天来个底朝天的找问题。 brew search openssl 有安装 三个版本。 但是错误提示 是第二个版本。 brew …

知识分享 钡铼网关功能介绍:使用SSLTLS 加密,保证MQTT通信安全

背景 为了使不同的设备或系统能够相互通信&#xff0c;让旧有系统和新的系统可以集成&#xff0c;通信更加灵活和可靠。以及将数据从不同的来源收集并传输到不同的目的地&#xff0c;实现数据的集中管理和分发。 通信网关完美克服了这一难题&#xff0c;485或者网口的设备能通过…

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

轻松在 Esp32 相机上运行边缘脉冲 FOMO 物体检测的世界最佳指南。即使您是初学者 介绍 对象检测是检测图像内感兴趣的对象的任务。直到几年前,由于模型的复杂性和要执行的数学运算的数量惊人,这项任务还需要强大的计算机来完成。 然而,由于像Edge Impulse这样的平台,初学者…

css中常用单位辨析

辨析 px&#xff1a;像素&#xff1b;css中最普遍最常用的单位&#xff0c;不管在何种设备或分辨率上&#xff0c;1px始终代表屏幕上的一个像素。 %&#xff1a;百分比&#xff1b;基于父元素相对属性的百分比。 em&#xff1a;当前字体大小的倍数&#xff1b;基于父元素字体…

HCQ1-1300-D【高速输入】

1高速计数器&#xff1a; 用于记录电机轴位置【编码器信号采集】 2硬件引脚&#xff1a; 总共4个引脚&#xff1a;【A】 ab接编码器信号&#xff0c;或者接近开关信号&#xff08;需要设置计数器工作模式&#xff09; 【B】 【Z】就是编码器Z相&#xff0c;转一圈输出1个脉冲…

04-Zookeeper集群详解

上一篇&#xff1a;03-Zookeeper客户端使用 Zookeeper 集群模式一共有三种类型的角色 Leader: 处理所有的事务请求&#xff08;写请求&#xff09;&#xff0c;可以处理读请求&#xff0c;集群中只能有一个LeaderFollower&#xff1a;只能处理读请求&#xff0c;同时作为 Le…

MACOS系统Qt配置MySQL

1.打开Qt Maintenance Tool必须下载Sources 2.下载后打开/Users/liwanyu/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql/mysql.pro直接点开 3. 点开mysql.pro文件&#xff0c;注释第六行 QMAKE_USE mysql 添加三行路径&#xff1a;找到自己的mysql路径和自己的Qt下的 s…

C/C++笔试错题集+图解知识点(一)—— 持续更新中

1. printf("%5.2s", ) #include <iostream> using namespace std; int main() {printf("%s\n", "string");printf("%5.3s\n", "string"); //总共打印五个字符&#xff0c;取"string"的前三个字符&#…

B+树的定义以及查找

1.B树的定义 一棵m阶的B树需满足下列条件: 每个分支结点最多有m棵子树(孩子结点)。非叶根结点至少有两棵子树&#xff0c;其他每个分支结点至少有「m/2]棵子树。结点的子树个数与关键字个数相等。所有叶结点包含全部关键字及指向相应记录的指针&#xff0c;叶结点中将关键字按…

电子电子架构——AUTOSAR信息安全机制有哪些?(上)

电子电子架构——AUTOSAR信息安全机制有哪些&#xff08;上&#xff09; 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 人们会在生活中不断攻击你。他们的主要…

LINUX|ubuntu常用指令

文章目录 查看IP显示当前路径下所有文件安装编译工具GCC、调试工具GDB、连接工具SSHmkdir 创建目录export命令显示当前系统定义的所有环境变量echo $PATH命令输出当前的PATH环境变量的值当前命令行添加环境变量&#xff0c;关闭失效&#xff0c;防止多版本库冲突时使用sudo su打…

零基础学习ESP8266

文章目录 零基础学习ESP8266前言选择硬件如何学习专栏大纲基础部分提高部分 总结 零基础学习ESP8266 前言 最近在空余的时候有用乐鑫的模组&#xff0c;感觉很不错&#xff0c;也决定简单写写。 相信看这篇文章的同学&#xff0c;希望可以熟悉ESP8266这个硬件平台。当然我们…

gogs git 服务器极速搭建

背景 小型团队合作中&#xff0c;需要代码托管在内网&#xff0c;gitlab 等搭建比较复杂&#xff0c;经过一番搜寻发现gogs满足需求 基本用户管理后台管理面板&#xff0c;能在web端查看管理安装配置极简 安装配置 gogs是支持多个平台&#xff0c;这里我们选择ubuntu 1.下载git…

Fastjson 结合 jdk 原生反序列化的利用手法 ( Aliyun CTF )

2023 Aliyun CTF ezbean是一道CTF java反序列化题目。 题目的目的是让选手通过一个java原生反序列化入口&#xff0c;最终达成RCE。本文对题目的几种解法做了具体的分析&#xff0c;主要分为预期解法和非预期解法两种思路。通过对Fastjson在反序列化的行为分析&#xff0c;从两…

ChatGPT App迎来重大更新;人工智能应用于应对气候变化

&#x1f989; AI新闻 &#x1f680; ChatGPT App迎来重大更新&#xff1a;增加多模态交互方式 摘要&#xff1a;OpenAI最近宣布了ChatGPT App的重大更新&#xff0c;新版的ChatGPT增加了多模态交互方式&#xff0c;用户可以向AI展示正在谈论的内容&#xff0c;比如拍照并询问…

装配工位防错改造

装配工位防错改造-需求 PROBLEM 装配作业的失误会引起产品品质缺陷&#xff0c;易导致库存、返工和报废&#xff0c;从而增加工厂的生产成本和时间成本&#xff0c;进一步甚至会导致公司丢失业务&#xff01; CAUSES 1、产生装配问题的主要归因&#xff08;占80%左右&#x…

华为云云耀云服务器L实例评测|搭建CounterStrike Source Delicated Server(CS起源游戏服务器)

华为云云耀云服务器L实例评测&#xff5c;搭建CounterStrike Source Delicated Server&#xff08;CS起源游戏服务器&#xff09; #【有奖征文】华为云云服务器焕新上线&#xff0c;快来亲身感受评测吧&#xff01;# ⭐️ CounterStrikeSource&#xff08;CS起源是Valve的一款…

【漏洞复现】六、maccms 远程命令执行(CVE-2017-17733)

【漏洞复现】六、maccms 远程命令执行&#xff08;CVE-2017-17733&#xff09; 6.0、储备知识 1、可控参数 &#xff08;审计&#xff09; 2、fputs()函数 函数写入文件&#xff08;可安全用于二进制文件&#xff09;&#xff0c;fputs() 函数是 fwrite() 函数的别名 fpu…

服务器数据恢复-zfs下raidz多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器共配备32块硬盘&#xff0c;组建了4组RAIDZ&#xff0c;Windows操作系统zfs文件系统。 服务器故障&#xff1a; 服务器在运行过程中突然崩溃&#xff0c;经过初步检测检测没有发现服务器存在物理故障&#xff0c;重启服务器后故障依…