CAN 帧简介

2023-11-06

1 数据帧

数据帧的构成(下图中的D为显性电平,R为隐性电平):

在这里插入图片描述

数据帧是由7个段构成,其各个段的含义如下:

(1) 帧起始:表示数据帧开始的帧

SOF由1位显性位组成。

(2) 仲裁段:表示该帧优先级的段

标准数据帧与扩展数据帧在此段不同,标准数据帧的仲裁段由"11位基本ID + 1位RTR"组成,而扩展数据帧的仲裁段由"11位基本ID + 1位SRR + 1位IDE + 18位扩展ID + 1位RTR"组成。注:基本ID的高7位不能全为隐性电平。

(3) 控制段:表示数据的字节数及保留位的段

标准数据帧与扩展数据帧在此段不同,标准数据帧的控制段由"1位IDE + 1位r0 + 4位DLC"组成,而扩展数据帧的控制段由"1位r1 + 1位r0 + 4位DLC"组成。

注:

IDE为0时代表标准数据帧,为1时代表扩展数据帧;

r0和r1为保留位;

DLC表示数据长度,即代表数据段中的数据长度,如0001表示数据长度为1Byte;0010表示数据长度为2Byte; 0011表示数据长度为3Byte; 以此类推… 但数据长度最大为8Byte。

(4) 数据段:数据的内容,可发送0~8个字节的数据,从MSB(最高但)开始输出。

(5) CRC段:检查帧的传输错误的段

(6) ACK段:表示确认正常接收的段

由数据帧图可以看出,发送单元的ACK段是由2位隐性电平组成,接收单元的ACK段是由1位显示电平+1位隐性电平组成。

(7) 帧结束:表示数据帧结束的段,由7位隐性位组成。

2 遥控帧

接收单元向发送单元请求发送数据所用的帧。遥控帧的构成:

在这里插入图片描述

对遥控帧的理解可以参考数据帧。

(1) 数据帧和遥控帧的不同

  • 遥控帧的RTR位为隐性位,没有数据段
  • 没有数据段的数据帧和遥控帧可以通过RTR位区别开来

(2) 遥控帧没有数据段,数据长度码DLC该如何表示?

  • 遥控帧的数据长度码DLC以所请求数据帧的数据长度码表示

(3) 没有数据段的数据帧有何用途?

  • 例如,可用于各单元的定期连接确认/应答,或仲裁段本身带有实质性信息的情况下

3 错误帧

用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。

在这里插入图片描述

(1) 错误标志包括主动错误标志和被动错误标志两种:

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

(2) 错误界定符由8位的隐性位组成

4 过载帧

过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成。

在这里插入图片描述

(1) 过载标志:6个显性位 (过载标志的构成与主动错误标志的构成相同)

(2) 过载界定符:8个隐性位 (过载界定符的构成与错误界定符的构成相同)

5 帧间隔

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。
过载帧和错误帧前不能插入帧间隔。

在这里插入图片描述

(1) 间隔:3个隐性位

(2) 延迟传送:8个隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段

6 优先级的决定

影响优先级的因素主要有三个:

  1. 多个单元同时开始发送时,各发送单元从仲裁段的第一位开始仲裁。连续输出显性电平最多的单元可继续发送。
  2. 若ID相同,数据帧与遥控帧在总线上竞争,则数据帧具有优先权。
  3. 若ID相同,标准数据帧与扩展数据帧在总线上竞争,则标准数据帧具有优先权。

7 位填充

(1) 发送单元的工作

在发送数据帧和遥控帧时,SOF~CRC段间的数据,相同电平如果持续5位,在下一位(第6个位)则要插入1位与前5位反型的电平。

(2) 在接收数据帧的遥控帧时,SOF~CRC段间的数据,相同电平如果持续5位,需要删除下一个位(第6个位)再接收。如果这个第6位的电平与前5位相同,将被视为错误并发送错误帧。

8 错误的种类

在这里插入图片描述

9 错误帧的输出

检测出满足错误条件的单元输出错误标志通报错误。

处于主动错误状态的单元输出的错误标志为主动错误标志;处于被动错误状态的单元输出的错误标志为被动错误标志。

发送单元发送完错误帧后,将再次发送数据帧或遥控帧。

错误标志输出时序如下图:

在这里插入图片描述

10 位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4个段:

  • 同步段 (SS)
  • 传播时间段 (PTS)
  • 相位缓冲段1 (PBS1)
  • 相位缓冲段2 (PBS2)

这些段又由可称为Time Quantum的最小时间单位构成。

1位分为4个段,每个段又由若干个Tq构成,这称为位时序。

1位由多少个Tq构成,每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN 帧简介 的相关文章

  • VMware 安装 Windows11

    一 下载win11的镜像文件 可以在MSDN网站下载 MSDN系统库 致力于原版windows生态服务 二 创建虚拟机 1 双击打开VMware虚拟机 点击创建新的虚拟机 2 选择典型 推荐 然后点击下一步 3 在安装程序光盘映像文件下 点
  • 基于无法安装64位版本的visio,因为在您的PC上找到了以下32位程序的解决办法

    今天在给自己安装visio 64位版本的时候 出现 无法安装64位版本的visio 为在您的PC上找到了以下32位程序 microsoft access database engine 2010 english 请卸载所有32位Office
  • JAVA全排列算法

    利用java知识编写全排列算法 里面有我的个人理解注释 代码如下 package demo import java util ArrayList import java util Arrays import java util List S

随机推荐

  • 夺灵者哈卡(Hakkar, the Soulflayer)

    Hakkar the Soulflayer夺灵者哈卡Deathrattle Shuffle a Corrupted Blood into each player s deck 亡语 将一张 堕落之血 分别洗入双方玩家的牌库 Corrupte
  • java main()线程是不是最后一个退出的(相比较main中创建的其他多个线程)

    JVM会在所有的非守护线程 用户线程 执行完毕后退出 main线程是用户线程 仅有main线程一个用户线程执行完毕 不能决定JVM是否退出 也即是说main线程并不一定是最后一个退出的线程 public class MainThreadTe
  • 欧拉回路路径求解

    基本概念 今天讨论的主题是一类问题 就是欧拉路问题 有两种欧拉路 第一种叫做 Eulerian path trail 沿着这条路径走能够走遍图中每一条边 第二种叫做 Eularian cycle 沿着这条路径走 不仅能走遍图中每一条边 而且
  • 滑动平均滤波的Java实现

    滑动平均滤波的Java实现 滑动平均滤波是一种常用的信号处理技术 用于平滑输入信号并减少噪声的影响 本文将介绍如何使用Java实现滑动平均滤波 并提供相应的源代码 滑动平均滤波的原理是通过计算一系列连续输入信号的平均值来平滑信号 具体而言
  • el-calendar日历自定义显示内容

    版本信息 之前我整理了一篇VUE Element ui实战之el calendar日历自定义显示内容 有码友在评论区里分享了更简介的方式 看到后一直想尝试一下 所以本篇就是来 填坑的 按照提供的思路我尝试了一下 现将全部代码贴出来 以供大家
  • C/C++ cmake教程

    通过编写CMakeLists txt 然后运行cmake命令可以自动生成对应Makefile 从而控制make的编译过程 因此在学习cmake之前 建议先对make有个大致的了解 1 单个源文件的编译 如果你的项目只有一个源文件main c
  • 《一周搞定模电》-二极管

    一周搞定模电 二极管 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一周搞定模电 二极管 前言 一 什么是二极管 二 稳压二极管 整流二极管 开关二极管 前言 提示 这里可以添加本文要记录的大概内容 为找工作
  • 怎么排列html的顺序,css样式优先级及层叠的顺序排序探讨

    一般情况下 1位重要标志位 gt 4位特殊性标志 gt 声明先后顺序 important gt id gt class gt tag 使用 important可以改变优先级别为最高 其次是style对象 然后是id gt class gt
  • mysql:insert并发问题(on DUPLICATE KEY UPDATE)

    目录 一 insert 存在则更新 不存在则新增 1 表结构如下 2 sql语句 3 批量插入 某一条记录存在 则更新 其余进行新增 二 insert 存在则不进行任何操作 不存在则新增 1 sql语句 三 总结 小编最近在项目中 遇到了一
  • 你不知道的JavaScript---------语法

    目录 语句和表达式 语句的结果值 表达式的 副作用 上下文规则 标签语句 不推荐使用 代码块 对象结构 else if和可选代码块 在js中运算符有优先级 在js中的短路运算 函数参数 参数默认值 arguments 剩余参数 剩余参数和
  • 0基础小白入门SRC漏洞挖掘的正确姿势

    前言 有不少阅读过我文章的伙伴都知道 我从事网络安全行业已经好几年 积累了丰富的经验和技能 在这段时间里 我参与了多个实际项目的规划和实施 成功防范了各种网络攻击和漏洞利用 提高了安全防护水平 也有很多小伙伴私信问我怎么学 怎么挖漏洞 怎么
  • 安装mlxtend_python机器学习包mlxtend的安装和配置详解

    今天看到了mlxtend的包 看了下example集成得非常简洁 还有一个吸引我的地方是自带了一些data直接可以用 省去了自己造数据或者找数据的处理过程 所以决定安装体验一下 依赖环境 首先 sudo pip install mlxten
  • 若依图片上传到服务器,前端显示图片

    效果图如下 前端代码 table显示图片
  • Java中的多态理解之向上转型和向下转型(一)

    多态 Java中的多态可以用一句话来概括 父类引用指向子类对象 从这句话可以看出 有三个关键的点 父类引用 指向关系 子类对象 在理解这句话之前 我们先来学习两个概念 向上转型和向下转型 注意 无论是向上转型还是向下转型 两个类之间都必须要
  • Andriod Studio EditText 输入框 美化

    对输入框实现以下美化 该显示的结构为 LinearLayout 内部加一个 EditText 图中外部轮廓是LinearLayout 的样式 LinearLayout 部分 在要操作页面的 Design 页面添加一个大小合适的 Linear
  • vue中添加在标签上增加动态属性

  • 使用python进行数据分析

    1 数据分析步骤 数据分析五个步骤 数据分析步骤 提出问题 提出一个好问题 是成功的一半 面对一堆数据 同样也需要提出问题 这样才能为后面的具体步骤找到方向和侧重点 如某游戏公司想找一位明星为其新开发的游戏进行代言 明星那么多 如何才能话最
  • Vue中使用富文本ueditor

    Vue中使用富文本ueditor解决图片上传问题 学习新内容可能少不了官方文档 目前使用的是 vue ueditor wrap 组件它对ueditor进行了二次封装 集成秀米等第三方插件也方便 https hc199421 gitee io
  • jdk-8u191-linux-x64.tar.gz ,ftp上传服务器解压安装

    官网下载jdk ftp上传服务器解压安装 1 进入 Oracle 官方网站 下载合适的 JDK 版本 准备安装 注意 这里需要下载 Linux 版本 这里以jdk 8u191 linux x64 tar gz为例 你下载的文件可能不是这个版
  • CAN 帧简介

    1 数据帧 数据帧的构成 下图中的D为显性电平 R为隐性电平 数据帧是由7个段构成 其各个段的含义如下 1 帧起始 表示数据帧开始的帧 SOF由1位显性位组成 2 仲裁段 表示该帧优先级的段 标准数据帧与扩展数据帧在此段不同 标准数据帧的仲