CAN总线-----帧格式

news2024/9/24 1:21:24

目录

前言

一、CAN总线帧格式分类

1.数据帧(重点) 

2.遥控帧

3.错误帧

4.过载帧

 5.间隔帧

二、位填充

三、波形实例


前言

        本期我们就开始学习CAN总线的帧格式,对应帧格式的话,在前面我们学习I2C协议和SPI协议等协议的时候也是类似的学过这些协议在传输过程中是怎么样去实现数据的传输的。那么我们就开始今天的学习(视频:[1-2] 帧格式_哔哩哔哩_bilibili)

一、CAN总线帧格式分类

帧类型

用途

数据帧

发送设备主动发送数据(广播式)

遥控帧

接收设备主动请求数据(请求式)

错误帧

某个设备检测出错误时向其他设备通知错误

过载帧

接收设备通知其尚未做好接收准备

帧间隔

用于将数据帧及遥控帧与前面的帧分离开

1.数据帧(重点) 

         数据帧是我们主要学习的内容之一,同样的CAN数据帧也是跟其他通信方式类似的,首先是SOF此时是逻辑电平显性,总线被拉开。然后紧接着就是就是11位的ID位,是用来区分当前广播设备的ID,其划分为前三位中间四位后面四位,范围是0~7FF,紧接着就是RTR,用来区分数据帧和遥控帧,数据帧就是表示为显性0,遥控帧就是为显性1。

IDE是扩展位,如果是显性0就表示标准格式,隐性1是表示扩展格式。r0是表示保留位。

然后接着就是DLC这个表示的是后面数据的长度,DLC是4位,范围是0000~1111,但是DCL要跟着后面数据段Data一起的,DLC指定多少那么数据段就要发送多少字节,这里要一一对应的,数据段最大是64位也就是8个字节。

后面就是CRC校验段,当出现错误的时候这里基本上都会被发现的,然后驳回这个帧。

然后就是ACK段应答,这里跟I2C是很相似的,在进入ACK之前刚开始有一个CRC界定符,这时候发送方释放CAN总线,发送一个显性1作为起始标志,然后如果有接收方的话,接收方就会拿到总线,这时候接收方就会把总线给拉开使得为显性0,当此时发送方再次拿到总线的时候就会发现总线上变为显性了,那么就说明有人接收了,所以发送完成,最后就是结束位EOF,长度为7位,均为隐性1。

  • SOFStart of Frame):帧起始,表示后面一段波形为传输的数据位
  • IDIdentify):标识符,区分功能,同时决定优先级 344
  • RTRRemote Transmission Request ):远程请求位,区分数据帧和遥控帧
  • IDEIdentifier Extension):扩展标志位,区分标准格式和扩展格式
  • SRRSubstitute Remote Request):替代RTR,协议升级时留下的无意义位
  • r0/r1Reserve):保留位,为后续协议升级留下空间
  • DLCData Length Code):数据长度,指示数据段有几个字节
  • Data:数据段的1~8个字节有效数据
  • CRCCyclic Redundancy Check):循环冗余校验,校验数据是否正确
  • ACKAcknowledgement):应答位,判断数据有没有被接收方接收
  • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间
  • EOFEnd of Frame ):帧结束,表示数据位已经传输完毕

数据帧的发展历史

        CAN 1.2时期,仅存在标准格式,IDE位当时仍为保留位r1

CAN 2.0 时期, ID 不够用,出现了扩展格式,增加了 ID 的位数,为了区分标准格式与扩展格式,协议将标准格式中的 r1 赋予了新功能 —IDE

2.遥控帧

遥控帧无数据段, RTR 为隐性电平 1 ,其他部分与数据帧相同

3.错误帧

总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“ CRC 错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备

4.过载帧

当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失

 5.间隔帧

将数据帧和遥控帧 与前面的帧分离开

二、位填充

位填充规则:发送方每发送 5 个相同电平后,自动追加一个相反电平的填充位,接收方检测到填充位时,会自动移除填充位,恢复原始数据
例如:

          即将发送:  100000110     10000011110  0111111111110

          实际发送:  1000001110     1000001111100  011111011111010

          实际接收:  1000001110     1000001111100  011111011111010

          移除填充后: 100000110     10000011110  0111111111110

位填充作用:
  • 增加波形的定时信息,利于接收方执行“再同步”,防止波形长时间无变化,导致接收方不能精确掌握数据采样时机
  • 将正常数据流与“错误帧”和“过载帧”区分开,标志“错误帧”和“过载帧”的特异性
  • 保持CAN总线在发送正常数据流时的活跃状态,防止被误认为总线空闲

下面看一个有意思的示例:

下面展示的是原始数据11111 0000 1111 0000 1111 0000,那么如果去位填充处理的话就应该会变为  11111 00000 11111 00000 11111 00000  这里就是因为第一个连续的5个1而要去插入一个0导致后面的4个0变为5位,然后不得不再插入一个1,后面的4个1还是被新插入的数字影响……以此类推。这样就成了连锁反应了哈,不过这种情况很少出现,但出现了也是按照位填充的方式插入的,不要感到奇怪。

三、波形实例

标准数据帧,报文 ID 0x555 ,数据长度 1 字节,数据内容为 0xAA

标准数据帧,报文ID0x666,数据长度2字节,数据内容为0x12, 0x34 •扩展数据帧,报文ID0x0789ABCD,数据长度1字节,数据内容为0x56

 •标准遥控帧,报文ID0x088,数据长度1字节,无数据内容

以上就是本期的全部内容了,我们下次见!

今日壁纸:

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

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

相关文章

gitlab修改默认访问端口

GitLab 自带了一个 Nginx 服务器实例,用于处理 HTTP 和 HTTPS 请求。这个内置的 Nginx 服务器被配置为与 GitLab 应用程序实例一起工作,并且它负责处理所有前端的网络通信。 通过yum或者apt安装Gitlab时,nginx通常是被自带安装并配置好的。 …

基于C# winform部署图像动漫化AnimeGANv2部署onnx模型

【界面截图】 【效果演示】 【部分实现代码】 using System; using System.Diagnostics; using System.Windows.Forms; using OpenCvSharp;namespace FIRC {public partial class Form1 : Form{Mat src null;public Form1(){InitializeComponent();}private void button1_Cli…

10 Checkbutton 组件

10 Checkbutton 组件 Tkinter 是 Python 的标准 GUI 库,它提供了一系列的控件来创建图形用户界面。Checkbutton 是其中的一个组件,用于创建可以被选中或取消选中的按钮,通常用于实现布尔值的开关功能。 创建 Checkbutton 创建一个基本的 C…

Linux运维篇-误删/bin,/sbin目录怎么修复系统

这里写自定义目录标题 前言实例挂载镜像,重启系统进入救援模式拷贝镜像系统中的/bin和/sbin目录到原系统重启系统 总结 前言 当你看到这篇文章的时候,你的系统可能已经无法登录,或者正在处于登录状态但是不能执行任何常规的命令,…

学习vue 九 nextTick 函数式编程 编译宏 环境变量

nextTick js事件循环机制 所有的同步任务都是在主进程执行的形成一个执行栈,主线程之外,还存在一个"任务队列",异步任务执行队列中先执行宏任务,然后清空当次宏任务中的所有微任务,然后进行下一个tick如此…

android13禁用打开wifi ap 热点

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 这个文章介绍的是如何禁止用户打开wifi热点,禁止用户安装app后,打开wifi热点。 2.情况分析 android13 应用层打开wifi AP public void setWifiApEnabled(boolean isEn…

XSS小游戏(题目+解析)

xss题目练习地址&#xff1a; xss小游戏 游戏界面 一、Ma Spaghet! 我将题目要求进行翻译: 题目的主要要求就是&#xff1a;弹出一个&#xff08;1337&#xff09;的弹窗 开始解题&#xff1a; Let’s Go! 首先&#xff0c;传个参数看看 发现参数直接显示在了 < h2 >…

.bat文件快速运行vue项目

如何使用bat文件快速运行vue项目&#xff1f; 新建个文件&#xff0c;改名为serve.bat。 在文件中写入以下内容&#xff1a; # cd 项目路径 cd D:\projects\xxx npm run serve pausecd 项目所在的路径 npm run dev/serve &#xff0c;取决于项目的启动方法&#xff0c;打…

三维重建理论

应用领域&#xff1a; 三维重建基础&#xff1a; 相机成像 三维重建算法&#xff1a;

20240817 每日AI必读资讯

知网状告AI搜索&#xff1a;搜到我家论文题目和摘要&#xff0c;你侵权了&#xff01; - 知网指责秘塔AI搜索侵犯合法权益&#xff0c;要求断开链接并商务合作 - 秘塔AI搜索强调学术文献的开放获取对知识公平获取和科学研究至关重要 - 团队决定尊重知网选择&#xff0c;不再…

【vSphere 7/8】深入浅出 vSphere 证书 Ⅰ—— 初识和了解 vSphere证书

目录 引子1. vCenter Server 证书服务1.1 vSphere 安全证书&#xff08;1&#xff09;vSphere 安全证书的类型和有效期 1.2在 vSphere Client 中初识 vSphere 证书&#xff08;1&#xff09;vCenter 8.0.3 的 vSphere Client 界面&#xff08;2&#xff09;vCenter Server 7.0 …

idea付费插件激活

以下idea付费插件均可激活 获取链接&#xff1a;https://web.52shizhan.cn

OD C卷 - 围棋的气

围棋的气&#xff08;100&#xff09; 围棋棋盘由纵横19条线垂直相交组成&#xff0c;一共19x19361个交点&#xff0c;黑白棋子只能置于交点上&#xff1b;某个棋子的“气”是指其上、下、左、右四个方向的交叉点上&#xff0c;有几个交叉点没有棋子&#xff1b; 在棋盘边缘的…

【学习笔记】A2X通信的协议(十一)- 通过PC5的直接C2通信

目录 9. 通过PC5的直接C2通信 9.1 概述 9.2 程序 9.2.1 直接C2通信的C2授权程序 9.2.2 通过NR-PC5的直接C2通信程序 3GPP TS 24.577 V18.1.0的技术规范&#xff0c;主要定义了5G系统中A2X通信的协议方面&#xff0c;特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心…

2024零基础入行软件测试全网最全攻略

很多朋友想要入行软件测试&#xff0c;但是都不知道该怎么学。 抽个时间简单的给大家说下&#xff0c;对于0基础的朋友&#xff0c;应该怎么去学习软件测试。 学习软件测试有2条路可以选。 最省事的当然是找个靠谱的培训机构去培训啦&#xff0c;你就什么都不用想了&#xff0c…

todoList清单(HTML+CSS+JavaScript)

&#x1f30f;个人博客主页&#xff1a; 前言&#xff1a; 前段时间学习了JavaScript&#xff0c;然后写了一个todoList小项目&#xff0c;现在和大家分享一下我的清单以及如何实现的&#xff0c;希望对大家有所帮助 &#x1f525;&#x1f525;&#x1f525;文章专题&#xff…

三维点云深度网络 PointNeXt 源码阅读 (IV) —— PointNeXt-B

Title: 三维点云深度网络 PointNeXt 源码阅读 (IV) —— PointNeXt-B 文章目录 I. PointNeXt-B 与其他版本的区别II. PointNeXt-B 自动生成的网络III. PointNeXt-B 编码部分的结构IV. 显存溢出的规避总结 关联博文 [1] 三维点云深度网络 PointNeXt 的安装配置与测试 [2] 三维点…

Spring IOC 小演示

首先建项目&#xff0c;可参考 https://blog.csdn.net/2303_79008526/article/details/141141114?spm1001.2014.3001.5502 一、spring 环境搭建 &#xff08;一&#xff09;导相关坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmln…

高通AI-让AI触手可及

生成式AI模型&#xff0c;例如大语言模型和大视觉模型&#xff0c;需要大量的计算资源进行推理&#xff0c;这对于传统的CPU和GPU等通用处理器来说是一个挑战。 1 NPU和异构计算的优势 NPU (神经网络处理器): 专门为AI推理设计的处理器&#xff0c;具有高性能、低功耗的特点&…

Eval绕过限制参数限制

PHP Eval函数参数限制在16个字符 PHP代码 <?php$param $_REQUEST[param]; if (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false){eval($param);}?># 部署环境属于ubuntu系统 通过GET传参绕过 由于是…