CAN总线简析

本文详细介绍了CAN总线的历史发展、通信原理、标准版本、应用领域,以及其在汽车电子、工业控制中的优势,包括数据链路层和物理层的设计,以及与其他通信协议的比较。
摘要由CSDN通过智能技术生成

Image

前面的文章中介绍过单片机开发常用通信协议中的UART,IIC,SPI三种。这三种通信协议是平时项目开发过程中使用概率最高的,市面上使用的多数芯片或电子模块都会带有其中一种或几种。这三种通信协议也是最基础,最容易实现的,它们的抗干扰能力也相对较弱,所以它们通常不适合用做长距离通信,一般用于近距离的,比如芯片间通信或板间通信。如果做稍微长距离的通信,对数据的可靠性要求更高就需要控制速率或做一些特殊处理或使用其他相对抗干扰更强的通信协议,比如CAN,TCP/IP等。其中,CAN总线是一种被广泛应用于工业控制的通信协议,是应用最广泛的现场总线之一,接下来我们一起来了解它。

Image

CAN总线历史

Image

CAN总线协议发展历史

CAN(Controller Area Network)总线,即控制器局域网总线,是一种功能丰富的车用总线标准。该协议最初是由德国博世(Bosch)公司在1983年制定的,之后在美国密歇根州底特律举行的汽车工程师协会(SAE) 会议上正式发布推出。1987年,Intel公司推出的首款CAN总线芯片(82526)上市销售。1991年,奔驰汽车发布的第一款基于CAN总线的多路布线系统汽车——W140量产,1993年,国际标准化组织(ISO)发布了CAN标准ISO 11898。后来CAN标准被重新编译分成两个部分:ISO 11898-1涵盖了数据链路层,ISO 11898-2涵盖了高速CAN总线的物理层,所以ISO 11898是针对通信速率为125Kbps~1Mbps的高速通信标准。与此同时,还有另一个标准ISO 11519是针对通信速率为125Kbps以下的低速CAN通信标准,不过ISO 11519后来被此后发布的ISO 11898-3:2006所替代。当然,现在新版的CAN总线芯片支持的通信速率最高波特率也已达5Mbps。

Image

奔驰W140

至今,CAN总线依然还在不断扩展、完善和提升,所以标准也还在不停更新,目前在用CAN总线版本分为2.0A、2.0B、FD,并且新一代的协议标准也即将推出。当前,CAN总线也是五个应用于车载诊断 (OBD)-II标准的协议之一,现在世界范围内大部分国家都会强制要求生产的汽车必须带有OBD2接口,所以有兴趣的朋友可以通过此接口读取车辆信息,DIY一些有趣的应用。

Image

汽车OBD2接口

汽车产业中,出于对安全性、舒适性、方便性、绿色环保节能的要求,各种各样的电子控制系统不断被开发出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。CAN总线是一种基于消息传递的协议,设计之初就是为了在车辆上实现复用通信线缆,以降低铜线使用量。它是一种异步串行通讯低层网络,用于在不需要主机的情况下实现网络上的微控制器和各仪器之间相互通信。它可以提高系统性能,简化控制系统,提高可靠性和灵活性。

Image

现代车辆电路网络分布

CAN总线标准具有非常多的优势,它可以支持高速数据传输,并且可以支持多种不同的物理层协议,数据传输协议,应用层协议和网络类型。它具有较高的安全性和可靠性,可以支持多种不同的应用场景,可以支持节点之间的自动发现和自动配置,可以支持大量的节点,并且可以同时处理多个节点之间的数据传输。

Image

汽车CAN总线应用

如今,经过数十年的发展CAN总线的应用早已不局限于车辆工程领域,它已被应用于各种控制领域,比如航空,航海,医疗器械,物联网,自动化,建筑机械电子等各种工业控制领域。

Image

CAN总线应用场景举例

ISO/OSI模型

ISO/OSI基本参照模型是一种概念模型,由国际标准化组织提出,是一个试图使各种计算机在世界范围内互连为网络的标准框架,其定义于ISO/IEC 7498-1。该模型将通信系统中的数据流划分为七个层,从分布式应用程序数据的最高层表示到跨通信介质传输数据的物理实现。每个中间层为其上一层提供功能,其自身功能则由其下一层提供,功能的类别通过标准的通信协议在软件中实现,类比TCP/IP网络协议模型。

Image

ISO/OSI基本参照模型

Image

TCP/IP计算机网络协议模型

CAN总线的硬件实现

Image

CAN网拓扑结构

CAN总线的物理层使用双绞线作为网络介质,两个信号分别称作CAN_HI和CAN_LO,他们组成一对差分信号,由CAN总线节点的物理层接口———总线收发器驱动。

但是它的具体硬件电路实现有两种模式,分别对应前面提到的高速标准和低速标准电路,其中高速、短距离的是“闭环网络”,它的总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120 欧”的电阻。

Image

CAN总线高速标准硬件电路

另外一种低速、远距离的“开环网络”,它的最大传输距离为1km,最高通讯速率为125Kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个“2.2 千欧”的电阻。

一般情况下一辆汽车上会包含高速和低速两种线路,会根据数据需求的紧急程度来确定哪些信息使用高速通信线路。

Image

汽车CAN总线控制网络分布

CAN总线通信信号与两线电平关系:

  • 总线电平 = CAN_H 的电压 – CAN_L 的电压。

  • 显性电平对应逻辑 0,CAN_HI拉高,CAN_LO拉低。

  • 隐性电平对应逻辑 1,CAN_HI,CAN_LO均浮空。

CAN总线的规范中,将二进制位‘0’定义为“显性位”或“显性信号”、‘1’定义为“隐性位”或“隐性信号”。在传输显性位‘0’时,CAN_HI信号将被拉高到CAN总线收发器的工作电源电压VDD,同时CAN_LO信号将被拉低到CAN总线收发器GND。传输隐性位‘1’时,CAN总线收发器不驱动CAN_HI和CAN_LO两个信号,即两个信号处于浮空状态。两种通信速率电路的电平信号稍有不一样,但处理方式相通。

Image

两种速率电路信号对比

CAN总线协议

CAN总线协议主要定义了ISO/OSI基本参照模型中的数据链路层及物理层两层,其他部分内容ISO并未进行标准化定义,这些模型层中除ISO之外其他一些组织架构或公司根据自身使用定义了一些标准,比如前面提到的汽车OBD接口可能包含很多种应用层的协议标准类型。

Image

CAN总线协议模型

Image

CAN总线协议与OBD联系

CAN总线是一种多主(或无主)网络架构,任何节点都可以随时启动消息发送过程,但是发送者必须在发送消息ID期间侦测网络状态确保是否发送成功,一旦发送不成功则停止发送过程,直到网络恢复空闲状态后再次启动发送过程。CAN总线发送帧/消息ID和远程请求标志位的过程称作抢占总线的仲裁过程。

CAN有4种帧类型(部分资料将帧间隔也算作帧格式的一种,就是5种帧):

  • 数据帧:包含用于传输的节点数据的帧。

  • 远程帧:请求传输特定标识符的帧。

  • 错误帧:由任何检测到错误的节点发送的帧。

  • 过载帧:在数据帧或远程帧之间插入延迟的帧。

Image

帧与用途

数据帧是唯一用于实际数据传输的帧,CAN总线的数据帧是面向二进制位编码的结构化位流,每个数据帧都包含帧起始域、仲裁域、控制域、数据域、CRC校验域、确认域、帧结束域和帧间隔域等,所有的帧都以开始位(SOF)作为信息传输的起始。

Image

数据帧格式

CAN总线信息可以配置为使用两种不同的帧格式:标准或基本帧格式和扩展帧格式。两种格式之间的唯一区别是,标准帧标识符长度为11位,扩展帧标识符长度为29位,它由11位标识符(标准标识符)和一个18位扩展组成。CAN标准帧格式和CAN扩展帧格式之间是通过使用IDE位进行区分的,该位在传输显性时(即为0)为11位帧,而在传输隐性时使用29位帧。支持扩展帧格式消息的CAN控制器也能够发送和接收CAN基本帧格式信息。

Image

标准格式数据信息

Image

扩展格式数据信息

Image

数据帧传输过程示意

通常数据传输是在数据源节点(例如传感器)发出数据帧的情况下自主执行的。但是,目标节点也可以通过发送远程帧来从信息源请求数据,即为远程帧。

数据帧和远程帧之间有两个区别:

  • RTR位在数据帧中作为显性位传输,

  • 远程帧中没有数据段。DLC字段表示所请求的消息的数据长度,而不是发送的数据长度。

在数据帧和具有相同标识符的远程帧同时发送的情况下,由于数据帧标识符之后的RTR位是显性,它将赢得仲裁。

Image

远程帧格式

错误帧由两个不同的字段组成:

  • 第一段由不同站点提供的错误标志(6-12个显性位/隐性位)的叠加给出。

  • 接下来的第二段是错误帧定界符(ERROR DELIMITER,8个隐性位)。

错误标志也有两种:

  • 主动错误标志: 六个显性位 - 由网络上错误状态为“主动错误”的出错的节点传送。

  • 被动错误标志 六个隐性位 - 由网络上错误状态为“被动错误”的出错的节点传送。

Image

错误帧格式

过载帧包含两个位字段:过载标志(Overload Flag)和过载定界符(Overload Delimiter)。

有两种过载条件可导致过载标志的传输:

  • 1.接收器的内部条件,要求延迟下一个数据帧或远程帧。

  • 2.中断检测到一个显性位。

Image

过载帧格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值