【通信接口】CAN总线协议

news2024/10/7 6:44:01

目录

一、什么是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.coloradmin.cn/o/587988.html

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

相关文章

易基因:全基因组ChIP-seq分析揭示细菌转录因子PhoB的基因内结合位点|mBio

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 细菌编码许多转录因子(transcription factor,TF),这些转录因子通过与启动子周围的DNA结合并调控RNA聚合酶(RNAP)全…

微服务架构打造的供应链系统、采购配送系统,支持SaaS模式

一、开源项目简介 haohan-scm 介绍 基于pig微服务架构打造 供应链系统,采购配送系统。为客户提供仓储管理、订单管理、打单、货源采购、分拣、配送等系统功能。 二、开源协议 使用AGPL-3.0开源协议 三、界面展示 系统截图 四、功能概述 基于pig微服务架构打…

电脑重装系统需要多长的时间

电脑重装系统是一个涉及多个步骤和因素的过程,所需的时间会因个体差异和系统配置而异。本文将解析电脑重装系统所需的时间,并提供一些因素和建议,帮助您对整个过程有一个准确的预期。 工具/原料: 系统版本:windows8系…

c语言的预处理和编译

预处理 文件包含 当预处理器发现#include指令时,会查看后面的文件名并把文件的内容包含到当前文件中 两种写法 尖括号:引用的是编译器的库路径里面的头文件。 双引号:引用的是程序目录中相对路径中的头文件,如果找不到再去上面…

【redis基础】事务|管道|发布订阅

大家好~这里是redis系列文章之《【redis基础】事务|管道|发布订阅》上一篇文章:redis持久化【RDBAOF】持久化双雄_努力努力再努力mlx的博客-CSDN博客 目录 事务 概念 作用 数据库事务vs redis事务 常用指令 情况1:正常执行 情况2:放弃…

微信小程序开发实践入门教程

随着微信小程序的火爆,越来越多的人开始关注微信小程序开发并加入开发大军中,而很多人对于如何开发微信小程序,并没有很好的思路和方法。因此,为了方便大家在学习、实践和应用的过程中能够少走弯路,本文将通过一篇关于…

IE11离线安装包ie离线升级ie11离线安装ie11补丁

首先下载ie11离线安装包与补丁文件: 下载地址(我的资源里有): (如不着急可私信直接要安装包补丁包,我若看到及时回复你) 1、 下载补丁文件和IE11安装程序(这里以32位系统为例&…

uni-app 金额格式化

普通过滤器(filter)在当前页面定义&#xff0c;复制红色代码即可 <template> <view> <text >{{balance|money}}</text> </view> </template> <script> export default{ data(){ return{ …

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

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

LwIP 之七 详解 PBUF 结构、通信数据流、性能优化

数据包的复制在协议栈中是非常耗时的一个操作。LwIP 协议栈内部使用 pbuf 这种数据结构来对数据进行传递&#xff0c;灵活的 pbuf 结构体使得数据在不同网络层之间传递时可以减少内存的开销&#xff0c;避免频繁的内存复制&#xff0c;增加数据在不同层之间传递的速度。 简介 …

OJ练习第122题——交错字符串

交错字符串 力扣链接&#xff1a;97. 交错字符串 题目描述 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s …

Idea+maven+springboot项目搭建系列--1 整合Rocketmq

前言&#xff1a;本文以mavenspringboot 整合Rocketmq 完成消息的发送和接收。 1 Rocketmq 介绍&#xff1a; 1.1 Rocketmq 特性&#xff1a; Apache RocketMQ是一款快速、可靠的分布式消息传递和流处理平台&#xff0c;具有可扩展性和高性能。它是一个分布式的、去中心化的消…

docker 快速搭建elk

Docker搭建ELK步骤详解 文章目录 一.安装前须知二.安装 Docker三.Docker 安装 ElasticSearch四.Docker 安装 ElasticSearch-head&#xff08;可选&#xff09;五.Docker 安装 Kibana六.Docker 安装 LogStash七.创建springboot应用七.后记 一.安装前须知 以下步骤在 VMware 中…

清晰、明了的@Transcation事务嵌套使用

文章目录 概述Transcation注解事务实现原理 Transcation使用1、事务生效的情况&#xff1a;1. 外层有事务&#xff0c;内层无事务结论&#xff1a;外层有事务&#xff0c;内层也会有事务 2. 外层事务&#xff08;requierd&#xff09;&#xff0c;内层事务&#xff08;not_supp…

HEVC环路后处理核心介绍

介绍 为什么需要环路后处理技术 hevc采用基于快的混合编码框架&#xff0c;方块效应、振铃效应、颜色偏差、图像模糊等失真效应依旧存在&#xff0c;为了降低此类失真影响&#xff0c;需要进行环路滤波技术&#xff1b; 采用的技术 去方块滤波DF&#xff0c;为了降低块效应…

ADC和DAC的工作原理及其区别

ADC和DAC的工作原理及其区别 ADC和DAC都是用于模拟信号与数字信号之间的转换器。 ADC&#xff0c;即模数转换器&#xff0c;是将连续的模拟信号转换为数字信号的电路。其输入为模拟信号&#xff0c;输出为数字信号。ADC的主要组成部分是模拟信号采样模块、模拟信号处理模块、模…

生态系统服务(InVEST模型)土壤保持、水源涵养、氮磷输出、生态保护、生物多样性、碳固

白老师&#xff08;研究员&#xff09;&#xff1a;长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作&#xff1b;重点围绕生物多样性、生态系统服务与价值等&#xff0c;构建生物地球化学模型和评价指标体系&#xff0c;为城市、区域和自然保护区的可持续…

sqlserver中动态sql语句应用

前言 一、使用exec 1.用拼接方法 二、使用sp_executesql 1.用拼接方法 2.传参的方法 总结 前言 例如&#xff1a;列表查询条件不固定&#xff0c;根据前端传过来的参数&#xff0c;这时需要根据查询条件后台动态生成SQL语句 一、使用exec exec适用于字符串拼接的方式&#xf…

mac安装python

接上集&#xff0c;我们已经安装了Homebrew 那么在 macOS 上安装 Python 有多种方法&#xff0c;以下是其中两种常用方法&#xff1a; 1&#xff1a;使用 Homebrew 安装 Python Homebrew 是 macOS 上的包管理器&#xff0c;可以方便地安装和管理各种软件包。如果您已经安装了…

美国E8267C是德(KEYSIGHT) E8267D 20G/44G矢量信号发生器

Agilent E8267C、Keysight E8267D、 PSG 矢量信号发生器&#xff0c;高达 44 GHz ​Keysight E8267D (Agilent) PSG 矢量信号发生器是业界首款 I/Q 调制高达 44 GHz 的集成微波矢量信号发生器。它具有先进的宽带内部基带发生器&#xff0c;能够灵活地播放任意波形或生成复杂的…