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》

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值