CAN总线多节点通信异常分析及解决

CAN总线多节点通信异常分析及解决
一、CAN物理层特征

CAN收发器的作用是负责逻辑电平和信号电平之间的转换。即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。

市场上常用的收发器(例如: VP230、TJA1040、TCAN337等)多为ISO 11898标准。在此标准中,对于CAN的信号逻辑1和0的产生:当CAN_H为3.5V,CAN_L为1.5V,差值为2V左右时为显性(dominant)电平表示,而两者相等为2.5V左右时为隐性(recessive)电平表示1。
在这里插入图片描述

可以看到上图中的当第一段为隐性,CAN_H和CAN_L电平几乎一样,也就是说CAN_H和CAN_L电平很接近甚至相等的时候,总线表现隐性的,而两线电位差较大时表现为显性的,按照定义的:

CAN_H - CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。
CAN_H - CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。
CAN总线采用的"线与"的规则进行总线冲裁。即1&0=0;所以0为显性。这句话隐含的意思是,如果总线上只要有一个节点将总线拉到低电平(逻辑0),即显性状态,总线就为低电平(逻辑0),即显性状态,而不管总线上有多少节点处于传输隐性状态(高电平或是逻辑1),只有所有节点都为高(隐性),总线才为高,即隐性。

CAN总线终端的两个120Ω的终端电阻的作用是使阻抗连续,消除反射。

二、CAN总线三节点通讯异常现象

测试工具:

1.PC端:利用USB转CAN模块将PC机作为一个节点挂载到CAN总线,收发器型号采用TI公司的VP230;

2.ECU:此处使用TI公司的MSP432单片机,由于其电路板没有CAN收发器,所以此处外接收发器VP230;

3.ARM开发板:开发板上已经内嵌了两个CAN通道,收发器采用的是恩智浦的TJA1040。

问题1:ARM用户板(节点1,收发器:tcan337)与ECU(节点2,收发器:vp230)两节点可以正常进行CAN通信,但是当总线上加入第3个节点PC端(节点3,USB转CAN模块,收发器:vp230)后,通信出现异常,节点1和节点3均可以正常发送和接收总线数据,但是节点2可以收到总线数据,却无法发送数据。

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5954c33b5a9e45d18c135cab3bda7f81.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Iu55p6c6IW5,size_20,color_FFFFFF,t_70,g_se,x_16)

针对问题1,使用ARM开发板、ECU、PC分别进行了两节点测试和三节点测试,测试结果证明,PC与ARM、ECU之间的两节点通信均无任何问题;使用两个PC端与ARM、ECU之间分别构成3节点通信也均正常;使用ARM开发板上的两个CAN通道与PC端构成3节点通信也正常;使用两个ECU与PC构成3节点通信也正常。但是,当ARM开发板与ECU同时挂载到CAN总线上时,就会出现通信异常。

问题2:ARM开发板(节点1,收发器:TJA1040)与MCU(节点2,收发器:vp230)两节点进行CAN通信时,节点1发送一次数据后,总线将一直处于占用状态,此后节点1无法发送和接收总线数据,而节点2将一直读取总线数据。

在这里插入图片描述

问题3:当PC与ECU两节点通信时,通信正常,但是当总线接入关机状态下的ARM开发板时,总线通信出现异常,ECU将无法收到来自PC端的数据;而当总线接入工作状态下的ARM开发板时,总线异常情况与问题1相同。

在这里插入图片描述

三、CAN总线三节点通信异常问题成因分析与解决措施

通过了解CAN物理层特征可知,CAN_H、CAN_L在隐性状态时的对地电压均为2.5V左右,经实际测量, ARM端CAN总线隐性对地电压约为2.3V,PC端CAN总线隐性对地电压约为2.2V,而ECU端CAN总线的隐性对地电压约为1.5V,由于总线电压的差异,CAN总线的对地电压被强制拉低,导致CAN控制器无法正常识别总线数据。

当ECU端的收发器VP230的供电由3.3V更改为5V后,其总线隐性对地电压约等于2.3V,此时ARM、ECU、PC间的任意两节点、三节点通信均正常。

四、CAN总线4、5节点通信测试

为了进一步了解多节点CAN总线通信,将总线上的节点数增加至4节点和5节点,在实际测试中,利用ARM开发板上的2个CAN通道(NXP公司的TJA1040收发器)、2个 USB转CAN模块(TI公司的VP230)、1个ECU(TI公司的VP230)分别进行了各式组合,构成4节点CAN通讯均正常,但是任意5节点通信均出现异常情况,分别由各个节点发送数据,总存在一些节点无法接收到数据。

通过对CAN总线的物理层分析,认为造成这种现象可能有两个原因,一是不同型号的CAN收发器之间通信匹配的问题,二是CAN总线的驱动能力不足造成的。

为了进一步验证上述问题,利用两块ARM开发板上4个CAN通道(NXP公司的TJA1040收发器)进行测试,测试结果发现3个CAN通道可正常通信,但是4节点出现通信异常,异常现象和5节点通信时的问题相同。

由此分析可知,不同收发器的驱动能力会有一些差异,但是这并不是造成此现象的原因。而对CAN总线物理层结构特性进一步了解,总线需要在终端连接两个120欧电阻,但是通过对所有测试点的电路检测可知,每个节点收发器的CAN_H与CAN_L之间均连接了1个120欧电阻,而CAN通信时仅需在总线终端各加1个电阻即可。

将总线中多余的120欧电阻去掉,而只保留两个节点的电阻,通过测试发现,此时的4节点、5节点通信均正常。

那为什么只在物理上最远的两个节点加这个匹配电阻,而不是在所有的节点都加上匹配电阻?

高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。对于低频信号则不用。

CAN总线两端必须连接终端电阻才可以正常工作,终端电阻应该与通讯电缆的阻抗相同,典型值为120欧姆。终端电阻的作用,一方面就是吸收信号反射及回波,而产生信号反射的最大来源便是阻抗不连续以及不匹配。另一方面,如果是加在单独的两根线上,相当于一个开环的状态,根据产生信号反射的来源,也就是说这种连接方式会导致单线上阻抗更加不连续,在末端突然变为0,会导致反射成倍增加。高速CAN所加的两个120欧的电阻实际上模拟的是线束连接无穷远的时候在传输线上产生的特性阻抗(而不是实际阻抗),这是个典型经验值,具体值取决于所采用的线束类型。CAN低速之所以不加终端电阻,是因为不同的频率时,同样的连接方式所产生的信号反射和回波差异很大,频率越高,反射和回波就会越强烈。另外不同的频率下,传输线的特性阻抗是不同的。第三方面,当一个显性位发送到至少包含一个CAN驱动处于开启状态的网络上时,意味着有电流经过终端电阻,因此,CAN_H和CAN_L具有了不同的电压值。也就是说,在显性状态时,终端电阻会稳定并增强差分电压,当去掉一个或两个终端,通过示波器可以明显看到一是信号不稳,二是差分电压会有变化,缺少终端或没有终端电阻时所测到的电压是单纯由CAN驱动器所产生的,离发送端越远,电压差异越大。

### 回答1: CAN(Controller Area Network)总线通信协议是一种用于多个节点之间进行高速数据传输的协议。它最早是由德国博世公司于1986年开发的,用于汽车电子系统中的数据通信CAN总线通信协议的主要特点是高可靠性、实时性和抗干扰能力强。 CAN总线通信协议采用了主从节点的结构,主节点负责发送命令和控制数据的传输,从节点负责接收和执行主节点发送的命令。CAN总线通信协议的物理层采用了双绞线传输数据,可以实现较长的传输距离。 CAN总线通信协议的数据帧包括四个基本部分:帧起始符(SOF)、标识符(ID)、数据(Data)和校验码(CRC)。其中,标识符用于区分不同的帧,数据用于传输实际的命令和控制数据,校验码用于检验数据的正确性。 CAN总线通信协议具有以下优点:首先,CAN总线通信协议可以支持多个节点的同时通信,实现了高效的数据传输;其次,CAN总线通信协议具有较高的可靠性,即使在部分节点故障的情况下,不会影响整个系统的工作;再次,CAN总线通信协议具有较好的抗干扰能力,可以应对复杂的工作环境;最后,CAN总线通信协议具有实时性能,可以满足对数据传输时延较高的应用需求。 总之,CAN总线通信协议是一种可靠、高效的数据通信协议,广泛应用于汽车电子系统以及其他需要多个节点间进行高速数据传输的领域。 ### 回答2: CAN(Controller Area Network)总线通信协议是一种广泛应用于车载网络和工业自动化领域的串行通信协议。CAN总线通信协议采用了一种分布式通信结构,在一个网络中连接多个设备,并且允许这些设备在同一时间进行数据传输。 CAN总线通信协议的主要特点是高可靠性和实时性。它采用了差分信号传输和抗干扰技术,能够在恶劣的环境中保证数据的稳定传输。同时,CAN总线通信协议使用了先进的冲突检测与回避机制,能够实现多个设备同时发送消息而不发生冲突。 CAN总线通信协议还具有灵活的网络拓扑结构和高带宽的传输能力。它允许将多个设备通过总线连接起来,形成一个分布式的网络。同时,CAN总线通信协议支持多种数据传输速率,从几千bps到几百万bps都能满足不同领域的需求。 CAN总线通信协议在工业控制和汽车领域中有广泛的应用。在工业控制领域,CAN总线通信协议可以连接各种传感器和执行器,实现对生产过程的监控和控制。在汽车领域,CAN总线通信协议被广泛应用于车辆的电子控制系统,比如发动机管理、底盘控制和信息娱乐系统等。 总而言之,CAN总线通信协议是一种高可靠性、实时性和灵活性强的串行通信协议,应用于车辆和工业自动化领域,为各种设备之间的数据传输提供了可靠的解决方案。 ### 回答3: CAN总线通信协议是一种用于微控制器和其他设备之间进行实时通信的标准协议。CAN(Controller Area Network)总线是一种串行通信协议,通常用于汽车、工业控制和其他领域中的网络通信CAN总线通信协议通过一对互补的差分信号线来传输数据。它采用了CSMA/CD(载波监听多点冲突检测)的访问机制,允许多个设备共享同一总线,以实现实时通信数据交换。 对于CAN总线通信协议的控制和管理,使用一种称为CAN帧的数据包来进行。CAN帧由四个主要部分组成:起始位、标识符、数据和校验位。起始位用于同步总线,标识符用于识别消息的发送者和接收者,数据部分包含要传输的实际数据,校验位用于检测传输过程中的错误。 CAN总线通信协议具有许多优点。首先,它具有高度可靠性和实时性,能够在多个设备之间进行快速、准确的数据传输。其次,CAN总线支持多主机结构,允许多个设备同时发送和接收数据。此外,CAN总线协议还具备较低的成本和复杂性,易于集成到各种应用中。 在实际应用中,CAN总线通信协议被广泛应用于汽车电子系统、工业自动化、医疗设备等领域。它可以用于车辆的发动机控制、底盘控制、仪表盘显示等方面,也可以用于工业控制系统中的传感器和执行器之间的通信。 总而言之,CAN总线通信协议是一种高效、可靠的数据通信协议,适用于各种实时要求较高的应用场景。它通过使用CAN帧来传输数据,具有多主机结构、低成本和复杂性的优点,被广泛应用于汽车、工业控制等领域。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值