CAN总线

转载自:https://www.cnblogs.com/alantu2018/p/9209863.html

CAN总线特点

CAN总线是一种串行数据通讯协议,其中包含了CAN协议的物理层以及数据链路层。可以完成对数据的位填充,数据块编码,循环冗余效验,帧优先级的判别等工作。其主要特点如下:

(1)多主机方式工作,网络上任意一个节点(未脱离总线)均可以随时向总线网络上发布报文帧

(2)节点发送的报文帧可以分为不同的优先级,满足不同实时要求。

(3)采用载波侦听多路访问/冲突检测(CSMA/CD)技术,当两个节点同时发布信息时,高优先级报文可不受影响地传输数据。

(4)节点总数实际可达110个。

(5)采用短帧结构,每一帧最多有8个有效字节

(6)当某个节点错误严重时,具有自动关闭功能,切断与总线的联系,致使总线上的其他操作不受影响。

 

CAN总线有两种逻辑电平状态,即显性与隐性。

  1. CAN总线使用两根线(CAN_H 和 CAN_L)的电压差来传递信号。

  2. “隐性”和“显性”:

    • 隐性:代表逻辑‘1’。此时总线处于空闲状态,所有节点都可以开始发送消息。

    • 显性:代表逻辑‘0’。当有节点需要发送数据时,它会用“显性”位来覆盖“隐性”位。

    • 关键:“显性”的优先级高于“隐性”。只要有一个节点发送“显性”,总线状态就是“显性”。

高速CAN在传输隐性位时,CAN_H与CAN_L上的电平位均为2.5V;在传输显性位时分别为3.5V与1.5V。

低速CAN在传输隐性状态位时,CAN_H上的电平为0V,CAN_L上的电平位5V。在传输显性状态位时,CAN_H上的电平位3.6V,CAN_L的位1.4V。

image

 

1. 高速CAN(ISO 11898-2)

这是汽车中最常见的类型,用于发动机、变速箱、ABS等关键高速通信。

 
特性逻辑 ‘1’(隐性)逻辑 ‘0’(显性)
CAN_H 电压 2.5V 3.5V
CAN_L 电压 2.5V 1.5V
电压差 0V 2V

解读:

  • 当总线空闲或传递逻辑‘1’时,CAN_H 和 CAN_L 电压均为2.5V,差值为0V。这就是“隐性”状态。

  • 当需要传递逻辑‘0’时,CAN_H 被拉高至3.5V,CAN_L 被拉低至1.5V,产生2V的电压差。这就是“显性”状态。

  • 总结:高速CAN通过检测 CAN_H 和 CAN_L 之间的电压差 来判定信号。差分为0V是‘1’,差分约2V是‘0’。

2. 低速/容错CAN(ISO 11898-3)

这种类型用于舒适性系统,如车门、车窗、座椅等,特点是即使一根线断路也能继续工作。

 
特性逻辑 ‘1’(隐性)逻辑 ‘0’(显性)
CAN_H 电压 0V 4V
CAN_L 电压 5V 1V
电压差 -5V +3V

解读:

  • 隐性状态:CAN_H 为0V,CAN_L 为5V,电压差为 -5V。

  • 显性状态:CAN_H 被拉高至4V,CAN_L 被拉低至1V,电压差为 +3V。

  • 容错能力:因为它使用独立的电压水平,而不是单纯的差分。如果CAN_H或CAN_L其中一根线对地短路或断路,控制器仍然可以通过监测另一根线的电压来解读信号,从而实现“容错”。

CAN报文帧结构

在CAN总线上,报文是以“帧”来发送的,每一帧都包含以下几个部分:

(1)帧起始

在总线空闲时,总线为隐性状态。帧起始由单个显性位构成,标志着报文的开始,并在总线上起着同步作用。

(2)仲裁段

仲裁的主要是定义了报文的标识符,也俗称ID。在CAN2.0A规范中,标识符为11位,而在CAN2.0B中变为了29位。这意味着在2.0B中可以存在更多不同类型的报文,但是也降低了总线的利用率。

(3)控制段

主要定义了数据域字节的长度。通过数据长度码,接收节点可以判断报文数据是否完整。

(4)数据域

包含有0~8个字节数据。

(5)CRC域

CRC又称循环冗余码效验(Cyclical Redundancy Check),是数据通信中常见的查错方法。

(6)ACK域

用于接收节点的反馈应答。

(7)帧结束

由一串7个隐性位组成,表示报文帧的结束。

image

在CAN总线的开发中,核心的关注点就是CAN报文ID以及其数据域。根据客户的要求,ECU接收自己感兴趣的ID报文的同时,也向外发送别的ECU所需要的ID报文。

 

posted @ 2025-11-26 11:07  我家有只江小白  阅读(31)  评论(0)    收藏  举报