首页 > 其他分享 >详解CAN总线:CAN总线报文格式—错误帧

详解CAN总线:CAN总线报文格式—错误帧

时间:2022-10-03 13:35:53浏览次数:51  
标签:标志 错误 报文格式 检测 总线 详解 格式 显性


目录

​1、错误帧格式​

​2、主动错误标志和被动错误标志​

​3、错误帧种类​


CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。

CAN通信是通过以下5种类型的帧进行的:

  • 数据帧
  • 遥控帧
  • 错误帧
  • 过载帧
  • 帧间隔

另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下简称 ID), 扩展格式有 29 个位的 ID。

各种帧的用途如下表所示:

详解CAN总线:CAN总线报文格式—错误帧_CAN总线

近期打算写5篇文章,分别详细介绍这5种类型的CAN总线报文格式,本篇博文将详细讲解CAN错误帧格式,创作不易,请各位朋友多多点赞、收藏、关注支持~

关注公众号:美男子玩编程,优先推送最新技术博文~

1、错误帧格式

错误帧由错误标志(Error Flag)和错误界定符(Error Delimiter)组成。

接收节点发现总线上的报文有错误时,将自动发出活动错误标志,它是6个连续的显性位。其他节点检测到活动错误标志后发送错误认可标志,它由6个连续的隐性位组成。由于各个接收节点发现错误的时间可能不同,所以总线上实际的错误标志可能由6~12个显性位组成。

错误界定符由 8 个位的隐性位构成。当错误标志发生后,每一个CAN 节点监视总线,直至检测到一个显性电平的跳变。此时表示所有的节点已经完成了错误标志的发送,并开始发送8个隐性电平的界定符。

如下所示:

详解CAN总线:CAN总线报文格式—错误帧_CAN总线报文格式_02

2、主动错误标志和被动错误标志

 错误标志包括主动错误标志和被动错误标志两种。

  • 主动错误标志:处于主动错误状态的单元检测出错误时输出的错误标志,6 个位的显性位;
  • 被动错误标志:处于被动错误状态的单元检测出错误时输出的错误标志,6 个位的隐性位。

详解CAN总线:CAN总线报文格式—错误帧_CAN总线_03

3、错误帧种类

错误帧共有 5 种,多种错误可能同时发生,种类如下所示:

  • 位错误
  • 填充错误
  • CRC 错误
  • 格式错误
  • ACK 错误

错误的种类、错误的内容、错误检测帧和检测单元如下表所示:

详解CAN总线:CAN总线报文格式—错误帧_汽车电子_04

重点聊一聊位错误和格式错误。

位错误特性如下所示:

  • 位错误由向总线上输出数据帧、遥控帧、错误帧、过载帧的单元和输出 ACK 的单元、输出错误的单元来检测;
  • 在仲裁段输出隐性电平,但检测出显性电平时,将被视为仲裁失利,而不是位错误;
  • 在仲裁段作为填充位输出隐性电平时,但检测出显性电平时,将不视为位错误,而是填充错误;
  • 发送单元在 ACK 段输出隐性电平,但检测到显性电平时,将被判断为其它单元的 ACK 应答,而非位错误;
  • 输出被动错误标志(6 个位隐性位)但检测出显性电平时,将遵从错误标志的结束条件,等待检测出连续相同 6 个位的值(显性或隐性),并不视为位错误。

格式错误特性如下所示:

  • 即使接收单元检测出 EOF(7 个位的隐性位)的最后一位(第 8 个位)为显性电平,也不视为格式错误;
  • 即使接收单元检测出数据长度码(DLC)中 9∼15 的值时,也不视为格式错误。

发送单元发送完错误帧后,将再次发送数据帧或遥控帧,错误标志输出时序如下表所示:

详解CAN总线:CAN总线报文格式—错误帧_CAN总线_05


​详解CAN总线:什么是CAN总线?​

​详解CAN总线:高速CAN总线和低速CAN总线的特性​

​详解CAN总线:CAN协议分层结构及功能​

​详解CAN总线:CAN节点硬件构成方案​

​详解CAN总线:常用CAN连接器的使用方法​

​详解CAN总线:CAN总线报文格式—数据帧​

​详解CAN总线:标准数据帧和扩展数据帧​

​详解CAN总线:CAN总线报文格式—遥控帧​​ 

标签:标志,错误,报文格式,检测,总线,详解,格式,显性
From: https://blog.51cto.com/HandsomeManJie/5730153

相关文章

  • Redis详解
    Redis介绍1.Redis是一个基于内存的高性能key-value数据库。是完全开源免费的,用C语言编写的,遵守BSD协议2.Redis特点:1)Redis是基于内存......
  • Java方法详解
    JAVA方法详解Symtem.out.println()类对象方法JAVA方法是语句的集合,它们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在......
  • 2.5W 字详解线程与锁了,面试随便问
    在java并发编程中,线程和锁永远是最重要的概念。语言规范虽然是规范描述,但是其中也有非常多的知识和最佳实践是值得学习的,相信这篇文章还是可以给很多读者提供学习参考的......
  • 面试必备:ThreadLocal详解
    前言大家好,我是捡田螺的小男孩。无论是工作还是面试,我们都会跟ThreadLocal打交道,今天就跟大家聊聊ThreadLocal哈~ThreadLocal是什么?为什么要使用ThreadLocal一个Thre......
  • 弹性布局(display:flex;)属性详解
    https://www.cnblogs.com/hellocd/p/10443237.html Flexbox 是flexiblebox的简称(注:意思是“灵活的盒子容器”),是 CSS3 引入的新的布局模式。它决定了元素如何在......
  • 1.3w字,一文详解死锁!
    死锁(DeadLock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。1.死锁演示死锁的形成分为两个方......
  • 串行总线、并行总线
    并行传输一次可以发出多个数据,但实际使用中,多条线路同时发送数据会造成线路震荡,为了避免这种干扰,就必须将两次发送之间的间隔时间加大。比如,并行传输一秒传5位数据,每次传......
  • 【K8S】Kubernetes控制器Controller-RS/Deployment/HPA详解
    一、介绍Pod是kubernetes的最⼩管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建......
  • 创建和初始化对象、构造函数详解
    创建和初始化对象、构造函数详解使用new关键字创建对象使用new关键字创建的时候,不仅会分配内存空间,还会进行默认的初始化以及调用类中的构造器packageoop.subject;......
  • 待从机,因为模型“考虑模拟值。支持首先向总线上发出
    待从机,因为模型“考虑模拟值。支持首先向总线上发出Z埤}待从机,因为模型“考虑模拟值。支持首先向总线上发出a待从机,因为模型“考虑模拟值。支持首先向总线上发出http://ds.1......