CAN 总线 之一 总线拓扑、物理电平、发展史 详解

简介

  CAN 是 Controller Area Network 的缩写,即 控制器局域网络。通常称为 CAN BUS,即 CAN 总线。可以归属于工业现场总线的范畴,是目前国际上应用最为广泛的开放式现场总线之一。CAN是一个用于连接电子控制单元(ECU)的多主机串行总线标准。
  CAN 建立在基于信息导向传输协定的广播机制(Broadcast Communication Mechanism)上,属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。是由以研发和生产汽车电子产品著称的德国 BOSCH 公司为了解决当时汽车控制系统的需求而开发的。下图显示了一个典型的 CAN 在汽车网络中的应用
在这里插入图片描述

总线结构

  CAN 总线是一种广播类型的总线。 这意味着所有节点都可以“听到”所有传输。 无法仅向特定节点发送消息;所有节点都会不可避免地接收所有流量。 但是,CAN 硬件提供本地过滤,因此每个节点只能对有趣的消息做出反应。CAN网络上需要至少两个节点才可进行通信。
  ISO 国际标准 ISO 11898-2 和 ISO 11898-3 分别规定了两种 CAN 总线结构(在 BOSCH CAN2.0 规范中,并没有关于总线拓扑结构的说明)。其中:

  • ISO 11898-2 定义了通信速率为 125 kbps~1 Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。
    在这里插入图片描述
  • ISO 11898-3 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为 40kbps 时,总线长度可达1000米。
    在这里插入图片描述
    它使用线性主线,星形主线或者连接到一个线性主线上的多星结构主线 。上图仅仅是一种最简化的结构。实际如下:
    在这里插入图片描述

物理电平

  在 CAN总 线上,利用 CAN_H 和 CAN_L 两根线上的电位差来表示 CAN 信号。CAN 总线上的电位差分为 显性电平(Dominant Voltage)隐性电平(Recessive Voltage) 。其中显性电平为逻辑 0,隐性电平为逻辑 1。模块以线与的方式连接到总线:如果只有一个节点将总线驱动到逻辑0,则整个总线处于该状态,而不管发送逻辑1的节点数量。

  • 高速 CAN 总线在传输显性(0)信号时,会将 CAN_H 端抬向 5V 高电平,将 CAN_L 拉向 0V 低电平。当传输隐性(1)信号时,并不会驱动 CAN_H 或者 CAN_L 端。 显性信号 CAN_H 和 CAN_L 两端差分标称电压为 2V。 终端电阻在没有驱动时,将差分标称电压降回 0V。显性信号(0)的共模电压需要在 1.5V 到 3.5V 之间。隐性信号(1)的共模电压需要在 +/-12V。
    在这里插入图片描述
  • 低速/容错CAN信号在传输显性信号(0)时,驱动CANH端抬向5V,将CANL端降向0V。在传输隐性信号(1)时并不驱动CAN 总线的任何一端。在电源电压Vcc为5V时,显性信号差分电压需要大于2.3V,隐性信号的差分电压需要小于0.6V。CAN总线两端未被驱动时,终端电阻使CANL端回归到RTH电压(当电源电压Vcc为5V时,RTH电压至少为Vcc-0.3V=4.7V),同时使CANH端回归至RTL电压(RTL电压最大为0.3V)。两根线需要能够承受-27V至40V的电压而不被损坏。
    在这里插入图片描述
      在高速和低速CAN中,从隐性信号向显性信号过渡的速度更快,因为此时CAN线缆被主动积极地驱动。显性向隐性的过渡速度主要取决于CAN网络的长度和导线的电容。

  CAN总线采用不归零码位填充技术(NRZ),发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入补充位。

通信帧

独立文章说明!

历史

  在 CAN 总线出现以前,汽车 ECU 依靠越来越复杂的点对点布线。上世纪 80 年代初,BOSCH 的工程师们对现有的串行总线系统进行了评估,以确定它们在汽车上的可能的用途。由于现有的网络协议都不能满足汽车工程师的要求,Uwe Kiencke 于 1983 年开始开发新的串行总线系统。当时聘请的顾问之一是来自于德国 Braunschweig-Wolfenbüttel 的 Applied Science 大学的 Wolfhard Lawrenz 教授。Wolfhard Lawrenz 教授给出了新网络方案的名字 “Controller Area Network”,简称 CAN。来自 Karlsruhe 大学的教授 Horst Wettstein 博士也提供了理论支持。

  • 1983年:BOSCH 公司内部启动了一个项目,以研究一个车内网络。

  • 1986 年 2 月:在密歇根州底特律举办的汽车工程师协会(SAE)会议上,Bosch 公司公布了 CAN 总线协议作为汽车电子解决方案。

  • 1987 年:由英特尔和飞利浦生产的第一批 CAN 控制器芯片上市。英特尔首先发布了 82526(手册见附录),这是第一款 CAN 总线的硬件实现。不久后飞利浦发布了 82C200(手册见附录)。后来,英特尔还发布了 82527(手册见附录).

    (1)1991年发布的梅赛德斯-奔驰 W140 是第一款采用基于CAN 的多路布线系统的量产车。
    (2)2006 年飞利浦将半导体公司恩智浦独立出去了,现在说到半导体相关的业务都来自于恩智浦。

  • 1991年:Bosch 公司发布了 CAN2.0。该规范由 A 和 B 两部分组成。A 部分用于标准格式,带有 11 位标识符;B 部分用于带有 29 位标识符的扩展格式。使用 11 位标识符的 CAN 设备通常称为 CAN 2.0A,使用 29 位标识符的 CAN 设备通常称为 CAN 2.0B。

  • 1992 年:CAN in Automation(CiA)协会成立。同年,CiA 发布了 CAN Application Layer (CAL) 协议

  • 1993 年 11 月:在1990 年早些时候,Bosch CAN 规范(CAN 2.0 版)被提交给国际标准化组织。CAN 总线被列入国际标准,发布了 ISO 11898 和 ISO 11519。

    • ISO 11898 是通信速度为 5kbps-1Mbps的 CAN 高速通信标准。高速CAN网络在每个网络端点端接一个120欧姆的电阻。
    • ISO 11519 是通信速度为 125kbps以下的 CAN 低速通信标准,也就是容错CAN(LSFT CAN)。提供从5 Kbit/s到125 Kbits/s的波特率。该标准允许在CAN总线连线失败时CAN总线通信得以继续进行。

    由于终端的类型不同,因此高速和低速/容错CAN设备不能在同一个网络中使用。

  • 1994 年:CiA 组织了 第一届国际 CAN 会议(iCC)。同年,美国汽车工程师协会以 CAN 为基础制定了 SAEJ1939 标准,用于卡车和巴士控制和通信网络。

  • 1995 年:ISO 11898 修正案(扩展框架格式)发布。同年,CiA 出版 CiA 301 CANopen 协议

  • 2003 年:ISO 将原先的 ISO 11898 CAN标准的数据链路和高速物理层的标准分离为 ISO 11898-1 和 ISO 11898-2 两部分

  • 2006 年:ISO 11898-3(低功耗,低速物理层)发布

  • 2007 年:ISO 11898-5(低功耗,高速物理层)发布

  • 2012 年:Bosch 公司发布了 CAN FD 1.0

  • 2013 年:ISO 11898-6(具有选择性唤醒功能的物理层)发布

  • 2015 年:ISO 11898-1(经典CAN和CAN FD)评审稿发布

  • 今天:几乎每一辆汽车都有 CAN 总线系统,它广泛应用于卡车、公共汽车、工业车辆、船舶、飞机和工业自动化。

特点

  1. 可以以多主的方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
  2. 可以点对点,一点对多点及全局广播几种传送方式接收数据,网络上的节点可分成不同的优先级,可以满足不同的实时要求
  3. 采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传送数据
  4. 废除了传统的站地址编码,取而代之的是对通信数据块进行编码。采用这种方法的优点是可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种数据块编码方式,还可使不同的节点同时接收到相同的数据,这一点在分步式控制中非常重要。
  5. 直接通信距离最远可达10km(速率4Kbps以下),通信速率最高可达1MB/s(此时距离最长40m)
  6. 节点数最多可达110个
  7. 采用短帧结构,每一帧的有效字节数为8个
  8. 每帧信息都有CRC校验及其他检错措施,数据错误率极低
  9. 通信介质可采用双绞线,同轴电缆和光纤,一般采用廉价的双绞线即可
  10. 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响

参考

  1. History of CAN technology
  2. CAN bus - Wikipedia
  3. http://home.eeworld.com.cn/my/space-uid-469267-blogid-224148.html
  4. https://www.edaboard.com/showthread.php?217912-Difference-between-CAN1-0-and-CAN-2-0
  5. CAN FD协议介绍

附件

  1. Intel 82526 / Philips 82C200 / Intel 82527 数据手册
  2. Bosch CAN 2.0 和 CAN FD
  3. ISO 11898 集合
ZCShouEXP CSDN认证博客专家 砖家 码字员 没了
进步始于交流,收获源于分享!进步始于交流,收获源于分享!进步始于交流,收获源于分享!进步始于交流,收获源于分享!进步始于交流,收获源于分享!
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页