CAN总线协议

电气特性

  • 高速CAN:电压差为0V时表示逻辑1(隐性电平),电压差为2V时表示逻辑0(显性电平),速率:125Kbps~1Mbps。
  • 低速CAN:电压差为-1.5V时表示逻辑1(隐性电平),电压差为3V时表示逻辑0(显性电平) 速率:10~125Kbps。
    高速CAN传输速度快,但是传输距离只有几十米、低速CAN传输距离远,可达1000多米。
    在这里插入图片描述

帧格式

在这里插入图片描述
- 数据帧:在这里插入图片描述
CAN数据帧的Data段是高位先行的,即先发送数据的高位。
标准格式:
空闲状态时,总线逻辑电平为1,当要发送数据时,先是发送SOF(低电平0)帧起始位,仲裁段为11位ID+1位RTR,描述了帧ID,后续1位RTR(远程请求标志位),0表示数据帧,1表示遥控帧;下面是控制段五位,其中IDE为ID扩展标志位,用于区分标准格式还是扩展格式,0表示标准格式,1表示扩展格式。r0必须是显性电平0,是保留位,后面是DLC(4位),表示数据段Data长度的字节数,所以后面的数据段长度是0~64位可变。后面是CRC段,使用CRC进行校验。后面是ACK段,其中ACK槽占1位,目的是当发送方发送完数据后,释放掉总线,使得总线变成默认的高电平1,如果接收方成功接收到数据,接收方会主动将总线变为低电平0,这是发送方读取总线发现总线已被拉低,表明发送已被接收。随后是一个固定为1的ACK界定符,最后是长度7位的EOF帧结束(注意,这里的7位1不是由发送方发送的,而是发送方和接收方均释放了总线的控制权,由默认高电平1保持7位时间长度)。
扩展格式:
首先第一位还是低电平0的SOF(注意图中中间的区域连接线),随后是高11位的ID,随后的SRR是为了兼容标准格式并且固定为1方便与标准格式中RTR进行仲裁时,让出总线,再后面IDE用于区分标准格式还是扩展格式,为1表示扩展格式,随后是低18位的ID,再后面跟一位RTR,0表示数据帧,1表示遥控帧。在后面r1和r0保留位,随后4位DLC表示数据段的长度字节数,在后面就是可变的Data段,然后CRC段,CRC界定符、ACK槽、ACK界定符、EOF。

- 遥控帧
遥控帧无数据段,RTR为隐性电平1,其他部分与数据帧相同。
在这里插入图片描述
错误帧
在这里插入图片描述
过载帧
在这里插入图片描述
帧间隔
在这里插入图片描述

位填充

在这里插入图片描述

位同步

在这里插入图片描述
保证每次跳变都在ss同步段上,即可保证每一位的采样点(PBS1和PBS2之间)是准确的。
在这里插入图片描述
在这里插入图片描述
位填充的目的就是确保不会长时间不出现跳变沿,而跳变沿可以用来再同步。根据ss段比跳变早还是比跳变迟而决定是加长PBS1段还是缩短PBS2段。

仲裁

  1. 先占先得
    在这里插入图片描述
    为何是11个隐性电平(逻辑1)?因为数据帧和遥控帧的ACK界定符固定为1,后面是7个EOF固定为1,再加上一个3位的帧间隔固定为1,一共11位。

  2. 非破坏性仲裁
    在这里插入图片描述
    在这里插入图片描述
    主要依靠线与特性,id小的首先到达0位置,而其他设备由于发送的帧id较大,此时还是发送1,因为0与其他设备发送的1线与得到0,所以总线电平还是表示0,当发送较大id的帧的设备回读总线时,会发现读到的不是发出的1,说明有其他设备正在发送id较小的帧,本设备让出总线,转为接收状态。注意id是帧id,而不是设备id。
    在这里插入图片描述
    数据帧和遥控帧之间可以id一样,但是各自内部不允许id重复。
    在这里插入图片描述
    扩展格式中SRR固定为1就是此目的,为何和标准格式中RTR为0时进行仲裁,让出总线。

同样还有标准遥控帧和扩展数据帧之间的仲裁,当高11位ID完全相同时,标准遥控帧的RTR是1,扩展数据帧的SRR也为1,两者取法区分,但是各自下一位都是IDE就会有所不同,标准遥控帧的IDE是0,扩展数据帧的IDE是1,所以还是标准遥控帧优先获得总线。

错误处理

在这里插入图片描述
当有设备检测到总线上的数据存在以上错误时,会发送错误帧破坏当前总线上的帧传输。
在这里插入图片描述处于主动错误状态,说明这个节点目前是比较可靠的,出现错误的原因可能不是它本身的问题,即刚刚检测到的错误可能不仅仅只有它检测到,正因为如此,整个总线才允许它破坏正在发送中的报文。
处于被动错误状态,说明这个节点目前是不可靠的,出现错误的原因可能是它本身的问题,即刚刚检测到的错误可能只有它自己检测到,正因为如此,整个总线不会信任它的报告,从而只允许它发送6个连续的隐性位,这样才不会拖累其他节点。
处于总线关闭状态的节点不允许发送和接收任何形式的帧报文。且只能通过用户请求或者128个11位连续的隐性位(1)进行恢复。
在这里插入图片描述

字节序和位序

字节序(Byte Order)在数据传输中的应用
数据在发送过程中,字节序决定了多字节数据(如整数、浮点数等)如何按照字节顺序传输。常见的字节序有:

大端字节序(Big Endian):高字节首先发送。
小端字节序(Little Endian):低字节首先发送。

在某些通信协议(如网络协议)中,字节序是有规定的,通常会采用一种标准的字节序,以保证不同系统之间能够正确理解数据。最常见的标准字节序是 网络字节序,它使用的是 大端字节序。

位序(Bit Order)在数据传输中的应用
位序是指在每个字节内,数据的各个位是如何顺序传输的。位序影响的是字节内部位的顺序,而字节序影响的是字节之间的顺序。

在数据传输时,位序有两种常见的方式:**摩托罗拉位序(Motorola Bit Order)**和 Intel位序(Intel Bit Order)

摩托罗拉位序(Motorola Bit Order):
这种位序方式是 大端位序(MSB First),即一个字节的最高有效位(MSB)首先传输。
在摩托罗拉位序中,字节内的位是从左到右按顺序传输的。
例如,字节 0xF0(二进制为 11110000)在摩托罗拉位序中会被传输为:
1 1 1 1 0 0 0 0

Intel位序(Intel Bit Order):
这种位序方式是 小端位序(LSB First),即一个字节的最低有效位(LSB)首先传输。
在Intel位序中,字节内的位是从右到左按顺序传输的。
例如,字节 0xF0(二进制为 11110000)在Intel位序中会被传输为:
1 1 1 1 0 0 0 0 → 0 0 0 0 1 1 1 1(反转)

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

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

相关文章

Nginx简易配置将内网网站ssh转发到外网

声明:本内容仅供交流学习使用,部署网站上线还需要根据有关规定申请域名以及备案。 背景 在内网的服务器有一个运行的网页,现使用ssh反向代理,将它转发到外网的服务器。 但是外网的访问ip会被ssh反向代理拦截 所以使用Nginx进行…

决策树算法

决策树算法对数据进行分类的一种算法,根据数据的属性进行分类,例如对鸢尾花进行分类,可以根据花瓣大小进行分类。决策树可以使用信息熵和基尼指数进行数据分类。 信息熵:信息熵越低,样本不确定性越小,对应…

程序员学长 | 最强总结,机器学习中处理不平衡数据集的五种方法!!

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。 原文链接:最强总结,机器学习中处理不平衡数据集的五种方法!! 今天给大家分享处理不平衡数据集的常用方法。 在开始之前&…

08 Oracle数据库故障应对与恢复策略:全面掌握RMAN恢复方法

文章目录 Oracle数据库故障应对与恢复策略:全面掌握RMAN恢复方法一、故障场景及恢复策略1.1 实例失败1.2 介质故障1.3 数据丢失 二、RMAN恢复方法详解2.1 全库恢复2.2 增量恢复2.3 时间点恢复 三、实践与总结 Oracle数据库故障应对与恢复策略:全面掌握RM…

线段树专题(1)

线段树 线段树可维护的信息类型 线段树可以维护的信息类型,父范围上的某个信息,可以用O(1)的时间,从子范围的信息加工得到,例如求某个范围的最大最小值,给某个范围每个位置加相同的数字,进行求和。 0到2范…

Linux应用开发基础知识——tslib应用编程(十一)

文章目录 一、tslib是啥?二、tslib 框架分析三、交叉编译、测试 tslib3.1、交叉编译tslib(1)设置交叉编译工具链(2)进入tslib目录(3)安装工具链(4)确定工具链中头文件、库…

MySQL必会知识精华6(组合WHERE子句)

我们的目标是:按照这一套资料学习下来,大家可以完成数据库增删改查的实际操作。同时轻松应对面试或者笔试题中MySQL相关题目。 上篇文章我们先做一下数据库的where条件过滤的方法,都是单个条件的过滤。本篇文章主要介绍查询的组合WHERE子句的…

系统架构师2023版:习题

架构设计基础 计算机基础 目前处理器市场中存在 CPU 和 DSP 两种类型的处理器,分别用于不同的场景,这两种处理器具有不同的体系结构,DSP采用()。 A.冯诺依曼结构 B.哈佛结构 C.FPGA 结构 D.与 GPU 相同的结构 解析:…

企微SCRM价格解析及其性价比分析

内容概要 在如今的数字化时代,企业对于客户关系管理的需求日益增长,而企微SCRM(Social Customer Relationship Management)作为一款新兴的客户管理工具,正好满足了这一需求。本文旨在为大家深入解析企微SCRM的价格体系…

RocketMQ学习笔记

RocketMQ笔记 文章目录 一、引言⼆、RocketMQ介绍RocketMQ的由来 三、RocketMQ的基本概念1 技术架构2 部署架构 四、快速开始1.下载RocketMQ2.安装RocketMQ3.启动NameServer4.启动Broker5.使⽤发送和接收消息验证MQ6.关闭服务器 五、搭建RocketMQ集群1.RocketMQ集群模式2.搭建主…

基于AI大模型开发应用层产品经典解决方案:ASR+LLM+TTS

在 AI 大模型开发领域,ASR(自动语音识别)LLM(大语言模型)TTS(语音合成)的解决方案是一种将语音输入、语言理解和语音输出整合在一起的技术架构,能够实现智能的语音交互应用。 方案介…

tree-transfer-vue3插件(树形数据穿梭框)

tree-transfer-vue3 效果图 简介 tree-transfer-vue3 是一个基于 VUE 和 element-plus 的树形穿梭框组件,使用前请确认已经引入element-plus! 此组件功能类似于element-plus的transfer组件,但是里面的数据是树形结构! 实际上&am…

临床检验方法与仪器 第一部分作业:光谱分析仪器与技术的总结与归纳+新型光谱仪的调研

临床检验方法与仪器 第一部分作业 列表归纳紫外-可见分光光度计、荧光光谱分析仪、原子吸收光谱仪、原子发射光谱仪的原理、特点、技术优势和主要应用对象;调研新型光谱仪,每一类至少提供1个例子,列出图片、厂家、型号、主要技术特点和优势。…

Linux系统编程-多线程线程属性

如何查看有那些多线程系统调用属性api 线程属性系统api举例 /* int pthead_attr_init(pthread_attr_t *attr); -对属性变量初始化int pthread_attr_destroy(pthread_attr_t *attr); -使用完毕需要销毁int pthread_attr_getdetachstate(const pthread_attr_t *attr, int*detach…

LVGL加入外围字库

一、首先lvgl是有自带字库的 lvgl/src/font 如下图 二、但如果这个字库不能满足我们的需求我们就要外建字库。 1、字库生成软件LVGL官网,字体转换器 — LVGL如下图: 最后按“提交”就可以看到有一个字体被下载到你电脑里。他是以.c文件的型式,把它COPY到lvgl的根目录下 2、…

【Steam登录】protobuf协议逆向

https://api.steampowered.com/IAuthenticationService/GetPasswordRSAPublicKey/v1 搜索 input_protobuf_encoded定位 input_protobuf_encoded的值就是 o s r.SerializeBody() o i.iI(s) 精准定位 打上条件断点:t ‘Authentication.GetPasswordRSAPublicKey…

ML 系列:第 21 节 — 离散概率分布(二项分布)

一、说明 二项分布描述了在固定数量的独立伯努利试验中一定数量的成功的概率,其中每个试验只有两种可能的结果(通常标记为成功和失败)。 二、探讨伯努利模型 例如,假设您正在抛一枚公平的硬币 (其中正面成功&#xff…

【模拟集成电路】知识点笔记_1

知识点笔记_1 零极点相关1 PM和GM相关概念2零极点 温度系数五种常见噪声源MOS管和BJT选取BJT刨面图工艺角衬底主要噪声来源共模反馈三种常用CMFB1 工作在线性区MOS作为CMFB(匹配决定输出电压)2 电阻反馈(Buf)3 电流差分对&#xf…

资产管理:SpringBoot框架的高效解决方案

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

Redis - 集群(Cluster)

一、基本概念 上述的哨兵模式,提⾼了系统的可⽤性.但是真正⽤来存储数据的还是master和slave节点.所有的数 据都需要存储在单个master和slave节点中. 如果数据量很⼤,接近超出了master/slave所在机器的物理内存,就可能出现严重问题了. 如何获取更⼤的空间?加机器即可!所谓&q…