CAN总线(Controller Area Network bus)协议(一)
写在前面:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
目录
一、CAN介绍
二、CAN的国际标准化
三、CAN总线拓扑图及架构
四、CAN信号
五、CAN线路设计
六、CAN接口定义
七、CAN层级
八、CAN的特点
九、CAN的帧类型
十、CAN的标准规格及分类
十一、CAN的实际应用
十二、其他
一、CAN介绍
控制器局域网 (Controller Area Network,简称 CAN或者 CAN bus) 是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。 它基于信息传递协议,设计之初在车辆上采用复用通讯线缆,以降低铜线使用量,后来也被其他行业所使用。它是由研发和生产汽车电子产品著称的德国 BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。
二、CAN的国际标准化
- ISO11898 定义为 高速 CAN 通信标准,通讯速度达 125Kbps ~ 1Mbps,总线最大长度 40m/1Mbps,连接单元数最大 30,属于闭环总线,终端电阻:120Ω。
- ISO11519 - 2 定义为 低速 CAN 通信标准,通讯速度在 125Kbps以下,总线最大长度 1km/40Kbps,连接单元数最大 20,属于开环总线,终端电阻:2.2KΩ。
三、CAN总线拓扑图及架构
从上图可知,CAN是一个用于连接电子控制单元(ECU)的多主机串行总线标准。电子控制单元有时也被称作节点。CAN网络上需要至少两个节点才可进行通信。节点的复杂程度可以只是简单的输入输出设备,也可以是包含有 CAN交互器并搭载了软件的嵌入式组件。节点还可能是一个网关,允许普通计算机通过 USB或以太网端口与 CAN网络上的设备通信。
所有节点通过两根平行的总线双绞连接在一起,如下图:
每个节点需要:
- 中央处理器、微处理器或主处理器
- 处理主机决定收到的信息的意思以及想要传输的信息。
- 传感器、驱动器和控制设备可以与主处理器连接。
- CAN控制器;通常是集成单片机的一部分
- 接收:CAN控制器将从总线上接收的串位字节存储直到整个消息可用,之后主处理器可以获取这个消息(通常由于 CAN控制器触发一个中断)。
- 发送:主处理器发送传递信息到 CAN控制器,之后当总线空闲时将串位信息传递至总线。
- 收发器;由 ISO11898-2/3介质访问单元(MAU)标准定义
- 接收:把数据流从CAN总线层转换成 CAN控制器可以使用的标准。 CAN控制器通常配有保护电路。
- 传输:把来自 CAN控制器的数据流转换至 CAN总线层。
CAN收发器是根据两根差分线(CAN_High和 CAN_Low)的电位差来判断总线电平的,每个节点能够发送和接收信息,但不是同时进行的。
被 CAN网络连接的设备通常是传感器,驱动器和其他控制设备。 这些设备通过一个中央处理器、一个 CAN控制器,和一个 CAN接收器连接至总线。
四、CAN信号
CAN总线电平分为显性电平和隐性电平两种。总线上执行逻辑上的线 “与” 时,显性电平的逻辑值为 “0”,隐性电平为 “1”。
“显性” 具有 “优先” 的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性” 具有 “包容” 的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)总线必须处于两种电平之一。
下图为 ISO11898标准(125kbps ~ 1Mbps)和 ISO11519 - 2标准(10kbps ~ 125kbps)中 CAN信号的表示(CAN_H和 CAN_L分别为 CAN总线上的一对差分线):
由于 CAN总线协议的物理层只有 1对差分线,在一个时刻只能表示一个信号,所以对通讯节点来说,CAN通讯是半双工的,收发数据需要分时进行。在 CAN的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。
五、CAN线路设计
在 CAN线路中,收发器有一个过滤掉 CAN数据总线驱动器的差分放大器。由于数据总线电缆也安装在发动机舱中,因此它们会受到各种干扰。 可以想象得到接地和电池电压短路,点火系统产生电弧并在维护期间产生静电放电。
没有干扰的时候:
受到干扰信号 X后:
通过在差分放大器中评估来自 CAN_High和 CAN_Low的信号,即所谓的差分传输技术,可以大大消除干扰的影响。 差分传输技术的另一个优点是电气系统的波动(例如,当发动机启动时)不会影响到各个控制单元的数据传输(传输安全性)。
在上图中可以清楚地看到这种类型的传输的效果。
由于 CAN_High和 CAN_Low(差分线)的双绞,干扰脉冲 X总是对两条线产生同等影响。
由于从差动放大器的 CAN高线电压(3.5V-X)减去 CAN低线电压(1.5V-X),因此在评估过程中干扰脉冲掉落,不再出现在差异信号中。
六、CAN接口定义
业界一般规定了9 Pin D-Sub 类型的 CAN 总线连接器,其信号定义如下图所示:
七、CAN层级
CAN 协议采用了 ISO 规定的 OSI*1 基本参照模型中的传输层、数据链路层及物理层。所以我们先来认识一下 ISO/OSI 基本参照模型,如下图:
CAN协议与很多网络协议相似,因此可以被分解为下列抽象层:
八、CAN的特点
CAN 协议具有以下特点:
(1) 多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。
最先访问总线的单元可获得发送权(CSMA/CA 方式 *1)。
多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。
(2) 消息的发送
在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
(3) 系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
(4) 通信速度
根据整个网络的规模,可设定适合的通信速度。
在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。
(5) 远程数据请求
可通过发送“遥控帧” 请求其他单元发送数据。
(6) 错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。
检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
(7) 故障封闭
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
(8) 连接
CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接
的单元数减少。
【注】 *1 CSMA/CA: Carrier Sense Multiple Access / Collision Avoidance
九、CAN的帧类型
通信是通过以下 5 种类型的帧进行的。
- 数据帧
- 遥控帧
- 错误帧
- 过载帧
- 帧间隔
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称ID), 扩展格式有 29 个位的 ID。
十、CAN的标准规格及分类
十一、CAN的实际应用
实际设计由于对信号的重复频率、结果数据量和可用性(就绪)的要求不同,因此将三种 CAN数据总线系统划分如下:
- 500 kbit / s的 CAN数据总线驱动器(高速)用于驱动系统中的网络控制单元
- 100 kbit / s的 CAN数据总线舒适度(低速)用于舒适度系统中的网络控制单元
- 100 kBit / s的 CAN数据总线信息娱乐(低速)可用于网络,例如 无线电,电话和导航系统
十二、其他
本篇为 CAN协议的基本概念,下一篇则分析 CAN协议格式
参考:
《CAN入门书》
《A CAN Physical Layer Discussion》
《Datenaustausch auf dem CAN-Datenbus II》
CAN总线(Controller Area Network bus)协议(一)相关推荐
- 物联网工程 | CAN(Controller Area Network)控制器局域网络详解
文章目录 概述 一.定义介绍 二.功能作用 三.原理解读 (一).CAN收发器(硬件) (二).CAN控制器(硬件) (三).CAN总线(硬件) (四).CAN中央处理单元(软硬) (五).CAN驱动 ...
- CAN(Controller Area Network)网络通信简介
CAN(Controller Area Network)网络是一种广泛应用于工业控制和汽车电子等领域的串行通信协议.以下是CAN网络的常见知识点: 数据帧结构:CAN网络采用异步传输,每个数据帧包括标 ...
- Controller Area Network(CAN)简介
文章目录 前言-什么是通讯? 一.CAN是什么? 二.CAN的应用示例 CAN网络细分 三.CAN发展历史 四.汽车网络汇总 总结 前言-什么是通讯? "通讯是两个或两个以上参与者之间交换信 ...
- CAN(Controller Area Network)通信介绍及其运作方法
大家好. 本篇文章将围绕"CAN通信介绍及其运作方法"这个主体进行讨论. 什么是CAN?有些人会想到易拉罐的英文CAN,有些人会想到歌手CAN,而如果您是来看我们的博文的话,可 ...
- 车载网络: CAN (Control Area Network) 控制器局域网络
概述 CAN,全称 控制器局域网络 (Controller Area Network, CAN),是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为 国际标准(ISO 11898) ...
- (车载网络-读书笔记)Source Identification Using Signal Characteristics in Controller Area Networks
目录 摘要 动机和相关的工作 CAN的模式和帧的格式 之前的来源识别方法 本文方法的背景 本文方法有关的前人的工作 信号处理工具 实验结果 A.来源识别 1.基于MSE进行分离 2.基于卷积分离 3. ...
- iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警
1. 协议基础 1.1. 协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制 ...
- VXLAN 隧道 基础介绍 Virtual eXtensible Local Area Network,虚拟可扩展局域网
一.概述 VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络 ...
- 1、什么是VxLAN(Virtual eXtensible Local Area Network)【RFC7348】
这是一个全新栏目的第一篇文章,后续我将持续更新此章节...大概率这是一个坑,具体更新频率看心情哈 这个栏目主要为大家介绍什么是VxLAN,以及VxLAN基础概念的导入. VxLAN无论是在数据中心网络 ...
最新文章
- C#序列化反序列化对象为base64字符串
- Windows核心编程 第27章 硬件输入模型和局部输入状态
- Windows数据类型探幽——千回百转你是谁?(1)
- html5中表格如何等分,纯css3饼图五等分
- 计算机视觉那些事儿(1):基本任务
- 改变多目标跟踪领域!CMU等推出大规模多类别MOT数据集TAO
- C#关键字详解第一节
- Flex入门的好书——《Flex3 Cookbook 中文版》
- python简单程序实例-Python简单基础小程序的实例代码
- python123货币转换器_Python之美元大写转换器
- Linux Ubuntu 初学命令
- php mysql orm_PHP基于ORM操作MySQL数据库 - strtolower
- 安卓应用移植鸿蒙(五):发布鸿蒙自定义组件(har包)到MavenCenter全过程,采坑无数
- 技术干货 | Linkis实践:新引擎实现流程解析
- labuladong的算法小抄_学会了回溯算法,我终于会做数独了
- vue实现下拉二级联动_vue实现二级联动效果
- barcode--php生成条形码
- 计算机同一优盘记录,怎么查看电脑插过U盘的记录
- C语言 现成的创建与终止
- Android系统工作资料被锁定,您需要知道的有关安卓屏幕锁定设置的所有内容