CAN总线学习——物理层、数据链路层、CANopen协议

1、CAN总线介绍

1.1、CAN总线描述

(1)CAN总线支持多节点通信,但是节点不分区主从,也就是不存在一个节点来负责维护总线的通信;这点可以和I2C总线对对比,I2C是一主多从模式;
(2)是差分、异步、串行总线,采用双绞线传输,抗干扰能力强;
(3)总线仲裁机制是非破坏性仲裁;
(4)采用短帧结构,每帧包含有效数据0-64个字节,可达到实时性响应要求;
(5)数据帧具有帧ID,帧ID越小,优先级越高,可进一步满足实时性要求;
(6)CAN总线具有CRC校验功能,数据传输可靠性高;
(7)具有出错自动重传机制;
(8)节点在出错状态下,可自动脱离总线,不影响总线的正常工作;
(9)CAN总线传输距离长,可达10KM(5Kbps以下),通信速率最高就是几兆的速度,距离越长支持通信速率越低;

1.2、CAN总线应用场景

(1)CAN总线突出“实时性”和“抗干扰性”,但是通信速率不高,只有几百KB到几兆,所以适合用在对实时性和抗干扰性要求高,但是通信数据量不大的场景;
(2)CAN总线常用在工业领域和汽车领域;

1.3、4种CAN总线协议

(1)CAN总线分为经典CAN标准帧(CB)、经典CAN扩展帧(CE)、CAN FD标准帧(FB)、CAN FD扩展帧(FE);
(2)标准帧和扩展帧的区别:标准帧的帧ID是11位,扩展帧的帧ID是29位;
(3)CAN FD和经典CAN(CAN2.0)的区别:
a)、每个数据帧中数据长度从经典CAN的8字节扩展到最大64字节;
b)、CAN FD和经典CAN是兼容的;
c)、CAN FD在仲裁端的时钟频率和数据段的时钟频率可以不同;在仲裁段的时钟频率和经典CAN保持一致,在数据段时提高时钟频率,由此可以提高CAN FD的通信速率;
d)、CAN FD的数据帧格式也和经典CAN不一致,这里不详细描述;
总结:CAN FD每帧能传送的数据字节更多,通信速率更快,并且兼容经典CAN;

2、物理层

2.1、CAN总线接口

在这里插入图片描述>CAN总线采用差分信号,对外接口是两根双绞线CANH、CANL;

2.2、CAN总线信号电平

在这里插入图片描述

2.3、CAN总线的终端电阻

在这里插入图片描述>在线束两端添加120欧的电阻,防止信号反射造成通信紊乱;一般高速CAN都会添加这两个电阻;

2.3、CAN总线信号采样点

###

(1)CAN总线是异步总线,各个节点之间是没有共用的时钟线,所以各个节点间的时钟频率可能不是完全一样,有一定的误差;
(2)如果收发双方的时钟频率不一致,误差累计下来会导致数据解析出错;

2.4、规避波特率误差带来的通信错误

在这里插入图片描述

(1)CAN总线规定在信号的跳变沿时刻进行同步,将累计误差限制在两个跳变沿;
(2)CAN总线上需要发送多个相同位的数据,连续相同的bit位不会产生跳变沿,这样会导致误差累计,所以采用填充位的方式,在连续5个相同位后插入一个相反位,产生跳变沿,用于同步;

2.5、CAN总线仲裁机制

参考博客:《CAN总线竞争与仲裁机制分析》;

3、数据链路层

3.1、数据帧分类

帧类型功能
数据帧用于发送节点向接收节点传送数据,是使用最多的帧类型
远程帧用于接收节点向某个发送节点请求数据,比如A节点发送远程帧,要求B节点回数据
错误帧用于当节点检测出错误时向其他节点通知错误的帧
过载帧用于接收节点向发送节点通知自身接收能力的帧
帧间隔将数据帧或远程帧与前面的帧分离的帧,可以理解成插入一些空白时间段,防止帧粘连导致区分不出两个帧

3.2、数据帧

3.2.1、帧格式

在这里插入图片描述

3.2.2、DLC编码

在这里插入图片描述

DLC段由4个bit组成,DLC表明后面数据域的字节个数;上面是经典CAN的DLC编码对应关系,如果是CAN FD则数据段最多是支持64字节;

4、为什么CAN总线响应速度快?

(1)CAN总线是非破坏性仲裁机制,相对于其他总线,不会在仲裁上花费额外的时间;
(2)CAN总线上的数据帧有帧ID,帧ID越小优先级越高,可以给重要且紧急的数据赋予小的帧ID,这样能保证在CAN总线空闲时,紧急的数据先被发送出去;

5、为什么CAN的数据帧最多包含8个字节(经典CAN)或者64字节(CAN FD)有效数据?

(1)数据帧携带太多的数据会在发送阶段花费较多的时间,如果在数据帧发送阶段时突然来了一帧紧急的数据帧,这时紧急的数据帧就要等待上一帧发送结束才能发送,降低总线的响应。(仲裁只发生在总线空闲时,紧急的数据帧不会打断正在发送的数据帧)
(2)如果数据帧发送时错误需要重发,数据帧携带的有效数据太多,也会导致出错时花费的时间太多,降低总线实时性;

6、CANopen协议

参考系列博客:《虹科分享 | 简单实用的CANopen介绍,看完你就明白了(1)——CANopen基础概念》;

参考资料

(1)B站的视频:https://www.bilibili.com/video/BV1LV4y1j77s/?spm_id_from=444.41.top_right_bar_window_custom_collection.content.click&vd_source=6ae699e4ea314cc5a50ae4f74ad5e566;
(2)朱有鹏的《智能汽车课程》;

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

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

相关文章

MybatisPlus拦截器实战之数据的加解密和脱敏

文章目录 一、前言二、拦截器简介三、代码目录结构简介四、核心代码讲解4.1 application.yml文件4.2 自定义注解4.2.1 SensitiveEntity4.2.2 SensitiveData4.2.3 MaskedEntity4.2.4 MaskedField4.2.5 MaskedMethod 4.3 Mybatis-Plus 拦截器数据自动加密4.4 Mybatis 打印完整sql…

ChromeOS 的 Linux 操作系统和 Chrome 浏览器分离

导读科技媒体 Ars Technica 报道称,谷歌正在将 ChromeOS 的浏览器从操作系统中分离出来 —— 让它变得更像 Linux。虽然目前还没有任何官方消息,但这项变化可能会在本月的版本更新中推出。 据介绍,谷歌将该项目命名为 "Lacros"——…

strcat函数

目录 函数介绍: 函数声明: 具体使用: 注意事项: 字符串⾃⼰给⾃⼰追加,如何? 模拟实现strcat函数: 函数介绍: 被称为字符串的追加/链接函数,它的功能就是在一个字符…

【LeetCode-中等题】19. 删除链表的倒数第 N 个结点

文章目录 题目方法一:节点加入集合找索引方法二:直接计算长度,然后找出要删除的节点的前一个节点方法三:栈方法四:前后双指针 题目 这题的关键在与两个点 一定要设置一个哑结点,防止删除第一个元素时,导致空…

技能按钮CD效果

废话不多说,直接上代码! using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class Skill : MonoBehaviour//技能 {Button but;//技能按钮 Button组件Image img;//CD遮罩图片…

雷电模拟器9.0.56安装Magisk+LSPosd

雷电模拟器9.0.56安装MagiskLSPosd 一.准备软件1.MagiskLSPosd 我会放在文档资源那给你买下载2.雷电模拟器可以直接官网下载(我这里最新9.0.56版本)[https://www.ldmnq.com/](https://www.ldmnq.com/) 二.开始安装1. 先配置好模拟器2.安装软件3.配置 Mag…

挖数据四周年庆典,壕礼不断,惊喜不停!

挖数据四周岁啦!为了感谢广大用户们一路以来的支持与陪伴,我们特地准备了丰富的优惠活动,希望能够用最实际的行动来回馈您们的厚爱。四年的成长与蜕变,都是因为有您们的陪伴与鼓励,我们期待与您们一同分享这份喜悦与成…

当面临在职备考不确定性的结果时,你可能需要闭着眼冲一下

提前批面试在某种程度上像是联考分流幕后的那只无形之手,既助长了拿到优秀资格考生的备考热情,又打击了提面落榜考生的笔试自信心。就在这样的局面下,使得项目最终完成了联考前的分流操作。但如果你还是遵从自己的本心的话,就应该…

电脑编程自学(零基础自学编程怎么入门)

电脑编程自学入手:确定编程学习的方向。编程语言有多种:php,C++,C,C#,JAVA,Python等,每种语言都有不同的优缺点,可以根据自己的兴趣方向选择一门编程语言作为自己的学习目标。 基础阶段的语法学习。学习任何一门编程语言,都需要掌握其编程的语法规则,可以通过阅读一…

git入门教程

git入门教程 一、工作流程二、获取本地仓库三、Git常用指令1、查看文件状态2、查看提交日志3、版本回退4、添加文件至忽略列表 三、分支1、查看本地分支2、创建分支3、切换分支4、合并分支5、删除分支6、解决冲突 四、Git远程仓库1、常用的托管服务[远程仓库]2、注册码云3、创建…

gcc/linux下的c++异常实现

概述 本文不一定具有很好的说教性,仅作为自我学习的笔记。不妨可参阅国外大神博文C exceptions under the hood链接中包含了大量的例子。 偶有在对ELF做分析的时候看到如下图一些注释,部分关键字看不懂,比如什么FDE, unwind , __gxx_perso…

万字长文解析AQS抽象同步器核心原理(深入阅读AQS源码)

AQS抽象同步器核心原理 在争用激烈的场景下使用基于CAS自旋实现的轻量级锁有两个大的问题: CAS恶性空自旋会浪费大量的CPU资源。在SMP架构的CPU上会导致“总线风暴”。 解决CAS恶性空自旋的有效方式之一是以空间换时间,较为常见的方案有两种&#xff…

哔哩哔哩 B站 bilibili 视频倍速设置 视频倍速可自定义

目录 一、复制如下代码 二、在B站视频播放页面进入控制台 三、将复制的代码粘贴到下方输入框,并 回车Enter 即可 四、然后就可以了 一、复制如下代码 (该代码用于设置倍速为3,最后的数值是多少就是多少倍速,可以带小数点&#…

Kafka为什么这么快?

Kafka 是一个基于发布-订阅模式的消息系统,它可以在多个生产者和消费者之间传递大量的数据。Kafka 的一个显著特点是它的高吞吐率,即每秒可以处理百万级别的消息。那么 Kafka 是如何实现这样高得性能呢?本文将从七个方面来分析 Kafka 的速度优…

PCI控制器扫描PCI总线过程解析

1、PCI的三种地址空间介绍 地址空间描述命令说明I/O空间供给设备驱动程序使用I/O操作命令对设备对应的I/O地址空间进行访问,此类访问不可预取存储空间供给设备驱动程序使用memory操作命令对设备的Memory空间进行访问,其中Memory操作命令又可分为Prefech…

从PC传输文件到ipad

首先从PC上进入iTunes。剩下步骤如图所示。

【iPhone和iPad设备管理和文件传输工具】iMazing 2.9.9 for Mac

文章来源于:风云社区 iMazing 2.9.9 for Mac iMazing- 管理你的iPhone。获取可信赖的软件来传输和保存您的音乐,消息,文件和数据。安全备份任何iPhone,iPad或iPod touch。iMazing功能强大且用户友好,是Mac和PC的最佳…

ipad如何投屏到xbmc_询问操作技巧:在iPad上设置文件传输拖放区,XBMC,并使用控制台模拟器享受复古游戏...

ipad如何投屏到xbmc Once a week we round up some of the reader questions we’ve answered and share them with everyone; this week we’re taking a look at setting up file transfer drop zones, installing XBMC on the iPad, and setting up a console emulator. 每周…

iOS系统与Windows电脑如何做到无线传输文件?

iOS系统与Windows电脑传输文件,大多数人可能会选择使用微信或QQ的 “文件传输助手”,今天我教大家一种一分钟设置,便可永久传输的简单方法。快点赞收藏起来吧!! (此处用iPad 第8代 2020为例子)…

Nginx详解 第三部分:Nginx高级配置(附配置实例)

Part 3 一、网页的状态页二、Nginx第三方模块2.1 echo 模块 三、变量3.1 内置变量3.1.1 常用内置变量3.1.2 举个例子 3.2 自定义变量 四、自定义访问日志 (优化)4.1 自定义访问日志的格式4.2 自定义json 格式日志 五、Nginx压缩功能(重要)六、HTTPS 功能…