初出茅庐的小李博客之CAN通信基础知识

news2024/11/8 23:40:01

CAN是什么?

CAN 是 Controller Area Network 的缩写,中文是控制器局域网路,是 ISO 国际标准化的串行通信协议之一。

在这里插入图片描述

CAN:控制器局域网( Controller Area Network)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络

CAN是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于汽车业、航空业、工业控制、安全防护等领域。
随着CAN总线在各个行业和领域的广泛应用,对其的通信格式标准化也提出了更严格的要求。1991年CAN总线技术规范(Version2.0)制定并发布。该技术规范共包括A和B两个部分。其中2.0A给出了CAN报文标准格式,而2.0B给出了标准的和扩展的两种格式。CAN总线协议是一种ISO 国际标准化的串行通信协议,有ISO-11898 和 ISO-11519两个系列。

其定义有:

ISO-11898 定义了通信速率为 125 Kbps ~1Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米,如图1。

在这里插入图片描述

ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米,如图2。

在这里插入图片描述

现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。 图 3 是车载网络的构想示意图。CAN 通信协议的开发,使多种 LAN 通过网关进行数据交换得以实现。

在这里插入图片描述

Controller是什么?

通常意义上指控制器,多个控制器之间进行通信,可以通过CAN线使其进行连接

在这里插入图片描述

典型用例:

在这里插入图片描述

CAN线如何连接呢

两根线:

CAN_H线

CAN_L线

在这里插入图片描述

CAN的两种电平

总线上的电平有显性电平和隐性电平两种。 总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。 “显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐 性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比 隐性电平更强)

****显性电平:****逻辑0:CAN_H 和 CAN_L 的电压一个3.5V一个1.5V 电位差是2V

****隐形电平:****逻辑1:CAN_H 和 CAN_L 的电压都是是2.5V 电位差是0V

CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 标准对于数据 链路层的定义相同,但物理层不同。

  1. ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。 目前,ISO11898 追加新规约后,成为 ISO11898-1 新标准。
  2. ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准

在这里插入图片描述

3.ISO11898和ISO11519的主要不同点

在这里插入图片描述

下图是描述的就是压差为2V的逻辑0,跟压差为0V的逻辑1

在这里插入图片描述

单片机如何进行CAN通信

串行电平转换成差分电平

在这里插入图片描述

为什么要用差分线呢

主要是下面两个原因

  1. 抗干扰性:双绞线可以有效地减少电磁干扰的影响。CAN总线常常被应用于工业环境和汽车领域,这些环境中存在大量的电磁干扰源,如电机、继电器等。双绞线通过将两根导线紧密地绞合在一起,可以减少对外部电磁干扰的敏感性,从而提高通信的可靠性。
  2. 抗噪声性:双绞线还可以降低信号传输中的串扰噪声。当信号通过一根导线传输时,周围的导线可能会产生电磁场,从而对信号产生干扰。双绞线中的两根导线通过彼此绞合,可以减小这种串扰噪声的影响,提高信号的完整性和准确性。

在这里插入图片描述

这也就是CAN通信比串口通信传输更远的原因可以达到1000米。

CAN的协议桢

CAN(Controller Area Network)协议定义了几种不同类型的数据帧,用于在CAN总线上进行通信。以下是CAN协议中常见的几种数据帧及其作用:

  1. 数据帧(Data Frame):数据帧是CAN协议中最常用的帧类型。它用于在CAN总线上传输数据信息。数据帧包括数据域(Data Field),用于携带有效数据,以及标识符(Identifier),用于标识消息的发送者和接收者。

  2. 远程帧(Remote Frame):远程帧用于请求特定CAN节点发送数据。发送远程帧的节点向目标节点发送一个标识符,目标节点接收到远程帧后,会以数据帧的形式返回请求的数据。远程帧在需要获取其他节点数据时非常有用。有时候也叫遥控桢

  3. 错误帧(Error Frame):错误帧用于在CAN总线上报告错误情况。当节点检测到总线上的错误时,它可以发送错误帧来通知其他节点发生了错误。错误帧中包含有关错误类型和错误位置的信息,用于诊断和故障排除。

  4. 过载帧(Overload Frame):过载帧用于指示CAN节点附近存在过载条件。当节点无法及时处理接收到的消息时,它可以发送过载帧来通知其他节点,以便调整通信负载或采取其他措施。

  5. 错误被动帧(Error Passive Frame):错误被动帧用于指示发送节点处于错误被动状态。当节点连续发送错误帧数量达到一定阈值时,它会进入错误被动状态,此时会发送错误被动帧来通知其他节点。

  6. 帧间隔 :在CAN(Controller Area Network)通信中,帧间隔(Frame Interval)指的是两个连续CAN数据帧之间的时间间隔。帧间隔包括发送帧的间隔和接收帧的间隔

这些数据帧类型在CAN总线上的使用有助于实现可靠的通信和故障诊断。数据帧用于传输实际的数据信息,远程帧用于请求数据,错误帧用于报告错误情况,过载帧用于指示过载条件,而错误被动帧用于指示节点处于错误被动状态。通过这些数据帧,CAN协议能够提供高效、可靠的通信机制,并支持诊断和故障处理。

另外,数据帧和遥控帧有标准格式和扩展格式两种格式,

标准格式有 11 个位的标识符(Identifier: 以下称 ID),

扩展格式有 29 个位的 ID;

在这里插入图片描述

标准的一串数据帧是什么样的

在这里插入图片描述

标准帧(Standard Frame)是CAN(Controller Area Network)协议中常用的一种数据帧格式,用于在CAN总线上传输数据。以下是标准帧的格式及其各个字段的解释:

  1. 帧起始位(Start of Frame,SOF):一个固定为低电平的位,用于指示帧的开始。
  2. 标识符(Identifier):标识符用于唯一地标识发送的消息。它通常是11位长,但在CAN 2.0A协议中,标识符可以是11位或29位长。标识符中的位定义了消息的优先级、发送节点和接收节点等信息。
  3. 远程传输请求位(Remote Transmission Request,RTR):该位用于指示消息是否是远程帧。如果该位为1,则表示发送节点请求接收节点发送数据;如果该位为0,则表示消息是数据帧。
  4. 数据长度码(Data Length Code,DLC):DLC字段指定了数据域中所包含的字节数。它可以是0到8之间的值,表示数据域的长度。
  5. 数据域(Data Field):数据域是用于携带有效数据的部分。它的长度由DLC字段确定,可以包含0到8个字节的数据。
  6. CRC(Cyclic Redundancy Check):CRC字段用于检测数据帧中的错误。它是通过对标识符、RTR、DLC和数据域进行计算得出的校验值。
  7. CRC分隔位(CRC Delimiter):一个固定为1的位,用于分隔CRC字段和确认槽位。
  8. 确认槽位(Acknowledge Slot):确认槽位用于接收节点发送一个确认位(ACK)来指示数据的接收情况。如果接收节点成功接收到数据,则发送一个高电平ACK;如果接收节点检测到错误,则发送低电平ACK错误。
  9. 结束帧位(End of Frame,EOF):一个固定为高电平的位,用于指示帧的结束。

​ 以上是标准帧的基本格式。CAN总线上的节点根据这个格式来发送和接收数据。标准帧通过使用固定长度的标识符和较短的数据域,提供了一种简单、高效的通信方式,适用于许多应用领域,如汽车、工业控制等。

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

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

相关文章

MySQL Windows 64位解压版安装

1、下载MySQL安装包 下载地址:MySQL :: Download MySQL Community Server (Archived Versions) 选择安装版本:我选择的是5.1.43的版本,下载到本地,并解压到自己想要放的位置,比如:D:\soft 2、在D:\soft\m…

S7-200 PLC新特性是什么

更多关于西门子S7-200PLC内容请查看:西门子200系列PLC学习课程大纲(课程筹备中) 西门子200PLC能做什么? 它可以控制设备,实现自动控制,比如切割机,木雕刻机,写字机,锅炉的自动控制等等&#xf…

vscode工具使用

语言的使用&#xff1a; 安装chinse Lagnuage插件 关于设置 (1) 通过可视化界面的方式设置&#xff0c;File -> Preferences -> Settings 快捷键&#xff1a;ctrl , (<)打开 ctrl F4 关闭 (2) 通过json配置文件方式设置&#xff0c;ctrlshiftp, 选择Open …

c++继承详解

前言 继承是类复用的重要方式&#xff0c;学习面向对象语言时学习继承是必不可少的&#xff0c;在c中继承机制一种较为复杂的机制&#xff0c;下面让我们一起来认识一下c中的继承。 目录 1.继承的概念和定义 1.1继承的概念 1.2 继承的定义 2.基类和派生类之间的转换 3.继承…

基于html+css的图展示106

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

PCL点云处理之分层切片法计算树冠投影面积 (一百七十四)

PCL点云处理之分层切片法计算树冠投影面积 (一百七十四) 一、算法介绍二、方法流程三、具体实验1.代码2.效果四、算法总结一、算法介绍 在上一节中,通过树冠整体投影到同一水平面后,计算凸包面积,粗略估计了树冠投影面积,但在通常的研究学习中,这种方法较为笼统,大部分…

springboot配置使用redis序列化时报错“无法自动装配。找不到 ‘RedisConnectionFactory‘ 类型的 Bean”

今天在使用springboot操作redis时出现乱码的问题 像这样&#xff0c;这里对应的key明实际上时springboot:string 对应的值时徐浩的redis 但是当向redis推送数据时就乱码了&#xff0c;后面一查是因为在springboot-redis中&#xff0c;默认配置没有序列化&#xff0c;直接将str…

Python词云绘制

Python词云绘制 效果展示以及准备工作&#xff1a;进入代码书写 效果展示以及准备工作&#xff1a; 效果展示图&#xff1a; 准备工作 pycharm安装第三方库numpy,jieba,wordcloud词云文本的准备&#xff08;.txt&#xff09;背景图的准备&#xff08;我是用的PS&#xff09;…

[激光原理与应用-69]:激光焊接的10大常见缺陷及解决方法

激光焊接是一种以高能量密度的激光束作为热源的高效精密焊接方法。如今&#xff0c;激光焊接已广泛应用于各个行业&#xff0c;如&#xff1a;电子零件、汽车制造、航空航天等工业制造领域。但是&#xff0c;在激光焊接的过程中&#xff0c;难免会出现一些缺陷或次品。只有充分…

[架构之路-203] - 对系统需求类型的进一步澄清

目录 业务/商业需求&#xff1a; 用户/客户需求&#xff1a; 功能性需求&#xff1a; 非功能性需求&#xff1a; 系统需求&#xff1a; 约束条件&#xff1a; 软件需求说明书&#xff1a; 软件质量&#xff1a; 业务/商业需求&#xff1a; 是自顶向下的需求&#xff0…

pytorch卷积神经网络CNN 手写数字识别 MNIST数据集

模型结构和训练代码来自这里 https://blog.csdn.net/weixin_41477928/article/details/123385000 俺又加了离线测试的代码: 第一次运行此代码&#xff0c;需有网络&#xff0c;会下载开源数据集MNIST训练的过程中会把10个epoch的模型均保存到./models下&#xff0c;可能需要你…

2023年第三届陕西省大学生网络安全技能大赛--本科高校组 Reverse题解

文章目录 一. 我的upx -d怎么坏了1. 查看节区信息2. 动态调试脱壳3.输出迷宫图4.走迷宫 二. babypython1.字节码简单分析2. gpt分析3. 程序逻辑4.解题脚本 三. BadCoffee1. 相关文章2.解混淆3.解题脚本 四. Web&Assembly(暂时没复现出来,提供一些相关文章)总结 这次比赛做出…

冈萨雷斯DIP第5章知识点

图像增强&#xff1a;主要是一种 主观处理&#xff0c;而图像复原很大程度上是一种 客观处理。 5.1 图像退化/复原处理的一个模型 如图5.1 本章把图像退化建模为一个算子 H \mathcal{H} H 该算子 与一个加性噪声项 η ( x , y ) η(x,y) η(x,y) 共同对输入图像 f ( x , y…

Rust每日一练(Leetday0013) 解数独、外观数列、组合总和

目录 37. 解数独 Sudoku Solver &#x1f31f;&#x1f31f;&#x1f31f; 38. 外观数列 Count and Say &#x1f31f;&#x1f31f; 39. 组合总和 Combination Sum &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Gola…

常微分方程(ODE)求解方法总结

常微分&#xff08;ODE&#xff09;方程求解方法总结 1 常微分方程&#xff08;ODE&#xff09;介绍1.1 微分方程介绍和分类1.2 常微分方程得计算方法1.3 线性微分方程求解的推导过程 2 一阶常微分方程&#xff08;ODE&#xff09;求解方法2.1 欧拉方法2.1.1 欧拉方法的改进思路…

逻辑推理——弟弟的编程课

前言 这篇文章不写代码&#xff0c;不科普知识。而是推理&#xff01; 这是我弟弟编程课上的一个同学&#xff1b;不是我的同学&#xff0c;我都成年了&#xff0c;这还是个小毛孩&#xff01; 这是他们学的&#xff1a; 乍一看这没任何问题&#xff0c;还有人会说&#xff…

谷歌地图模型自动下载

本工具是收费软件&#xff0c;学生党勿扰&#xff0c;闹眼子党勿扰 本工具收费1000元 视频教程 1 概述 记得去年写过一篇关于谷歌地图模型提取的博客&#xff0c;得到了广泛好评。有很多同学提出&#xff0c;能不能自动下载谷歌地图模型&#xff0c;由于提出此需求的人太多了…

【起点到终点 走哪条路径使得(路径长度排序从大到小后) 第k+1条边最小】通信线路

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

单片机GD32F303RCT6 (Macos环境)开发 (三十四)—— 数字加速度计 (ADXL345)

数字加速度计 &#xff08;ADXL345&#xff09;- 计算xyz轴重力值 1、i2c总线读取 1、接线 上一节的软件模式i2c的方式&#xff0c;选择PB10(SCL) PB11(SDA)。 GD32 ADXL345PB10 --------------- SCLPB11 --------------- SDA3.3 --…

Eclipse 教程 完结

Eclipse 快捷键 关于快捷键 Eclipse 的很多操作都提供了快捷键功能&#xff0c;我们可以通过键盘就能很好的控制 Eclipse 各个功能&#xff1a; 使用快捷键关联菜单或菜单项使用快捷键关联对话窗口或视图或编辑器使用快捷键关联工具条上的功能按钮 Eclipse 快捷键列表可通过…