登录/注册

can总线的工作方式与流程是怎样的?

CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。

更多

CAN总线(Controller Area Network)是一种高度可靠、分布式、实时性强的串行通信总线系统,广泛应用于汽车、工业自动化、医疗设备等领域。其核心设计目标是在恶劣电气环境中实现低成本、高效率、多节点间的可靠通信

以下是CAN总线的主要工作方式与流程:

一、核心特性与工作方式

  1. 多主多从结构:

    • 没有传统意义上的“主节点”控制总线。总线上的每个节点(ECU - Electronic Control Unit)既是主机也是从机
    • 任何节点都可以在它认为总线空闲时发起通信。节点发送消息的依据是自身的状态变化或设定的调度规则。
  2. 广播式通信:

    • 当一个节点向总线上发送消息(称为“CAN帧”)时,该消息会广播给所有连接到总线上的节点
    • 每个节点都“监听”总线上的所有信息流。
  3. 基于ID的寻址:

    • CAN帧的头部包含一个唯一的标识符(ID)
    • ID决定了该消息的内容含义(即“消息类型”)和其优先级,ID值越小,优先级越高。
    • 节点接收时,通过检查ID来决定是否接收和处理该消息。每个节点可以配置为只接收特定ID的消息(即过滤)。
    • ID不是接收节点的地址,而是消息内容的标签
  4. 非破坏性位仲裁:

    • 这是CAN总线区别于其他总线、实现多主和实时性的核心机制。
    • 原理: 当多个节点同时开始发送消息时,它们在发送ID的同时也在监听着总线。CAN总线协议是“线与”(Wire-AND)逻辑:显性位(逻辑0)会覆盖隐性位(逻辑1)。
    • 仲裁过程:
      • 不同节点在发送ID时,从最高位(MSB)开始一位一位地比较。
      • 当一个节点发送隐性位(1)而检测到总线为显性位(0)时,它立即知道自己在这场竞争中失败了
      • 失败的节点会立刻停止发送,转为接收模式,并且不会破坏赢得仲裁节点发送的数据帧(这就是“非破坏性”的含义)。
      • 最终,ID最小的消息(即优先级最高)赢得仲裁并继续完成其整个帧的发送。失败的节点会在总线再次空闲时自动重试。
  5. 事件驱动型传输:

    • CAN总线的传输通常由节点内部事件触发(例如传感器读数变化、用户输入、定时器到期等)。
    • 这使得通信具有很高的实时性和效率,信息在产生时被及时发送。

二、通信流程(一次消息传输)

以节点A向其他节点发送一条消息为例:

  1. 消息准备(节点A):

    • 节点A内的应用程序将需要发送的数据准备好。
    • 节点A的CAN控制器会根据数据结构将其封装成一个标准的CAN帧(包含ID、数据长度码、数据域、CRC校验码等)。
  2. 总线空闲检测:

    • 节点A的CAN控制器持续监视总线状态
    • 当检测到总线处于连续11个位的隐性电平(逻辑1)时,认为总线空闲
  3. 发送开始与仲裁:

    • 当总线空闲并且节点A有数据要发送时,它开始发送帧起始位(SOF - Start of Frame),一个显性位(0),标志传输开始。
    • 紧接着,节点A开始发送标识符(ID)
    • 如果在发送ID期间(直到ID结束),没有其他更高优先级(更小ID)的节点同时发送,节点A赢得仲裁。
    • 如果有更高优先级节点也尝试发送,节点A在发送ID过程中一旦检测到它发送的是1(隐性)而总线上是0(显性),它就立刻停止发送并转为接收模式
  4. 赢得仲裁后继续发送:

    • 赢得仲裁的节点(比如节点A)继续发送帧的剩余部分:
      • 控制段: 包含数据长度码。
      • 数据段: 实际要传输的数据(0-8字节)。
      • CRC段: 循环冗余校验码,用于接收方检查帧传输错误。
      • 确认段(ACK Slot):
        • 发送节点在此处发送一个隐性位(1)
        • 总线上所有正确接收到该帧(无CRC错误)的节点,都会在这个ACK Slot时间段内,发送一个显性位(0)覆盖掉发送方的隐性位。因此发送节点如果监测到ACK Slot位被拉低为显性位,说明至少有一个节点正确收到(这是主动确认机制)。
        • 如果发送节点在ACK Slot位时间内检测到的还是隐性位(1),则表示没有任何节点确认收到有效帧,将触发错误。
      • 帧结束(EOF): 7个连续的隐性位,标志帧结束。
  5. 错误检测与处理:

    • 全程检测: 发送节点和接收节点会持续检测传输中的错误(位错误、填充错误、帧格式错误、ACK错误、CRC错误)。
    • 错误标志: 一旦任意一个检测到错误的节点(可能是发送节点本身或接收节点),会主动在下一个位时间内发送一个错误帧(由6个显性位和随后的8个隐性位组成),强行中断当前总线上正在进行的错误传输。
    • 错误计数器: 每个CAN控制器内部维护着发送错误计数器接收错误计数器。错误会增加计数器值,成功通信会减少计数器值。当错误计数达到特定阈值时,节点会进入被动错误模式(只能被动发送错误帧)或总线关闭模式(断开通信),防止故障节点持续干扰总线。
  6. 接收消息(所有节点):

    • 总线上的所有节点都在监听。
    • 过滤: 每个节点的CAN控制器会检查接收到的帧的ID,如果该ID在控制器配置的接受过滤列表中,则接收该帧(存入本地接收缓存区)。
    • 校验: 对接收到的帧进行CRC校验。
    • ACK响应: 如上所述,正确接收的节点在ACK Slot位置发送显性位进行确认。
    • 向上层传递: 如果接收成功且消息是给自己的(或需要处理的),CAN控制器将数据帧中的有效数据提取出来,交给节点内部的微处理器或应用程序进行处理。
  7. 总线恢复:

    • 在帧结束(EOF)后或错误帧结束后,总线开始空闲计数(连续11个隐性位),然后新的通信可以开始。

总结关键点

这种工作方式使CAN总线非常适合于需要多个子系统之间进行高速、可靠、优先级分明的实时通信的应用场景,例如汽车内部各个控制单元(引擎控制、刹车控制、门窗控制等)之间的信息交互。

什么是CAN总线通信?CAN总线工作原理

这意味着变送器通过CAN收发器改变总线电平,并将其信息传输到CAN总线。

2024-02-19 14:53:54

最常见的直流负载工作方式

最常见的直流负载工作方式  直流负载工作方式是指在直流电路中使用的各种负载方式。直流负载是用于测试和测量直流电源输出能力和能效的设备,可以模拟真

2024-01-18 15:12:36

汽车控制系统的工作方式

电路原理图如下:首先交代下新能源汽车的电源状态,共有6个状态:在每个状态下BCM(车身域控制器)都会发送相关的报文到can总线上。在这里再补充一下汽车控制系统的

2022-03-01 07:33:53

CAN总线接口EMC标准电路设计方案

CAN总线接口EMC标准电路设计方案

资料下载 jupitars3993 2021-07-12 10:45:28

CAN总线及应用

以MSCAN08和MSCAN12为示例,讲述CAN现场总线,初步掌握CAN总线

资料下载 姚小熊27 2021-04-20 16:12:35

汽车驱动系统的CAN总线设计

汽车驱动系统的CAN总线设计说明。

资料下载 姚小熊27 2021-04-20 09:48:01

浅谈CAN总线系统

结合汽车技术发展对传统布线方法中存在的问题和CAN总线系统的使用进行了介绍,总结了CAN

资料下载 姚小熊27 2021-04-19 17:31:30

AD级联的工作方式配置和AD双排序的工作方式配置详细说明

本文档的主要内容详细介绍的是AD级联的工作方式配置和AD双排序的工作方式配置详细说明

资料下载 淡然之心 2019-12-23 08:00:00

SPI总线工作方式是什么?

SPI总线具有哪些特点?SPI总线的工作方式是什么?

2022-01-25 06:57:09

CAN总线的基本工作原理是什么?优势是什么?

CAN总线的基本工作原理是什么?CAN

2021-12-27 07:39:55

STM32 CAN接收流程怎样

STM32 CAN有何功能?STM32 CAN接收流程是怎样的?STM3

2021-10-27 07:29:19

can总线工作原理是什么

CAN是一种用于实时应用的串行通讯协议总线,CAN能够使用双绞线来传输信号,是国际上应用最广泛的现场

2021-08-07 17:07:43

SPI是什么?SPI总线有哪几种工作方式

SPI是什么?SPI总线有哪几种工作方式?

2021-05-21 06:12:30

CAN控制器总线错误分析之CAN节点BusOff恢复过程分析与测试

“ 总线关闭(bus off)是CAN节点比较重要的错误处理机制。那么,在总线关闭状态下,

2020-08-04 11:16:00

ups不间断电源工作方式

本视频主要详细介绍了ups不间断电源工作方式,分别是正常运行方式、电池工作方式、旁路运行

2019-06-26 14:38:12

7天热门专题 换一换
相关标签