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

news/2024/11/27 2:29:13/

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.ppmy.cn/news/194112.html

相关文章

联想电脑怎么录屏?这3个方法,轻松解决

录屏是现在最常见的办公功能之一,最近有朋友问联想电脑怎么录屏。联想电脑是使用Windows系统的。如果想用联想电脑录屏,可以使用Windows系统自带了的录屏软件进行录屏。下面小编将详细的介绍3个方法,解决联想电脑怎么录屏的问题,感…

联想电脑BIOS失败教程

联想国外官网居然没有中文和中国,我第一台电脑是联想,不过估计也是最后一台 听说联想用国内利润补贴海外市场,其实能够理解,海外市场是用来打广告的。国内服务不周,可能是因为国内用户整体素质不高,所以技…

联想计算机怎么设置硬盘,联想电脑硬盘模式怎么更改

根据自己电脑的硬盘模式,如果不喜欢的话我们可以进行更改,联想电脑就可以设置。下面是学习啦小编为大家介绍联想电脑硬盘模式的更改方法,欢迎大家阅读。 因为G480的主板跟 Y4XX、N4X、U4XX、Z系列主板都是一样的设置 联想电脑硬盘模式的更改方法 1. 开机按F2,进入BIOS模式,…

(字符串 ) 459. 重复的子字符串——【Leetcode每日一题】

❓459. 重复的子字符串 难度:简单 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “aba” 输出: false 示例 3: 输入: s “…

狂肝两万字带你用pytorch搞深度学习!!!

深度学习 基础知识和各种网络结构实战 ... 狂肝两万字带你用pytorch搞深度学习!!! 深度学习前言一、基本数据:Tensor1.1 Tensor的创建1.2 torch.FloatTensor1.3 torch.IntTensor1.4 torch.randn1.5 torch.range1.6 torch.zeros/o…

YUV与RGB互转各种公式

原创不易 转载请注明出处和作者 转载地址:https://www.cnblogs.com/luoyinjie/p/7219319.html 关于写这篇文章的原因: 本人也是摸索了很长时间才弄懂其中的原理,里面涉及的知识点太多了, 比如色彩空间, Gamma, 什么的&…

PyTorch 第六章

文章目录 一 Neural Style Transfer1图片风格迁移2.图片表示3.Content Loss4.Style Loss 二 Generative Adversarial Networks1 基本含义2 DCGAN 三 CycleGAN1. Network2.模型架构3.损失函数 四 代码实战1.图片风格迁移 Neural Style Transfer2.Generative Adversarial Network…

C++:多重继承:虚函数表、指针的位置问题

文章目录 建议多重继承虚函数表虚函数表的存放位置,二进制文件 建议 需要看《深入理解C对象模型》 这本书。 多重继承 多重继承就不应该存在,因为严重违反“简单原则”;不易理解,不易维护,不易开发。 就C Primer pl…