【通信接口】CAN总线协议

news/2025/1/3 6:00:00/

目录

一、什么是CAN

1、CAN 的概念

2、节点构成(CAN 总线通信模型)

3、差分信号(电平特性)

4、CAN 总线的特点

二、CAN 总线协议的通信过程

1、发送过程

2、接收过程

3、概括

三、CAN 通信帧的分类


一、什么是CAN

1、CAN 的概念

CAN 是 Controller Area Network 的缩写,即控制器局域网络。最初的动机是为了解决电子控制系统中不断增加的信号线,CAN总线是一个单一的总线,所有的外围器件都可以被挂载到该总线。(大致示意图见下图)

ps:120Ω 的电阻用于匹配总线阻抗,吸收信号发射及回拨,提高数据通信的抗干扰能力

2、节点构成(CAN 总线通信模型)

每一个节点都对应一个外围器件,每个外围器件要接入到CAN总线都需包含:CAN 控制器CAN收发器

  • CAN控制器负责上层应用层信号和逻辑电平之间的转换。
  • CAN 收发负责逻辑电平和物理信号之间的转换。

3、差分信号(电平特性)

CAN 总线使用两根线来连接各个单元:CAN_HCAN_L。CAN 控制器通过判断这两根线上的电位差来得到总线电平(逻辑电平)。CAN 标准有两种,IOS11898 和 IOS11519,两者差分电平特性不同。以 IOS11898 标准为例。

  • 逻辑电平 0:也叫显性电平
    • CAN_H = 3.5 V,CAN_L = 1.5 V
    • 电位差 = 2 V
  • 逻辑电平 1:也叫隐性电平
    • CAN_H = CAN_L = 2 V
    • 电位差 = 0 V

CAN 总线是通过显性电平和隐形电平的变化来将具体的数据发送出去,总线上无节点传输数据时,一直处在隐形状态。

4、CAN 总线的特点

(1) 多主控制

CAN 总线没有主从之分,每个设备都可以主动发送数据,最先访问总线的单元获得发送权,剩余总线禁止发送数据。

如果多个单元同时开始发送时,高优先级 ID(数据帧中的一个字段)的单元可获得发送权

(2) 控制通信速度

根据整个网络的规模,可设定适合的通信速度

在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此 单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。

(3) 远程数据请求

可通过发送“遥控帧” 请求其他单元发送数据

(4) 具有错误检测、通知、恢复功能

所有的单元都可以检测错误(错误检测功能)

检测出错误的单元会立即同时通知其他所有单元(错误通知功能)

正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新 发送此消息直到成功发送为止(错误恢复功能)

(5) 系统的柔软性

与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变

二、CAN 总线协议的通信过程

假设CAN总线处在隐性状态,即没有数据的传输。

1、发送过程

假设节点A开始发送数据,上层应用层发送信号,假设CAN控制器转换成了逻辑电平 0,经由 TxD 发给 CAN 收发器,然后转换成对应的电压(电压大小详见上面第二部分《差分信号》的表),这样就完成了 1 bit 数据的发送。

发送完一帧数据以后,接下来我们要考虑的是接收了。

2、接收过程

CAN是广播式地给当前局部网络的所有节点发送数据帧的,即接收时总线上的每一个设备都会收到这一帧的数据。CAN 的帧格式是面向内容的编址方案,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址

节点B:检查了内容发现不是发给自己的,直接过滤

节点C:同样发现不是发给自己的,直接过滤

节点D:读取这一帧数据

节点D 的CAN收发器将总线上的差分电平转换成逻辑电平,随后再由CAN控制器转换成信号发送给上层。

3、概括

  • 发送方通过使总线电平发生变化,将其信息传递到CAN总线上。
  • 接收方通过监听总线电平,将总线上的消息读入自己的接收器。

三、CAN 通信帧的分类

了解了通信的过程,接下来我们要进一步了解每一个节点发送的一帧报文。其实CAN 通信帧有很多种,有用于数据传输的、远程控制的、错误通知等等。其中最为常用的就是用于传输数据的数据帧

用途
数据帧用于发送单元向接收单元传送数据的帧。
遥控帧用于接收单元向具有相同 ID 的发送单元请求数据的帧。
错误帧用于当检测出错误时向其它单元通知错误的帧
过载帧用于接收单元通知其尚未做好接收准备的帧
间隔帧用于将数据帧及遥控帧与前面的帧分离开来的帧

下面重点介绍数据帧。其他帧可以参考:深入理解CAN总线

数据帧还可以根据仲裁段长度不同,分为标准帧扩展帧

(1) 帧起始、帧结束

帧起始由一个显性位(低电平)组成,帧结束由7个隐形位(高电平)组成

(2) 仲裁段

表示该帧优先级的段,仲裁段的作用是解决多点竞争问题。

每次可能有好几个设备同时要往总线发送数据,仲裁段包含帧ID,帧ID越小,优先级越高,优先级高拥有优先使用总线的权利。

(3) 控制段

表示数据的字节数及保留位的段。

(4) 数据段

为0-8字节,短帧结构,实时性好,适合汽车和工控领域。CAN-FD的数据段最高可以发送 64 字节

(5) CRC段

检查帧的传输错误的段。

(6) ACK段

表示确认正常接收的段。任何节点如果准确无误地接收到帧,都要向总线上发送显性位(逻辑电平0),该显性位将掩盖发送节点输出的隐性位,使总线上表现为显性;如果发送节点检测应答位为隐性,那么说明没有节点收到有效帧。


http://www.ppmy.cn/news/106237.html

相关文章

使用 VSCode SSH 公网远程连接本地服务器开发 - cpolar内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

职业规划提示

文章目录 职业规划提示1. 学习的步伐不停止2.学会问、学会听,学会学习3. 为目前的工作全力以赴4. 构建人际网络5. 识别你的工作6. 慎重决定下一个工作7. 为未来做准备8. 量力而行9. 实现您的梦想 职业规划提示 从网络上看到的资源,个人觉得有些参考价值&#xff0c…

2核4G5M性能测评:腾讯云轻量应用服务器CPU内存带宽系统盘

腾讯云轻量应用服务器2核4G5M配置一年168元,三年628元,100%CPU性能,5M带宽下载速度640KB/秒,60GB SSD系统盘,月流量500GB,折合每天16.6GB流量,超出月流量包的流量按照0.8元每GB的支付流量费&…

【已解决】记一次git删除指定的某次历史提交,并执行后续提交

文章目录 一、问题二、解决三、拓展学习1.git log常用参数最近n条记录按文件或目录查看按照日期查看按作者和邮箱查看按指定格式查看按指定提交内容或提交说明查看查看某次提交以及之前的记录 常用组合命令(3) 其他相关命令 2.git rebase 一、问题 新项目,一个分支…

HarmonyOS/OpenHarmony应用开发-ArkTS语言@BuilderParam引用@Builder函数

当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了BuilderParam装饰器&…

ChatGPT-AI地图

ChatGPT-AI地图 1、AI-对话 应用名称应用地址ChatGPThttps://chat.openai.com/NotionAINotion AIA.I. Data Sidekick:AI工具编写 SQL、文档等的速度提高10倍[AirOpsWritesonic:人工智能写作辅助工具Writesonic - Best AI Writer, Copywriting & Par…

案例挑战——MVVM框架理解和实践

MVVM框架理解和实践 一、背景介绍二、 什么是MVVM架构?1.架构示意图2.MVVM概念总结3.实现VM的框架 三、通过案例来理解MVVM框架1.没有使用MVVM架构的程序2.使用了MVVM架构的程序3.对比 四、总结 一、背景介绍 最近正在做新版项目的MVVM架构的结合业务的具体落地&am…

怎么让用户用好你的在线帮助文档协作工具?

在线帮助文档协作工具是现代企业中重要的工具,它可以帮助企业员工更好地协作,提高工作效率,减少沟通成本。然而,如何让用户用好在线帮助文档协作工具,满足其需求,本文将探讨以下几个方面: 一、…