【CAN通讯系列6】 CAN总线定义

在前面两篇文章:

【CAN通讯系列3】如何学习CAN通讯?

【CAN通讯系列4】CAN通讯如何传递信号?

我们已经解决了一个控制器的多个信号通过怎样的形式传递给另一个控制器,即通过CAN数据帧,包含报文ID,数据长度和数据等信息。

图片

对于数据帧进行介绍时,也提到了一个数据位是显性还是隐性,这些概念与CAN总线定义相关,因此本文将介绍CAN总线定义的相关内容,了解CAN通讯在物理层面是如何实现的。

1 CAN总线定义   

继续之前例子,VCU和MCU采用CAN通讯进行信息交互,他俩是以两根双绞线的物理总线形式连接,一根称为CAN_H,另一个根称为CAN_L。在这两根CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号。

     

图片

当CAN_H和CAN_L的电压均为2.5v,两者电压差为0v,就规定CAN信号为逻辑0;当CAN_H的电压为3.5v,CAN_L的电压为1.5v,两者电压差为2v,就规定CAN信号为逻辑1。

图片

将逻辑0称为显性电平(dominant),逻辑1称为隐性电平(recessive),这就是显性电平和隐性电平的由来。

实际的规定是:电压差满足定义的一定范围,就可以认为是显性电平或隐性电平,比如,理论上电位差为2v才认为是显性电平,而实际上电压差在1.5-2.5v,就可认为是显性电平。

如何将CAN总线的电位差转换成显隐电平?需要一个硬件设备-CAN收发器

在发送过程,CAN收发器接收逻辑电平(显/隐电平)后,将其转换为差分电压输出到CAN总线上;在接收过程,CAN收发器则将CAN_H 和 CAN_L的差分电压转换为逻辑电平。

图片

通俗地讲,就是VCU(发送方)通过CAN收发器使总线电平发生变化,将其信息传递到CAN总线上。MCU(接收方)通过监听总线电平,将总线上的消息读入自己的CAN收发器。下图是实际采集到的CAN总线上的电压信号:

图片

2 CAN网络   

上面两个控制间的CAN通讯,考虑到汽车有很多控制器会通过CAN通讯,如何在将多个控制器接入?比如除了VCU和MCU,还需要接入BMS等控制器,这时如何操作?实际上很简单,再将BMS分别接入CAN_H和CAN_L就行。

图片

对于接入控制器的最大数量,如果按一个控制器一个节点,那么理论上收发器支持节点数最多可做到110个,当然实际应用中往往达不到这个数量。一般车辆在进行CAN总线节点数量设计时,通常不会超过10个,如果过多的话可以通过网关进行子网划分,这样就构成几个CAN网络,如下所示的动力总成CAN, 车身控制CAN和辅助驾驶CAN。

图片

Source: 未来智能网联汽车新一代整车架构-CANFDNET系列)

这些CAN网络会有不同的通信速率要求,通常根据通信速率可将CAN总线分为高速总线和低速总线。

图片

Source:汽车CAN通信基础知识-CAN数据结构_汽车通信基本知识

在ISO-11898和ISO-11519明确定义了这两种通信速率的总线,即:

  • ISO-11898 定义了通信速率为 125 kbps ~1Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米,如下图;

  • ISO-11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米,如下图。

图片

Source:CAN book

本系列所针对的是高速CAN网络,CAN总线两端必须连接终端电阻才可以正常工作,终端电阻应该与通讯电缆的阻抗相同,典型值为120欧姆,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。

图片

Source:CAN_E: CAN Transceiver (vector.com)

对于CAN节点的说明,由上图示意不难理解,CAN节点包含一个CAN收发器,一个CAN控制器和host(微控制器部分)。

而通常对于一个控制器而言,比如VCU,它的微控制器中包含几个CAN控制器,但不包含CAN收发器,因此如何要实现几路CAN,比如上面的动力总成CAN, 车身控制CAN和辅助驾驶CAN,那么就需要额外的三个CAN收发器,每个收发器与微控制器的硬线连接如下示意:

图片

Source: TJA1051 High-speed CAN transceiver

3 小结 

因此,对于VCU与MCU要实现CAN通讯,在物理层面,都需要一个CAN收发器来实现差分电压与逻辑电平的转换,进而与微控制器通讯, 如下所示:

图片

也就是VCU的微控制器先将信号打包成数据帧格式,传输给CAN收发器,然后CAN收发器转换成CAN_H和CAN_L的电压,它俩的电压差表示显隐性。而对于MCU,通过CAN收发器将差分电压解析成逻辑电平后,传输MCU的微控制器,再解包数据帧,转换成实际的物理信号,供MCU软件逻辑或算法使用。

到此,就形成了VCU和MCU的CAN通讯的闭环,但仍然存在很多问题待解决,比如提到通信速率,具体是怎样的概念或定义,是如何体现的?比如数据帧是如何转换成实际的物理信号的?

下文揭晓通信速率这个主题,敬请关注。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值