CAN总线学习笔记(1、CAN总线定义)

CAN总线学习笔记(1、CAN总线定义)

江协科技CAN总线入门教程视频学习笔记

CAN特性

  • 两根通信线(CAN_H\CAN_L),两根线,无需工地

  • 差分信号,抗干扰能力强

  • 高速CAN(ISO11898):125K-1Mbps,<40m

  • 低速CAN(ISO11519):10K-125Kbps,<1km

  • 异步,无需时钟线,通信速率由设备各自约定

  • 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序

  • 11/29位报文ID,用于区分消息功能,同时决定优先级

  • 可配置1-8字节有效载荷

  • 可实现广播式和请求式两种传输方式

  • 应答、CRC校验、位填充、位同步、错误处理等特性

CAN硬件电路

在这里插入图片描述

CAN电平标准

在这里插入图片描述

帧格式

帧类型

用途

数据帧

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

遥控帧

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

错误帧

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

过载帧

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

帧间隔

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

数据帧和遥控帧使用最多,其它3种帧做了解即可

数据帧

在这里插入图片描述

  • 在ack槽时,可以有多个接收方同时拉开总线,因为一个报文可以被多个设备同时接收。

  • SOF(start of frame):帧起始。表示后面一段波形为传输的数据位

  • ID(identify):标识符,区分功能,同时决定优先级

  • RTR(remote transmission request):远程请求位,区分数据帧和遥控帧

  • IDE(identifier Extension):扩展标志位,区分标准格式和扩展格式

  • SRR(substitute remote request):替代RTR,协议升级时留下的无意义位

  • r0/r1(reserve):保留位,为后续协议升级留下空间

  • DLC(data length code):数据长度,指示数据段有几个字节

  • Data:数据段的1-8个字节有效数据

  • CRC(cyclic redundancy check):循环冗余校验,校验数据是否正确

  • ACK(acknowledgement):应答位,判断数据有没有被接收方接收

  • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间

  • EOF(end of fram):帧结束,表示数据位已经传输完毕
    在这里插入图片描述

遥控帧

遥控帧无数据段,RTR为隐形电平1,其它部分与数据帧相同
在这里插入图片描述

仲裁

多设备同时发送时的规则

  • 数据帧和遥控帧ID一样时,数据帧RTR位为显性电平0,所以数据帧的优先级高于遥控帧

  • 数据帧的标准格式和扩展格式的高11位一样时,扩展帧的SRR为隐性电平1,所以标准格式的优先级高于扩展格式

  • 标准遥控帧和扩展数据帧高11位一样时,标准遥控帧的IDE位为显性电平0,所以标准遥控帧的优先级高于扩展数据帧

先到先得

  • 已有设备在操作总线发送数据帧/遥控帧,则其它设备不能再同时发送数据帧/遥控帧(可以发送错误帧/过载帧破坏当前数据)

  • 只有在总线空闲时(连续检测到11个隐性电平),设备才能发送数据帧/遥控帧

非破坏性仲裁

  • CAN总线根据ID进行非破坏性仲裁,ID号小的(优先级高)取到总线控制权,ID号大的(优先级低)仲裁失利后将转入接收状态,等待下一次总线空闲时再尝试发送。

  • 线与特性:总线上任何一个设备发送显性电平0时,总线就会呈现显性电平0状态;只有总线上所有设备都发送隐性电平1时,总线才会呈现隐性电平1状态

  • 回读机制:每个设备发出一个数据位后,都会读回总线当前的电平状态,以确定自己的电平被发送。

错误处理

错误类型

错误类型

错误的内容

错误的检测帧(段)

检测单元

位错误

比较输出电平和回读信号,当两电平不一样时产生此错误

  • 数据帧(SOF-EOF)

  • 遥控帧(SOF-EOF)

  • 错误帧

  • 过载帧

发送单元

接收单元

填充错误

连续检测到6位相同电平时产生此错误

  • 数据帧(SOF-CRC)

  • 遥控帧(SOF-CRC)

发送单元

接收单元

CRC错误

计算的CRC结果和接收到的CRC不一样时产生此错误

  • 数据帧

  • 遥控帧

接收单元

格式错误

再固定电平字段检测到相反电平时产生此错误

  • 数据帧

  • 遥控帧

  • 错误界定符

  • 过载界定符

接收单元

ACK错误

发送单元再ACK槽中检测出隐性电平,即没有接收发应答时产生此错误

  • 数据帧(ACK槽)

  • 遥控帧(ACK槽)

发送单元

错误状态

通过状态机切换设备错误状态

  • 设备初始状态为主动错误状态

  • 主动错误状态检测到错误时,发送主动错误状态帧,会破坏数据传输

  • 当TEC或REC>127时,设备进入被动错误状态,此时检测到错误,发送被动错误,不会破坏数据传输,

  • 当TEC>255时,设备进入总线关闭状态
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

【算法】【优选算法】双指针(下)

目录 一、611.有效三⻆形的个数1.1 左右指针解法1.2 暴力解法 二、LCR 179.查找总价格为目标值的两个商品2.1 左右指针解法2.2 暴力解法 三、15.三数之和3.1 左右指针解法3.2 暴力解法 四、18.四数之和4.1 左右指针解法4.2 暴力解法 一、611.有效三⻆形的个数 题目链接&#x…

Docker 镜像体积优化实践:从基础镜像重建到层压缩的全流程指南

​ 由于最近在发布的时候发现docker镜像体积变得越来越大&#xff0c;导致整个打包发布流程变得非常耗时了。所以又接到一个差事&#xff0c;优化最终镜像体积。顺便也记录一下docker镜像体积优化的一些步骤。 大概步骤可以分为以下几个步骤&#xff1a; 重做基础镜像&#x…

路径规划 | ROS中多个路径规划算法可视化与性能对比分析

目录 0 专栏介绍1 引言2 禁用局部规划器3 路径规划定性对比实验3.1 加载路径规划器和可视化插件3.2 设置起点和终点3.3 选择规划器规划3.4 不同规划器对比3.5 路径保存和加载 4 路径规划定量对比实验4.1 计算规划耗时4.2 计算规划长度4.3 计算拓展节点数4.4 计算路径曲率4.5 计…

十四届蓝桥杯STEMA考试Python真题试卷第二套第五题

来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第五题 本题属于迷宫类问题,适合用DFS算法解决,解析中给出了Python中 map() 和列表推导式的应用技巧。最后介绍了DFS算法的两种常见实现方式——递归实现、栈实现,应用场景——迷宫类问题、图的连通性、树的遍历、拓朴排…

【CSS】——基础入门常见操作

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;CSS引入 二&#xff1a;CSS对元素进行美化 1&#xff1a;style修饰 2&#xff1a;选…

RV1126-SDK学习之OSD实现原理

RV1126-SDK学习之OSD实现原理 前言 本文简单记录一下我在学习RV1126的SDK当中OSD绘制的原理的过程。 在学习OSD的过程当中&#xff0c;可能需要补充的基础知识&#xff1a; OSD是什么&#xff1f; BMP图像文件格式大致组成&#xff1f; 图像调色&#xff08;Palette&#…

Vehicle OS软件平台解决方案

在智能汽车快速迭代的趋势之下&#xff0c;广义操作系统Vehicle OS应运而生&#xff0c;针对应用软件开发周期缩短和底层硬件迭代速度加快的背景&#xff0c;Vehicle OS将应用软件开发和底层硬件迭代解耦。它降低了迭代工作量并节约成本&#xff0c;用标准化的接口来助力软件定…

Chromium Mojo(IPC)进程通信演示 c++(1)

网上搜索关于mojo教程 多数都是理论 加上翻译谷歌mojo文档的&#xff0c;但是如何自定义两个进程使用mojo通信呢&#xff1f;看下面的完整例子介绍&#xff1a;&#xff08;本人也是参考谷歌代码例子改编而成&#xff09; 本文演示了client.exe和service.exe 通过mojo::Incomin…

sparkSQL面试题

一、查询所有数学课程成绩大于语文课程成绩的学生学号 数据 1,yuwen,43 1,shuxue,55 2,yuwen,77 2,shuxue,88 3,yuwen,98 3,shuxue,65 3,yingyu,88 基本步骤&#xff1a; 进行行转列比较语文与数学的成绩 SQL代码&#xff1a; with t1 as(SELECT id,sum(if(name yuwen,sc…

算法|牛客网华为机试21-30C++

牛客网华为机试 上篇&#xff1a;算法|牛客网华为机试10-20C 文章目录 HJ21 简单密码HJ22 汽水瓶HJ23 删除字符串中出现次数最少的字符HJ24 合唱队HJ25 数据分类处理HJ26 字符串排序HJ27 查找兄弟单词HJ28 素数伴侣HJ29 字符串加解密HJ30 字符串合并处理 HJ21 简单密码 题目描…

浅谈QT中Tab键的切换逻辑

浅谈QT中Tab键的切换逻辑 无意中发现在输入界面中按下Tab键时&#xff0c;没有按照预想的顺序切换焦点事件&#xff0c;如下图所示 这个现象还是很有趣&#xff0c;仔细观察了下&#xff0c;默认的切换顺序是按照控件拖入顺序&#xff0c;那么知道了这个问题想要解决起来就很简…

科研绘图系列:R语言组合连线图和箱线图(linechart+boxplot)

文章目录 介绍加载R包数据数据预处理画图1画图2系统信息介绍 连线图(Line Chart)是一种常用的数据可视化图表,它通过将一系列数据点用直线段连接起来来展示数据随时间或有序类别变化的趋势。以下是连线图可以表示的一些内容: 时间序列数据:展示数据随时间变化的趋势,例如…

PKG_CHECK_MODULES(FUSE,fuse)

运行 ./configure 命令报错如下&#xff1a; ./configure: line 13934: syntax error near unexpected token FUSE,fuse ./configure: line 13934: PKG_CHECK_MODULES(FUSE,fuse)解决方案&#xff1a; 命令窗口运行如下命令&#xff0c;安装 pkg-config&#xff1a; sudo …

react18中redux-promise搭配redux-thunk完美简化异步数据操作

用过redux-thunk的应该知道&#xff0c;操作相对繁琐一点&#xff0c;dispatch本只可以出发plain object。redux-thunk让dispatch可以返回一个函数。而redux-promise在此基础上大大简化了操作。 实现效果 关键逻辑代码 store/index.js import { createStore, applyMiddlewar…

Lucene分析器的详细使用(5)

文章目录 第5章 分析器5.1 分析器的组成5.1.1 字符过滤器1&#xff09;HTMLStripCharFilter2&#xff09;PatternReplaceCharFilter3&#xff09;MappingCharFilter4&#xff09;Luke使用字符过滤器 5.1.2 分词器1&#xff09;StandardTokenzier2&#xff09;keywordTokenizer3…

selinux和防火墙

SElinux 1、selinux代表的什么&#xff1f; SELinux是Security-Enhanced Linux的缩写&#xff0c;意思是安全强化的linux。 SELinux 主要由美国国家安全局&#xff08;NSA&#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 SELinux是对程序、文件等权限设置依…

CentOS 7 安装 ntp,自动校准系统时间

1、安装 ntp yum install ntp 安装好后&#xff0c;ntp 会自动注册成为服务&#xff0c;服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…

Oracle OCP认证考试考点详解082系列11

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 51. 第51题&#xff1a; 题目 51.View the Exhibit and examine the description of the tables You execute this SQL statement Whi…

C#属性 Property

属性Property不是变量。 它们是由名为访问器方法来实现的一种方法。 实例属性表示的是实例的某个数据&#xff0c;通过这个数据反映实例当前的状态 静态属性表示的是类型的某个数据&#xff0c;通过这个数据反映类型当前的状态 意义&#xff1a; 防止恶意赋值(通过属性间接访问…

Spring框架的事务管理

目录 一、spring框架事务管理相关的类 1.PlatformTransactionManager接口 2.TransactionDefinition接口 二、spring框架声明式事务管理 1.配置文件的方式 &#xff08;1&#xff09;配置文件 &#xff08;2&#xff09;业务层 &#xff08;3&#xff09;持久层 &#…