码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 详解CAN总线:CAN总线报文格式—错误帧


    目录

    1、错误帧格式

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

    3、错误帧种类


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

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

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

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

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

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

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

    1、错误帧格式

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

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

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

    如下所示:

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

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

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

    3、错误帧种类

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

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

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

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

    位错误特性如下所示:

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

    格式错误特性如下所示:

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

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


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

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

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

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

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

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

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

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

  • 相关阅读:
    常用数据结构剖析
    RHCE之WEB服务器作业
    (51)性能测试中监控
    从 LinkedHashMap 源码到手撕 LRU 缓存
    深入理解Windows系统环境变量
    RUP生命周期在时间上分为4个顺序阶段,分别是:初始阶段、细化阶段、构建阶段和交付阶段
    Java线程池和Spring异步处理高级篇
    深度操作系统 15.2——怀揣梦想,笃定前行
    华为OD 数列描述(100分)【java】A卷+B卷
    Python爬虫采集框架——Scrapy初学入门
  • 原文地址:https://blog.csdn.net/m0_38106923/article/details/127059086
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号