CAN总线标准及协议分析

目录

1. 简介

2. CAN总线标准

2.1 物理层

2.1.1 CAN总线网络

2.1.2 CAN收发器

2.1.3 CAN信号表示

2.1.4 CAN信号传输

2.2 数据链路层

2.2.1 数据帧

2.2.1.1 帧起始与结束帧

2.2.1.2 仲裁段

 2.2.1.3 控制段

 2.2.1.4 数据段

2.2.1.5 CRC段

2.2.1.6 ACK段

2.2.2 远程帧

2.2.3 错误帧

2.2.4 过载帧

2.2.5 间隔帧

2.3 CAN总线发送总流程

 2.4 CAN配置

2.4.1 CAN帧发送

2.4.2 CAN帧接收

 2.4.3 波特率计算


1. 简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

优点:

传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。

Ø 低成本:ECUs通过单个CAN接口进行通信,布线成本低。

Ø 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置

Ø 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。

Ø 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。

Ø 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。

特性:

1、具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。

2、采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。

3、具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus上,形成多主机局部网络。

4、可根据报文的ID决定接收或屏蔽该报文。

5、可靠的错误处理和检错机制。

6、发送的信息遭到破坏后,可自动重发。

7、节点在错误严重的情况下具有自动退出总线的功能。

8、报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。

CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。

由德国的Bosch公司开发,近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。

一个典型的CAN应用场景:

2. CAN总线标准

CAN总线标准只规定了物理层数据链路层,需要用户自定义应用层。不同的CAN标准仅物理层不同。

CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。高低电平幅度低,对应的传输速度快;

 

 *双绞线共模消除干扰,是因为电平同时变化,电压差不变。

2.1 物理层

CAN有三种接口器件

多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓"线与"

CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差

和485、232一样,CAN的传输速度与距离成反比。

CAN总线,终端电阻的接法:

为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线

2.1.1 CAN总线网络

CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。

2.1.2 CAN收发器

CAN收发器负责逻辑电平和物理信号之间的转换

将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的引脚定义如下:

can总线原理

2.1.3 CAN信号表示

CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

显性与隐性电平的解释:

CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。

按照定义的:

  • CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。
  • CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。

2.1.4 CAN信号传输

发送过程: CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

接收过程: CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

2.2 数据链路层

CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔

数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载帧是接收节点用来向发送节点告知自身接收能力的帧;用

于将数据帧、远程帧与前面帧隔离的帧。

2.2.1 数据帧

数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)

2.2.1.1 帧起始与结束帧

帧起始:由单个显性位组成,总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

帧结束:由7个连续的隐形位组成。

(注:显性电平和隐性电平是相对于CAN_H和CAN_L而言的差分信号电平,并非TTL电平上的高低电平,需要注意)如图2-2所示。

2.2.1.2 仲裁段

CAN总线是如何解决多点竞争的问题?

由仲裁段给出答案。只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

帧ID越小,优先级越高。对于同为扩展格式数据帧标准格式远程帧扩展格式远程帧的情况同理。

由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

img

 2.2.1.3 控制段

共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。

 2.2.1.4 数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合。

数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

2.2.1.5 CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成

2.2.1.6 ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平如图29所示。

2.2.2 远程帧

与数据帧相比,远程帧结构上无数据段,由6个段组成,也分为标准格式和扩展格式,且RTR位为1(隐性电平)。

如下图所示由于数据帧的RTR位为显性电平远程帧的RTR位为隐性电平

所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高

数据帧于远程帧仲裁机制

2.2.3 错误帧

CAN是可靠性很高的总线,但是它也有五种错误。

  • CRC错误:发送与接收的CRC值不同发生该错误;
  • 格式错误:帧格式不合法发生该错误;
  • 应答错误:发送节点在ACK阶段没有收到应答信息发生该错误;
  • 位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误;
  • 位填充错误:通信线缆上违反通信规则时发生该错误。

当发生这五种错误之一时,发送节点或接受节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识。

为防止某些节点自身出错而一直发送错误帧,干扰其他节点通信,CAN协议规定了节点的3种状态及行为

 (注:这些错误处理的机制是由硬件自主完成的这样做的目的就是只要CAN在收到数据肯定是正确的数据)。

2.2.4 过载帧

当某节点没有做好接收的"准备"时,将发送过载帧,以通知发送节点。过载帧由过载标志和过载帧界定符组成如下图:

 由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象。

2.2.5 间隔帧

间隔帧用于隔离数据帧、远程帧与他们前面的帧,但错误帧和过载帧前面不加帧间隔。

2.3 CAN总线发送总流程

CAN-bus整个链路层处理数据的流程是如图61所示:

 2.4 CAN配置

 上电后处于复位状态,必须初始化后才能工作。

(1)进入复位模式;

(2)设置时钟分频寄存器选择时钟频率、CAN模式;

(3)获取时钟,设定CAN波特率,计算并设置bit timing参数;

(4)设置输出模式;

(5)清零退出复位模式;

(6)CAN接收

(7)CAN发送

(8)CAN中断判断,tx|rx|error

2.4.1 CAN帧发送

发送CAN帧的步骤:

        1. 检测状态寄存器,等待发送缓冲区FIFO可用;

        2. 填充报文到发送缓冲区;

        3. 启动发送。

2.4.2 CAN帧接收

接收CAN帧的步骤:

        1. 检测状态寄存器,接收缓冲区FIFO不为空;

        2. 读取接收缓冲区FIFO的报文数据;

        3. 解析报文数据。

 2.4.3 波特率计算

CAN通信中的每一位分为四个部分。SYNC_SEG,PROP_SEG_SEG,PHASE_SEG1,PAHSE_SEG2,SJW。

Bit time计算:

𝑡𝑆𝑒𝑔_1与 𝑡𝑆𝑒𝑔_2均表示𝑇𝑄 数量,

 根据不同的模式、波特率要求,设定𝑝𝑟𝑜𝑔𝑎𝑔𝑎𝑡𝑖𝑜𝑛_𝑠𝑒𝑔𝑚𝑒𝑛𝑡(𝑇𝑄 𝑛𝑢𝑚),𝑝h𝑎𝑠𝑒_𝑠𝑒𝑔1(𝑇𝑄 𝑛𝑢𝑚),𝑝h𝑎𝑠𝑒_𝑠𝑒𝑔2(𝑇𝑄 𝑛𝑢𝑚),𝑡𝑠𝑗𝑤

 注:更多详细请参考

CAN总线报文浅析_Suger Mike的博客-CSDN博客_can报文解析

(6条消息) CAN总线详解_羊脂球的博客-CSDN博客_can总线

CAN总线(一) - J博士 - 博客园 (cnblogs.com)

  • 4
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《CAN总线应用层协议J1939轻松入门》是一本介绍CAN总线应用层协议J1939的入门指南。J1939是一种广泛应用于商用车辆领域的通信协议,它定义了一套用于电子设备之间通信和数据交换的规范。 这本PDF提供了对J1939协议的全面介绍。首先,它解释了CAN总线的工作原理和基本概念,包括CAN帧、CAN标识符和通信速率等。然后,它详细介绍了J1939协议的体系结构和层次结构,包括物理层、数据链路层、网络层和应用层。读者可以了解各个层次的功能和任务,并了解它们之间的关系。 此外,该PDF还介绍了J1939协议中常用的数据格式和数据传输方式。它说明如何在J1939网络中定义和发送数据消息,以及如何解析和处理接收到的消息。此外,它还包含了J1939中常见的参数和命令,读者可以学习如何使用这些参数和命令来控制和监控设备。 总的来说,这本PDF提供了一个简单而全面的入门指南,帮助读者了解和学习CAN总线应用层协议J1939。无论是对于初学者还是有一定经验的工程师来说,它都是一个有价值的资源,可以帮助他们更好地理解和应用J1939协议。 ### 回答2: 《CAN总线应用层协议J1939轻松入门》是一本针对CAN总线应用层协议J1939的入门教程。该教程以简明易懂的方式介绍了J1939协议的基本概念、结构和应用,旨在帮助读者轻松入门并快速掌握这一协议。 J1939协议是应用于重型商用车辆的一种通信协议,旨在实现车辆各个子系统之间的数据交换和共享。该协议定义了一套标准的消息格式和通信规则,使不同厂家的设备能够相互通信和交换数据。 《CAN总线应用层协议J1939轻松入门》从基础知识开始,介绍了CAN总线的原理和基本特点,使读者了解CAN总线的基本工作原理和优势。随后,教程详细讲解了J1939协议的结构和消息格式,包括PDU1、PDU2、PGN、SPN等重要概念的解释和应用,让读者能够深入了解J1939协议的内部机制。 此外,教程还涵盖了J1939协议的应用实例和案例分析,通过具体的实例帮助读者更好地理解协议的应用场景和实际工作。教程还提供了J1939协议的相关工具和资源推荐,供读者进一步学习和深入研究。 总的来说,《CAN总线应用层协议J1939轻松入门》是一本简单易懂、系统全面的教程,适合初学者学习和入门J1939协议。通过阅读该教程,读者可以轻松入门J1939协议,掌握其基本原理和应用,在相关领域进行实际应用和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值