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://www.rhkb.cn/news/108132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 求满足条件的最长子串的长度 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

无人驾驶领域的软件测试该如何开展?

无人驾驶汽车使用自主决策和控制系统,这种系统通常由多个软件和硬件组件组成。软件测试是必要的,因为它可以确保无人驾驶汽车的软件系统达到高度可靠性和安全性,以及提高无人驾驶汽车的性能和可靠性。 因此无人驾驶汽车是一定要进行严格的软件…

关于类的隐形生成函数

https://www.youtube.com/watch?ve8Cw17p_BiU&listPL5jc9xFGsL8FWtnZBeTqZBbniyw0uHyaH&index6 https://www.youtube.com/watch?vKMSYmY74AEs&listPLE28375D4AC946CC3&index4 如果只有copy asignment operator, 那么default construct will be generated as…

PyCharm软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 PyCharm是一种集成开发环境(IDE),专门为Python开发者设计。它是由捷克软件公司JetBrains开发的,为Python开发人员提供了高效、易用和功能丰富的工具集。 以下是PyCharm软件的主要…

【C语言】操作符大全(保姆级介绍)

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将详细介绍各种操作符的功能。 目录: 📘 前言① 算术操作符②移位操作符③位操作符④赋值操…

JS-this知识点、面试题

一、this指向什么 1.简介 2.规则一:默认绑定 3.规则二:隐式绑定 4.规则四:new绑定 5.规则三:显式绑定 call、apply、bind 6.内置函数的绑定 7.规则优先级 8.this规则之外--es6剪头函数 9.ES6剪头函数this 二、This面试题 面试题…

解决Spring Boot项目中pom.xml环境配置 打包后生效 但idea版本运行无效的问题

上文 Spring Boot中通过maven进行多环境配置 中我们通过pom.xml配置了环境选择 但这个只有在打包出来的jar中生效 我们直接通过 idea启动 这个东西确实是有点问题 其实 我们执行一下 compile 手工编译一下 然后重新启动 很明显 我们这里配置就已经生效了 这个就是 我们每次…

成功解决SQL 错误 [22000]: 第3 行附近出现错误: 试图修改自增列[ID](达梦数据库)

当我们使用工具来手动修改自增列的自增ID时,可能会报如下异常 SQL 错误 [22000]: 第3 行附近出现错误:试图修改自增列[ID] 解决办法: 可以使用SQL语句来修改 ALTER TABLE "fdw"."SYSTEM_DICT_TYPE" DROP IDENTITY; UPDATE "f…

【python】python智能停车场数据分析(代码+数据集)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

LeetCode-738-单调递增的数字

题目描述&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 解题思路&#xff1a; 先将int变成char[]&#xff0c;获取…

【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

【JavaEE】Spring事务&#xff08;2&#xff09; 文章目录 【JavaEE】Spring事务&#xff08;2&#xff09;1. Transactional 参数介绍1.1 value 和 transactionManager1.2 timeout1.3 readOnly1.4 后面四个1.5 isolation 与 propagation 2. Spring 事务隔离级别 - isolation2.…

Git入门

本文主要介绍Git的入门知识。首先讲述版本控制工具的一些背景&#xff0c; 然后介绍如何在你自己的系统上安装.配置和运行Git。学完本文,你将明白Git是怎么来的、为什么需要Git,并掌握使用Git的基础知识。 一、版本控制 什么是“版本控制”&#xff0c;为什么需要它?版本控制是…

5G NR:PRACH时域资源

PRACH occasion时域位置由高层参数RACH-ConfigGeneric->prach-ConfigurationIndex指示&#xff0c;根据小区不同的频域和模式&#xff0c;38.211的第6.3.3节中给出了prach-ConfigurationIndex所对应的表格。 小区频段为FR1&#xff0c;FDD模式(paired频谱)/SUL&#xff0c;…

RHCE——八、DNS域名解析服务器

RHCE 一、概述1、产生原因2、作用3、连接方式4、因特网的域名结构4.1 拓扑4.2 分类4.3 域名服务器类型划分 二、DNS域名解析过程1、分类2、解析图&#xff1a;2.1 图&#xff1a;2.2 过程分析 三、搭建DNS域名解析服务器1、概述2、安装软件3、/bind服务中三个关键文件4、配置文…

什么是 API ?

一、API 的定义&#xff1a;数据共享模式定义 4 大种类 作为互联网从业人员&#xff0c;API 这个词我耳朵都听起茧子了&#xff0c;那么 API 究竟是什么呢&#xff1f; API 即应用程序接口&#xff08;API&#xff1a;Application Program Interface&#xff09;&#xff0c;…

基于YOLOV8模型的课堂场景下人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOV8模型的课堂场景下人脸目标检测系统可用于日常生活中检测与定位课堂场景下人脸&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…

c#设计模式-创建型模式 之 原型模式

概述 原型模式是一种创建型设计模式&#xff0c;它允许你复制已有对象&#xff0c;而无需使代码依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制来获得&#xff0c;而不是每次都重新创建。 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具…

基于微信小程序的垃圾分类系统设计与实现(2.0 版本,附前后端代码)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址&#xff1a; 基于微信小程序的智能垃圾分类回收系统&#xff0c;可作为毕业设计 小…

ctfshow-web-红包题第六弹

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先跑一下字典&#xff0c;这里用的dirmap,可以看到有一个web.zip 下载下来之后发现是一个网站备份&#xff0c;备份的是check.php.bak 然后接着看&#xff0c;可以看到这里不太可能是sql注入&#xff0c;有…

构建 NodeJS 影院预订微服务并使用 docker 部署(04/4)

一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 我们前几章的快速回顾 第一篇文章介绍了微服务架构模式&#xff0c;并讨论了使用微服务的优缺点。第二篇…