CAN协议详解

news2024/11/28 14:35:29

1.CAN 协议概述

简介

CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。是一种串行的差分总线,并且这种差分总线只传递数据信息。

随着车用电气设备增加,对应的电气节点剧增(高档车节点有上千之多),一般的通信协议需要的线束太多。需要减少线束,支持更多节点的协议。

CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。近年来,它具有的高可靠性和良好的错误检测能力受到重视,总线仲裁等优良特点,被广泛应用在汽车控制系统、环境恶劣场所、电磁辐射强、干扰性大等场所中。

CAN是一种异步的通信方式,它的通讯不需要时钟进行同步,线路上只有CAN_H、CAN_L两根通信线,数据以差分信号的方式进行传输。

CAN的特点


①多主控制(I2C有主从机之分,CAN无所谓主机从机)

  • 在总线空闲时,所有的单元都可开始发送消息(多主控制)
  • “最先”访问总线的单元可获得发送权(不管后面消息的优先级是否比自身的高)
  • 多个单元“同时”开始发送时,发送高优先级 ID 消息的单元可获得发送权(只在同时发送时起作用)

②消息的发送(对比I2C是根据地址进行访问,这里ID非地址,而是一种表征优先级的标识符)


       在 CAN 协议中,所有的消息都以固定的格式发送。当两个以上的单元同时开始发送消息时,根据ID (标识符) 决定优先级,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作,此处这里ID非地址,而是一种表征优先级的标识符

③系统的柔软性(对比I2C总线上的每个单元都有一个独立的地址)


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

④通信速度(波特率)


由CAN的物理层就可以看出,CAN是一种异步通信方式,所以通信前必须统一好同一网络上每个单元的波特率,即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。

⑤远程数据请求


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

⑥错误检测功能·错误通知功能·错误恢复功能


所有的单元都可以检测错误(错误检测功能)检测出错误的单元会立即同时通知其他所有单元(错误通知功能)正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)

⑦故障封闭


CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

⑧连接


CAN 总线可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。

CAN总线优点

1、数据传递更安全可靠;
2、低成本(通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求);
3、高速实时传递;
4、有条件实现单线功能;
5、适用于各种汽车;
6、开放的标准。

2、CAN 物理层

与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

  • CAN是半双工的,在同一时刻,一个通讯节点发送消息,其他节点只能接收消息;
  • CAN物理层的形式分为闭环总线和开环总线,闭环总线是高速短距离的,长度最长40m,通信速度最高10Mbps;开环总线是低速远距离的,长度最长1km,通信速度最高125kbps。开环闭环的主要区别在于差分信号线是不是连在一起的。
  • CAN总线可以挂载多个节点:

CAN通讯节点由一个CAN控制器及CAN收发器组成,控制器与 收发器之间通过Can_Tx及CAN_Rx信号线连接,收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。其中CAN_TX及CAN_Rx使用普通的类似TTL逻辑信号,而CAN_Hig及CAN Low是一对差分信号线,使用比较特别的差分信号。
当CAN节点需要发送数据时,控制器把要发送的二进制编码通过CAN_TX线发送到收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号 ,通过差分线CAN_Hig和CAN Low输出到Can总线网络。而通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化成普通的逻辑电平信号,通过CAN_Rx输出到控制器中。

can收发器接口

(1)常用三种接口器件
M12小型连接器、OPEN5连接端子、DB9插座

干扰问题

(1)两条数据线相互缠绕,防止电磁波干扰和向外辐射,规定绞距20mm。

扩展:

  • 差分信号:两根信号线的幅度相同,相位相反,通过电压差代表电平1和0;差分信号优点:抗干扰能力强,因为有外界噪声干扰时,会同时耦合到这两条信号线上,由于接收端只关心信号的差值,因此噪声可以抵消。
  • 逻辑电平为1是隐性电平,CAN_High和CAN_Low电压都是2.5v,压差为0;逻辑电平为0显性电平,CAN_High电压3.5v和CAN_Low电压1.5v,压差2v。“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)

CAN的通信网络

闭环通信网络的特点如下:

1)遵照标准为 ISO11898;

2)最高速度可达1Mbps,总线最大长度为40m;

3)总线的两端要求各有一个120欧姆的电阻。

开环通信网络的特点如下:

1)遵循ISO11519-2标准;

2)最高的通信速度为125Kbps,是一种低速通信的连接方式;

3)最大的通信距离可达1Km;

4)两根总线独立,且要求每根总线上要串联一个2.2K欧姆的电阻。

CAN的通信速率

按照 ISO11898 标准中所规定的,CAN总线的通讯波特率最高为 1Mbps。大多数项目常用的CAN总线波特率有125Kbits/s,250Kbits/s,500Kbits/s,1MKbits/s等。

ISO 分类:
低速型 低于10 kbps (用于后视镜调整、电动窗、灯光照明、雨刷器等,称作LIN总线)
低速型 10 -125 kbps (用于舒适系统、仪表显示等)
高速型 125 kbps -1Mbps (用于发动机控制、ABS、传动控制等)

最多接入控制单元数:32个
通用版本:Bosch CAN 2.0

3.CAN协议

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

数据帧由7个段构成,分别是:
(1) 帧起始:表示数据帧开始的段。
(2) 仲裁段:表示该帧优先级的段。
(3) 控制段:表示数据的字节数及保留位的段。
(4) 数据段:数据的内容,可发送 0~8 个字节的数据。
(5) CRC 段:检查帧的传输错误的段。
(6) ACK 段:表示确认正常接收的段。
(7) 帧结束:表示数据帧结束的段。

遥控帧
遥控帧的构成

遥控帧由6个段构成,分别是:
(1) 帧起始(SOF):表示帧开始的段。
(2) 仲裁段:表示该帧优先级的段。可请求具有相同 ID 的数据帧。
(3) 控制段:表示数据的字节数及保留位的段。
(4) CRC 段:检查帧的传输错误的段。
(5) ACK 段:表示确认正常接收的段。
(6) 帧结束:表示遥控帧结束的段。

错误帧
错误帧的构成

(1) 错误标志
错误标志包括主动错误标志和被动错误标志两种。
主动错误标志:6 个位的显性位。
被动错误标志:6 个位的隐性位。
(2) 错误界定符
错误界定符由 8 个位的隐性位构成

过载帧
过载帧的构成

(1) 过载标志
6 个位的显性位。
过载标志的构成与主动错误标志的构成相同。
(2) 过载界定符
8 个位的隐性位。
过载界定符的构成与错误界定符的构成相同。

帧间隔
帧间隔的构成

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。
过载帧和错误帧前不能插入帧间隔。
(1) 间隔
3 个位的隐性位。
(2) 总线空闲
隐性电平,无长度限制(0 亦可)。本状态下,可视为总线空闲,要发送的单元可开始访问总线。
(3) 延迟传送(发送暂时停止)
8 个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。

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

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

相关文章

TLSF——一种高效的内存池实现

Arena 起源于计算内核关于堆内存使用的相关优化。 系统调用分配和回收内存的开销较大,一个优化是预先通过系统调用分配一大块内存,然后每次内存使用从大块内存中切出一小份内存使用。 Arena用于维护大块内存切分出来的大量小块内存,达到高效…

网站不被谷歌收录的常见原因及解决办法

现如今的互联网中,流量获取的渠道多种多样,但对于独立站而言,Google仍然是一个重要的流量来源。这是因为Google拥有庞大的用户基础,通过Google可以让潜在用户更容易发现我们的网站。然而,现实情况是,一些网…

STM32 — PWM介绍和使用PWM实现呼吸灯效果

目录 PWM介绍 PWM输出模式: PWM占空比: PWM周期与频率公式: 使用PWM点亮LED灯实现呼吸灯效果 1. 在 SYS 选项里,将 Debug 设为 Serial Wire​编辑 2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator 3. 时钟配置 4.配…

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

视频格式高效转换:MP4视频批量转MKV格式的方法

随着数字媒体技术的不断发展,视频格式转换已经成为了我们日常工作中不可或缺的一部分。不同的视频格式适用于不同的场景和设备,因此将视频从一种格式转换为另一种格式往往是我们必须完成的任务。在本文中,我们将重点介绍如何运用云炫AI智剪高…

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

RK3568平台 IIC子系统框架

一.简介 IIC只有两条线,一条串行数据线SDA;一条是时钟线SCL。使用SCL,SDA这两条线就实现了设备之间的数据交互。 I2C通信可以一对一(1个主设备对1个从设备),也可以一对多(1个主设备对多个从设…

React Router初学者入门指南(2023版)

React Router,简单来说,是一个帮助处理React应用程序中导航和路由的库。它是用于管理React中路由的最流行的路由工具。如果你对路由的概念不熟悉,可以将其视为在网站的不同部分之间导航的过程。例如,当你进入网站的“联系我们”部…

UE5实现相机水平矫正

UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋…

C++ -- 深入理解多态

前言:多态的概念,通俗地来讲就是多种形态。当我们要完成某个行为的时候,不同的对象去完成时会产生不同的状态,这就叫做多态。具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。多态在C的类和对象中…

python裁剪图片

我原本想找到一个小一点的彩色人脸数据集,但是都没有找到合适的 但是我找到了一个人脸数据集的封面 于是我把这两个图片裁开,得到了6464张彩色人脸照片 from PIL import Image# 打开大图 big_image Image.open(female.jpg) # 获取大图的宽度和高度 wid…

windows 系统不设置密码也能远程登陆

前言 如果windows系统不设置密码,默认情况下是不能远程登陆的 解决办法 按下winr,输入gpedit.msc 再回车 点击windows设置 ----安全设置 ------本地策略-----安全选项 设置为禁用 远程就可以不输入密码了

PMI-ACP(103:1-16)

英文名:ACP 外文名:Agile Certified Practitioner 中文名:敏捷管理专业人士资格认证 是由 美国项目管理协会 PMI Project Management Institute 发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证。 一年开展4次考…

摆玩具[算法赛](差分)

本题链接:用户登录 题目: 样例: 输入 5 2 2 5 7 10 13 输出 8 思路: 由题意,这是一个递增的数组,其次要求最小的极差,对 数组 进行分成 k 个分段数组。 由于是一个递增的数组&#xf…

postgresql14管理(六)-备份与恢复

定义 备份(backup):通过物理复制或逻辑导出的方式,将数据库的文件或结构和数据拷贝到其他位置进行存储; 还原(restore):是一种不完全的恢复。使用备份文件将数据库恢复到备份时的状…

4.多层感知机

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 多层感知机一、感知机1、感知机2、训练感知机3、图形解释4、收敛定理5、XOR问题6、总结 二、多层感知机1、XOR2、单隐藏层3、单隐藏层-单分类4、为什么需要非线性激活函数5、Sigmoid函数6、Tanh函数7、ReLU函数8、多类分…

C语言十进制转其它进制

短除法介绍 短除法: 主要功能为将十进制数据转为其它进制的数据,假设我们要转换为 X 进制,那么具体的流程如下: 十进制数字不断除以 X,直到商为 0 记录每次计算得到的余数 将余数倒序输出,即为对应的 X 进…

C# 递归算法使用简介_常用整理

一、递归简介 递归算法是一种直接或者间接调用自身函数或者方法的算法。 递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。 递归本质是循环&a…