CAN总线的错误检测机制

news2025/2/22 5:48:20

文章目录

  • 错误类型
    • 1、位错误-Bit Check Error
    • 2、填充错误-Stuff Error
    • 3、格式错误-Form Error
    • 4、ACK错误-ACK Error 和 CRC错误-CRC Error
    • 5、错误示例
  • 错误处理
    • 1、主动错误 - error active
    • 2、被动错误 - error passive
    • 3、总线关闭 - bus off
    • 4、错误计数值的变动条件
  • 参考

错误类型

  • 位错误-Bit Check Error
  • 填充错误-Stuff Error
  • 格式错误-Form Error
  • ACK错误-ACK Error
  • CRC错误-CRC Error

1、位错误-Bit Check Error

位错误-即 节点回读检测到的位与自身送出的位数值不同
位错误的检测范围为 SOF -> EOF
在这里插入图片描述

以下情况不判断为 位错误

  1. 对于仲裁区,如果节点发送为“隐性”位,而检测到“显性”位不导致位错误,表示该节点仲裁失败
  2. 对于ACK槽,如果节点发送为“隐性”位,而检测到“显性”位不导致位错误,表示该节点发送的报文未被其他节点正确接收
  3. 节点在发送被动错误标志时检测到显性位不认为是位错误,如果某个节点发送了被动错误标志,然后回读的不是6位连续的隐性位,这种情况是由于CAN总线的 线与 机制,被动错误标志别其他节点发送的显性位给覆盖掉了。

2、填充错误-Stuff Error

填充错误即 在使用位填充编码的帧场(SOF -> CRC)中,不允许出现六个或更多连续相同的电平位
在这里插入图片描述

3、格式错误-Form Error

格式错误即 在固定格式位场(CRC界定符、ACK界定符、帧结束)检测到一个或更多显性位
在这里插入图片描述

以下情况不判断为 格式错误

  1. 接收节点在EOF最后一位检测到显性位,不认为是格式错误,而认为是超载帧的开始,而发送节点会认为是格式错误

4、ACK错误-ACK Error 和 CRC错误-CRC Error

CRC错误即 接收节点计算的CRC序列与接收到的CRC序列不同
ACK错误即 发送节点在ACK槽时间内未检测到“显性”位
在这里插入图片描述

5、错误示例

1、位错误和填充错误
在这里插入图片描述

错误处理

为了由于自身某些原因导致无法正常接收的节点一直发送错误帧干扰其他节点通信,CAN BUS规定了节点的三种状态:

  • 主动错误 - error active
  • 被动错误 - error passive
  • 总线关闭 - bus off

在这里插入图片描述

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

1、主动错误 - error active

  • 节点能正常参与总线通信的收发

  • 错误帧结束之后,总线回到正常状态,被中断的节点会尝试重新发送刚才的消息

在这里插入图片描述

在主动错误状态下,当节点检测到一个错误,就会发送带有主动错误标志的错误帧,主动错误标志是连续6个显性位,所以此时将会覆盖总线上其他节点的发送 ,而之前在CAN总线上传输的报文就会被这6个连续显性位破坏掉

2、被动错误 - error passive

  • 节点可以参与总线通信的收发
  • SuspendTransmission之后,总线回到空闲状态,如果这个节点能够竞争成功,那么它就能接着发送,如果竞争不能成功,那么就接着等待下一次竞争。 目的是为了让其他正常节点优先使用总线

在这里插入图片描述

在被动错误状态下,当节点检测到一个错误,就会发送带有被动错误标志的错误帧,被动错误标志是连续6个隐性位,所以此时总线上其他节点的发送不会受到影响

3、总线关闭 - bus off

  • 节点的所有总线活动停止
  • 节点暂时不能参与到总线通信中。处于这种状态中的节点既不可接收也不可发送消息
    在这里插入图片描述

4、错误计数值的变动条件

在这里插入图片描述

参考

  • CAN总线的错误检测机制:https://www.bilibili.com/video/BV1Su41187x8/?spm_id_from=333.788&vd_source=1acb50d9fb0b001f6955382b5acbc993

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

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

相关文章

信创终端操作系统上vmware的命令行操作

原文链接:信创终端操作系统上vmware的命令行操作 Hello,大家好啊!今天给大家带来一篇关于在信创终端操作系统上使用命令行操作VMware的文章。通过命令行管理VMware虚拟机可以提高效率,特别是在需要批量操作或自动化管理时。本文将…

【PyCharm】PyCharm 2024.1 的最新变化-代码导航与重构

目录 代码导航与重构 改进的代码导航功能 高级重构工具 代码导航与重构 改进的代码导航功能 符号搜索和文件搜索增强:改进后的符号搜索功能能够更快速地定位到特定的类、函数、变量等,而增强的文件搜索则让用户能够轻松找到所需的文件或目录。现在&a…

【IJER】: 二苄基甲苯加氢及不同 Pt 负载量的 Pt/Al对全氢二苄基甲苯制氢的催化性能

摘要: 研究了二苄基甲苯加氢和全氢二苄基甲苯(H18-DBT)脱氢的特性。氢化实验使用Raney-Ni进行。结果表明,170℃、7MPa是最佳反应条件,在30小时内氢气容量达到6.2wt%。 H18-DBT 脱氢的最佳温度为 290C。此外,在不同Pt金属负载量&am…

【Redis系列】RedisTemplate的使用与注意事项

目录 一.什么是RedisTemplate 二.如何使用RedisTemplate RedisTemplate的API 序列化 三.StringRedisTemplate 一.什么是RedisTemplate RedisTemplate 是一个工具类,由 Spring 官方提供的方便操作 Redis 数据库的一个工具类,来源于 org.springframe…

day3 测试基础知识

1. 你认为性能测试的目的是什么?做好性能测试的工作的关键是什么? 性能测试工作的目的是检查系统是否满足在需求说明书中规定的性能,性能测试常常需要和强度测试结合起来,并常常要求同时进行软件和硬件的检测。 性能测试主要的关…

写在礼拜天

这两天巴黎奥运会,办的如火如荼,各个国家都有拿到金牌的人…… 前几天,俞敏洪正式发文,说董宇辉从东方甄选离职,明确已经出来单干…… 前段时间的高考成绩已经揭晓,有人金榜题名,有人名落孙山…

Spring Boot配置文件的语法规则

主要介绍两种配置文件的语法和格式,properties和yml 目录 1.配置文件的作用 2.创建配置文件 3.properties语法 4.yml语法 5.配置文件格式 1.配置文件的作用 对于配置文件,也有独立的文件夹去存放,主要用来存放一些需要经过变动的数据&a…

质数差列 信友队

题目描述 驰骋宇宙的鱼大大找到了一个古遗迹,稍作研究后发现这是一个来着远古的质数星球文明遗迹,这个文明的特点是所有事物都和质数息息相关。于是,鱼大大赶紧列出了一堆的质数,以方便自己的研究。 这天鱼大大找到了质数星球文明…

ubuntu安装docker和docker-compose

安装软件包 sudo apt install apt-transport-https ca-certificates software-properties-common 将 Docker 的 APT 源添加到系统中 echo "deb https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/…

<Python><paddle>基于python使用百度paddleocr实现车牌识别

前言 paddleocr是百度飞桨的一个文字识别库,准确度非常高,基于其文字识别的基础,将其用于车牌识别。这个识别的准确度是相当高的。 环境配置 系统:windows 平台:visual studio code 语言:python 库&#…

FreeModbus学习——eMBInit初始化

FreeModbus版本:1.6 在mb.c文件中 先看一下静态变量的定义 /* ----------------------- Static variables ---------------------------------*/static UCHAR ucMBAddress; static eMBMode eMBCurrentMode;ucMBAddress是从机地址,eMBCurrentMode是M…

简易版:在 SpringBoot 中设计一个订单号生成系统

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 引言 要在SpringBoot中设计一个订单号生成系统,你可以按照以下步骤进行: 创建一个SpringBoot项目,添加必要的依赖,如spring-boot-starter-web。 创建一个订单…

前端了解到框架-网络复习

前端 HTML 超文本标记语言 画页面 各种各样的标签组成页面进行展示 桌面创建文本修改后缀即可 <!DOCTYPE html>: 声明文档类型和HTML版本。<html>: 根标签&#xff0c;所有其他标签都包含在内。<head>: 包含了文档的元数据&#xff0c;如字符编码、网页标…

Mac系统中用brew安装MongoDB【详细教程】

文章目录 概述一、安装步骤1.下载适用于 MongoDB 的官方 Homebrew 公式和数据库工具,方法是在 macOS 终端运行以下命令:2.更新 Homebrew3.安装 MongoDB二、使用步骤1.查看版本2.启动服务3.停止服务4.连接测试三、可视化工具1.MongoDB Compass2.使用概述 使用本教程在 macOS …

heic怎么转换成jpg?heic转jpg,分享6款图片格式转换器免费汇总!

众所周知&#xff0c;在与非苹果手机设备用户&#xff08;如安卓手机或Windows台式机用户&#xff09;分享照片之前&#xff0c;通常需要将iphone的heic格式转换为jpg。由于这些操作系统的旧版本不原生支持heic图片格式&#xff0c;因此需要额外的第三方工具来查看这些图像。因…

1.Linux_基础

文件结构 Linux的文件结构是一个倒的树状图&#xff0c;具体结构如下&#xff1a; bin&#xff1a;存放二进制文件 boot&#xff1a;存放系统启动文件 dev&#xff1a;存放设备文件 etc&#xff1a;存放系统管理时要用到的各种配置文件和子目录 lib&#xff1a;存放系统动…

Redis:AOF持久化

1. 简介 以日志的形式来记录每个写操作&#xff0c;将redis执行的每个写操作记录下来&#xff08;读操作不记录&#xff09;&#xff0c;只需追加文件但不可以改写文件&#xff0c;redis启动之初会重新构建数据&#xff0c;即redis重启后会将日志中的所有写指令重新执行一遍以达…

html+css 实现单选按钮动画(input radio按钮)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

kuberneter管理GUI工具Lens

从github上可以知道&#xff0c;lens的前端是用electron做的客户端工具&#xff0c;打开安装路径你会发现kubectl.exe,没错&#xff0c;就是你经常用的kubectl命令行的客户端工具。kubectl本来就能输出json的数据类型&#xff0c;集成前端更方便了。看到这里你是不是发现&#…

在线投稿小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;编辑管理&#xff0c;用户文章管理&#xff0c;文章分类管理&#xff0c;文章展示管理&#xff0c;文章稿酬管理&#xff0c;通知公告管理&#xff0c;系统管理 微信端账号功能包…