车载测试系列:CAN协议分层网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了车载测试系列:CAN协议分层网络相关的知识,希望对你有一定的参考价值。

CAN协议采用分层的设计思想:

车载测试系列:CAN协议分层网络_差分

 

物理层

差分信号

什么是物理层呢?就是CAN的电信号的传输过程。CAN是串行异步通讯,只有CAN_HIGH和CAN_LOW两条差分信号线,数据通过差分信号的方式进行通讯,其优点就是可以增加信号的抗干扰能力,抑制共模信号的干扰;

车载测试系列:CAN协议分层网络_信号线_02

 

信号在变成一个字节一个字节的数字信号之前,就是按照这种差分形式的模拟信号来传输的。

简单理解一下,当CAN_HIGH减去CAN_LOW大于某个阈值的时候,可以把它当做逻辑高,反之,当小于某一个阈值时,就变成逻辑低。

连接方式

CAN总线支持多个节点挂载在总线上,具体如下图所示;

车载测试系列:CAN协议分层网络_差分_03

 

CAN总线其实没有主从的概念,每个设备都是一个节点(Node),节点直接可以相互通讯,CAN总线设置了终端电阻,常见的一种闭环连接模式,相对的还有开环的连接模式。

不同的连接模式,通讯速率也大不相同,这也是高速CAN和低速CAN的区别。

两条电线组成一条双绞线,并且接有120Ω的特性阻抗。ISO 11898-2,也称为高速度CAN。它在总线的两端均接有120Ω电阻。

使用120Ω终端电阻(这是CAN的ISO标准里规定的),最高通讯速率可达到1Mbps。

高速CAN的拓扑结构具体如下所示:

车载测试系列:CAN协议分层网络_差分_04

 

低速CAN,或者也叫做容错CAN,低速容错 CAN 总线将通讯最大带宽从 1 Mbps 降低到 125 Kbps,并且不再在总线的起点和终点使用两个终端电阻,而是将电阻分布在每个节点上。具体如下图所示:

车载测试系列:CAN协议分层网络_信号线_05

 

由于高速CAN和低速CAN的拓扑结构不同,另外终端电阻的分布也不同,所以CAN_HIGH和CAN_LOW上的电平是不相同的,这里有隐性电平和显性电平。

显性电平用逻辑“0”表示,隐性电平用逻辑“1”表示。总线按照线与机制对总线上任一潜在的冲突进行仲裁,显性电平覆盖隐性电平,即只有总线上所有单元都输出隐性电平时,总线上才为隐性电平。

CAN使用差分电压传送(CAN_H、CAN_L),电位差Vdiff=CAN_H-CAN_L。

典型情况:

CAN总线为“隐性”(逻辑1)时,CAN_H和CAN_L的电平为2.5V(电位差Vdiff为0V);

CAN总线为“显性”(逻辑0),CAN_H和CAN_L的电平分别是3.5V和1.5V(电位差Vdiff为2.0V左右)。

CAN节点

CAN节点通常分为三个部分;

  • MCU/CPU;
  • CAN控制器,
  • CAN收发器;

车载测试系列:CAN协议分层网络_信号线_06

 

  • CAN总线上通过差分信号进行数据传输;
  • CAN收发器将差分信号转换为TTL电平信号,或者将TTL电平信号转换为差分信号;
  • CAN控制器将TTL电平信号接收,并传输给MCU;

小结:

物理层:硬件拓扑结构,包括高速CAN和低速CAN,CAN收发器属于物理层;

传输层:CAN控制器所需做的事情,包括CAN时序,同步,消息仲裁、确认,错误检验等;

对象层:MCU属于这一层,需要对CAN消息做信息的过滤设置,CAN消息的处理等;

应用层:基于对象层的进一步封装,例如汽车诊断ISO14229定义的UDS等;

作者: ​​千里和他的软件测试​​



以上是关于车载测试系列:CAN协议分层网络的主要内容,如果未能解决你的问题,请参考以下文章

Linux CAN 驱动实验

56讲CAN——正点原子

STM32(12)——CAN

车载测试系列:CANoe中环境变量和系统变量的区别

思科发布车载系统测试工具

车载测试系列:汽车ECU通信之时间同步测试验证