CAN总线协议基础知识概要

目录

概述

1 引子

1.1 一张图认识CAN总线

1.2 CAN物理层实现

1.3 CAN标准规格

2 CAN协议介绍

2.1 数据帧

2.2 遥控帧

2.3 错误帧

2.4 过载帧

2.5 帧间隔

3 详解数据帧(Data Frame)

3.1 仲裁场

3.2 识别符

3.2.1 RTR(远程发送请求位)

3.2.2 IDE 位(扩展格式)

3.3 控制场

 4 参考文献


概述

      本文介绍CAN总线的相关知识,包括CAN物理层结构,协议内容,数据帧结构,数据帧的组成。通过阅读该文章,能对CAN协议有一个基础性的理解。

1 引子

        CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需要, 1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后, CAN 通过 ISO11898 及 ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。现在, CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

1.1 一张图认识CAN总线

下图为经典的车载网络的构想示意图,通过这张图可以提炼出如下信息:

1)不同CAN总线网络,其工作的波特率可以不同,例如上图中的波特率分别有: 125kbps、150kbps、500kbps

2)一条CAN总线上可以挂载多个设备

3)多条CAN总线通过网关,可以构成一个CAN网络的拓扑结构

1.2 CAN物理层实现

CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发 送方通过使总线电平发生变化,将消息发送给接收方。

如下表格详细介绍High speed和Low speed的差异。

ISO11898和 ISO11519-2 的物理层特征 :

1.3 CAN标准规格

      下图为不同的行业CAN总线定义的使用标准,用户可以根据不同的行业应用场景,选择不同的协议标准。

2 CAN协议介绍

      通信是通过以下 5 种类型的帧进行的,其分别为:数据帧、 遥控帧、错误帧、过载帧、帧间隔 。每种帧的作用如下图:

2.1 数据帧

       数据帧由 7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、 CRC 场、应答场、帧结尾。数据场的长度可以为 0。

起始帧

它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。只在总线空闲(参见“总线空闲”)时,才允许站开始发送(信号)。所有的站必须同步于第一个开始发送信息的站帧起始前沿(参见“硬同步”)。

仲裁场

仲裁场包括识别符和远程发送请求位( RTR)。识别符:识别符的长度为 11 位。这些位的发送顺序是从 ID-10 到 ID-0。最低位是 ID-0。最高的 7 位( ID-10 到 ID-4)必须不能全是“隐性”。 RTR 位:该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。

控制场

控制场由 6 个位组成, 包括数据长度代码和两个将来作为扩展用的保留位。 所发送的保留位必须为“显 性”。接收器接收所有由“显性”和“隐性”组合在一起的位。数据长度代码:数据长度代码指示了数据场中字节数量。数据长度代码为 4 个位,在控制场里被发送。

数据场

数据场由数据帧中的发送数据组成。它可以为 0~8 个字节,每字节包含了 8 个位,首先发送 MSB。

CRC场

CRC 场包括 CRC 序列( CRC SEQUENCE),其后是 CRC 界定符( CRC DELIMITER)。 CRC 序列:由循环冗余码求得的帧检查序列最适用于位数低于 127 位〈BCH 码〉的帧。为进行 CRC计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、控制场、数据场(假如有),而 15 个最低位的系数是 0。将此多项式被下面的多项式发生器除(其系数以 2 为模):

应答场

应答场长度为 2 个位,包含应答间隙( ACK SLOT)和应答界定符( ACK DELIMITER)。在应答场 里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙( ACK SLOT) 期间(发送 ACK 信号)向发送器发送一“显性”的位以示应答。

帧结尾

每一个数据帧和远程帧均由一标志序列界定。这个标志序列由 7 个“隐性”位组成。

2.2 遥控帧

       远程帧也有标准格式和扩展格式,而且都由 6 个不同的位场组成: 帧起始、仲裁场、控制场、 CRC 场、应答场、帧结尾。

1)遥控帧作用:作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。

2)遥控帧组成: 由 6 个不同的位场组成,其分别为帧起始、仲裁场、控制场、 CRC 场、应答场、帧末尾。

3)遥控帧特性: 与数据帧相反,远程帧的 RTR 位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里 0...8 的任何数值)。此数值是相应于数据帧的数据长度代码。 RTR 位的极性表示了所发送的帧是一数据帧( RTR 位“显性”)还是一遥控帧( RTR“隐性”)。

2.3 错误帧

       错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志( ERROR FLAG)的叠加。第二 个场是错误界定符。

错误帧注意点:

1)“错误被动”的节点要求总线至少有长度为 3 个位时间的总线空闲。因此要求总线必须有空闲时间间隙。

2)错误标志类型:

主动错误标志( Active error flag): 主动错误标志由 6 个连续的“显性”位组成

被动错误标志( Passive error flag): 动错误标志由 6 个连续的“隐性”的位组成,除非被其他 节点的“显性”位重写。

3)检测错误标志方法:

检测到错误条件的“错误主动”的站通过发送主动错误标志,以指示错误。错误标志的形式破坏了从帧起始到 CRC 界定符的位填充规则(参见“编码”),或者破坏了应答场或帧末尾场的固定形式。所有其他的站由此检测到错误条件并与此同时开始发送错误标志。因此,“显性”位(此“显性”位可以在总线上监视)的序列导致一个结果,这个结果就是把各个单独站发送的不同的错误标志叠加在一起。这个顺序的总长度最小为 6 个位,最大为 12 个位。 检测到错误条件的“错误被动”的站试图通过发送被动错误标志,以指示错误。“错误被动”的站等待 6 个相同极性的连续位(这 6 个位处于被动错误标志的开始)。当这 6 个相同的位被检测到时,被动错误标志的发送就完成了。

4) 错误界定符包括 8 个“隐性”的位 错误标志传送了以后,每一站就发送“隐性”的位并一直监视总线直到检测出一个“隐性”的位为止。然后就开始发送 7 位以上的“隐性”位。

2.4 过载帧

        过载帧包括两个位场:过载标志和过载界定符。 有两种过载条件都会导致过载标志的传送:

1).接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时)。

2).间歇场期间检测到一“显性”位。 由过载条件 1 而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件 2 引发的过载帧应起始于所检测到“显性”位之后的位。

3) 过载标志 过载标志由 6 个“显性”的位组成。过载标志的所有形式和主动错误标志的一样。过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到一过载条件并与此同时发出过载标志。万一有的节点在间歇的第 3 个位期间于本地检测到“显性”位,则其他的节点将不能正确地解释过载标志,而是将这 6 个“显性”位中的第一个位解释为帧的起始。这第 6 个“显性”的位破坏了产生错误条件的位填充的规则。

4)过载界定符 过载界定符包括 8 个“隐性”的位。过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线直到检测到一个从“显性”位到“隐性”位的发送(过渡形式)。此时,总线上的每一个站完成了过载标志的发送,并开始同时发送 7 个以上的“隐性”位 。

2.5 帧间隔

          数据帧(或远程帧)与其前面帧的隔离是通过帧间空间实现的,无论其前面的帧为何类型(数据帧、远程帧、错误帧、过载帧)。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。

3 详解数据帧(Data Frame)

       数据帧由 7 个不同的位场组成:帧起始( Stsrt of Frame)、仲裁场( Arbitration Frame)、控制场( Control Frame)、数据场( DataFrame)、 CRC 场( CRC Frame)、应答场( ACK Frame)、帧结尾( End of Frame)。数据场的长度可以为 0。

3.1 仲裁场

3.2 识别符

1)识别符—标准格式 识别符的长度为 11 位,相当于扩展格式的基本 ID( Base ID)。这些位按 ID-28 到 ID-18 的顺序发送。最低位是 ID-18。 7 个最高位(ID-28 - ID-22)必须不能全是“隐性”。 2)识别符—扩展格式 和标准格式形成对比,扩展格式由 29 位组成。其格式包含两个部分: 11 位基本 ID、 18 位扩展 ID。基本 ID:基本 ID 包括 11 位。它按 ID-28 到 ID-18 的顺序发送。它相当于标准识别符的格式。基本 ID定义扩展帧的基本优先权。 扩展 ID:扩展 ID 包括 18 位。它按 ID-17 到 ID-0 顺序发送。

3.2.1 RTR(远程发送请求位)

      识别符其后是 RTR 位。RTR 位(标准格式以及扩展格式)RTR 的全称为“远程发送请求位( Remote Transmission Request BIT)”。RTR 位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”扩展格式里,基本 ID 首先发送,其次是 IDE 位和 SRR 位。扩展 ID 的发送位于 SRR 位之后。 SRR 位(扩展格式)SRR 的全称是“替代远程请求位( Substitute Remote Request BIT)”。SRR 是一隐性位。它在扩展格式的标准帧 RTR 位位置,因此代替标准帧的 RTR 位。因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的,扩展帧的基本 ID(参见以下的“扩展识别符”)如同标准帧的识别符。

3.2.2 IDE 位(扩展格式)

       IDE 的全称是“识别符扩展位( Identifier Extension Bit)”,标准格式里的 IDE 位为“显性”,而扩展格式里的 IDE 位为“隐性”。IDE 位属于 :

  • 扩展格式的仲裁场

  • 标准格式的控制场

3.3 控制场

      控制场由 6 个位组成。标准格式的控制场格式和扩展格式的不同。标准格式里的帧包括数据长度代码、IDE 位(为显性位,见上文)、及保留位 r0。扩展格式里的帧包括数据长度代码和两个保留位: r1 和 r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的组合。

 4 参考文献

1)CAN入门教程.pdf

2)  CAN-bus规范V2.0 中文版.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【appium】App类型、页面元素|UiAutomator与appium|App元素定位

目录 一、App前端基础知识 1、App类型划分 2、App类型对比 3、App页面元素 App页面元素分为布局和控件两种 常见布局: 常见控件:定位软件:appium和sdk自带的uiautomatorviewer都可以定位 二、App元素定位 1、id定位 2、text定位 3…

大语言模型推理加速技术:模型压缩篇

原文:大语言模型推理加速技术:模型压缩篇 - 知乎 目录 简介 量化(Quantization) LLM.int8() GPTQ SmoothQuant AWQ 精简Attention 共享Attention参数 Multi-Query Attention Grouped-Query Attention 稀疏Attention Sliding Window Attenti…

如何运行github上的项目

为了讲明白这个过程,特意做了一个相当来说比较好读懂的原理图,希望和我一样初学的小伙伴也能很快上手哈😊 在Github中找到想要部署的项目,这里以BartoszJarocki/CV(线上简历📄)项目为例 先从头…

Thread多线程(创建,方法,安全,通信,线程池,并发,并行,线程的生命周期)【全详解】

目录 1.多线程概述 2.多线程的创建 3.Thread的常用方法 4.线程安全 5.线程同步 6.线程通信 7.线程池 8.其它细节知识:并发、并行 9.其它细节知识:线程的生命周期 1.多线程概述 线程是什么? 线程(Thread)是一个程序内部的一条执行…

SpringMVC(2)

目录 SSM整合统一异常处理项目异常处理方案异常解决方案前后端协议联调拦截器 SSM整合 统一异常处理 异常的种类及出现异常的原因: 框架内部抛出的异常:因使用不合规导致数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超…

Android Activity启动模式

文章目录 Android Activity启动模式概述四种启动模式Intent标记二者区别 Android Activity启动模式 概述 Activity 的管理方式是任务栈。栈是先进后出的结构。 四种启动模式 启动模式说明适用场景standard标准模式默认模式,每次启动Activity都会创建一个新的Act…

Spring11、整合Mybatis

11、整合Mybatis 步骤&#xff1a; 导入相关jar包 junit <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> mybatis <dependency><groupId>org.my…

Matlab:元胞自动机

元胞自动机是一种基于离散空间的动态系统&#xff0c;由许多简单单元按照某些规则进行相互作用和演化而形成的复杂结构。元胞自动机可以用于模拟物理、生物、社会等领域的现象&#xff0c;以及进行优化、图像处理、噪声生成等方面的应用。 例1&#xff1a;生命游戏 nextState…

Bicycles(变形dijkstra,动态规划思想)

Codeforces Round 918 (Div. 4) G. Bicycles G. Bicycles 题意&#xff1a; 斯拉夫的所有朋友都打算骑自行车从他们住的地方去参加一个聚会。除了斯拉维奇&#xff0c;他们都有一辆自行车。他们可以经过 n n n 个城市。他们都住在城市 1 1 1 &#xff0c;想去参加位于城市…

深入理解分库、分表、分库分表

前言 分库分表&#xff0c;是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案&#xff0c;所谓"分库分表"&#xff0c;根本就不是一件事儿&#xff0c;而是三件事儿&#xff0c;他们要解决的问题也都不一样&#xff0c;这三个事儿分别是"只…

SQL注入漏洞解析-less-8(布尔盲注)

我们来看一下第八关 当我们进行尝试时&#xff0c;他只有You are in...........或者没有显示。 他只有对和错显示&#xff0c;那我们只能用对或者错误来猜他这个数据库 ?id1%27%20and%20ascii(substr(database(),1,1))>114-- ?id1%27%20and%20ascii(substr(database(),1,…

express+mysql+vue,从零搭建一个商城管理系统3--user路由模块

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、新建routes文件夹二、新建routes/index.js和routes/user.js三、修改index.js四、修改routes/index.js五、修改routes/user.js六、启动项目预览总结 前言 需求&#xff1a;主要学习express&#xff0c;所…

176基于matlab的自适应滤波法预测

基于matlab的自适应滤波法预测&#xff0c;自适应滤波预测实质上是一种加权滑动平均预测&#xff0c;通过迭代得到最佳权值&#xff0c;并给出了相对误差图和预测效果图&#xff0c;程序已调通&#xff0c;可直接运行。 176matlab自适应滤波法预测 时间序列预测 (xiaohongshu.c…

FL Studio 21 Mac汉化免费版 附安装教程

FL Studio 21 Mac是Mac系统中的一款水果音乐编辑软件&#xff0c;提供多种插件&#xff0c;包括采样器、合成器和效果器&#xff0c;可编辑不同风格的音乐作品&#xff0c;Pattern/Song双模式&#xff0c;可兼容第三方插件和音效包&#xff0c;为您的创意插上翅膀。FL Studio 2…

element el-date-picker 日期组件置灰指定日期范围、禁止日期范围日期选择

JS如何将当前日期或指定日期转时间戳_javascript技巧_脚本之家 小于指定日期前的日期置灰 比如这里 指定日期是 2024-02-20 10:48:15 disabledDate(time) time是一个函数提供的时间用于比较 他是一个时间戳↓ 理解为我们想要置灰的时间 time.getTime() < timeStamps- 1 *…

yolov9 瑞芯微芯片rknn部署、地平线芯片Horizon部署、TensorRT部署

特别说明&#xff1a;参考官方开源的yolov9代码、瑞芯微官方文档、地平线的官方文档&#xff0c;如有侵权告知删&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在github上参考链接 模型和代码。 之前写过yolov8检测、分割、关键点模型的部署的多篇博文&#xff0c;y…

时隔一年的测评:gpt3.5发展到什么程度了?

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍1、chatgpt是什么&#xff1f;2、主要特点3、工作原理4、应用限制5、使…

当Web3叙事寒冬到来,游戏是否是冬日里的“一把火”?

出品&#xff5c;欧科云链研究院 作者&#xff5c;Jason Jiang 以太坊创始人Vitalik在2019年曾说&#xff1a;金融与游戏会是区块链最先落地的场景。 在DeFi金融创新驱动上个周期后&#xff0c;沉寂近两年的Web3游戏板块&#xff0c;如今似乎也在复苏。无论是频繁获得融资&a…

unity初学问题:如何修改图片的坐标

如图&#xff0c;我们想要修改图片的轴心点坐标&#xff08;Pivot&#xff09; 选择图片组 打开编辑器在里面修改即可&#xff08;最下面的Custom Pivot&#xff09;

Git实用命令

撤销操作 # 撤销暂存&#xff0c;保留修改内容 git reset HEAD <file># 撤销修改 git checkout -- <file>远程仓库操作 #添加远程仓库git remote add demo https://gitee.com/dwp1216/demo.git拉取指定文件 git init git remote add -f origin https://172.16.0.…
最新文章