CAN总线(Controller Area Network)是一种高度可靠、分布式、实时性强的串行通信总线系统,广泛应用于汽车、工业自动化、医疗设备等领域。其核心设计目标是在恶劣电气环境中实现低成本、高效率、多节点间的可靠通信。
以下是CAN总线的主要工作方式与流程:
一、核心特性与工作方式
-
多主多从结构:
- 没有传统意义上的“主节点”控制总线。总线上的每个节点(ECU - Electronic Control Unit)既是主机也是从机。
- 任何节点都可以在它认为总线空闲时发起通信。节点发送消息的依据是自身的状态变化或设定的调度规则。
-
广播式通信:
- 当一个节点向总线上发送消息(称为“CAN帧”)时,该消息会广播给所有连接到总线上的节点。
- 每个节点都“监听”总线上的所有信息流。
-
基于ID的寻址:
- CAN帧的头部包含一个唯一的标识符(ID)。
- ID决定了该消息的内容含义(即“消息类型”)和其优先级,ID值越小,优先级越高。
- 节点接收时,通过检查ID来决定是否接收和处理该消息。每个节点可以配置为只接收特定ID的消息(即过滤)。
- ID不是接收节点的地址,而是消息内容的标签。
-
非破坏性位仲裁:
- 这是CAN总线区别于其他总线、实现多主和实时性的核心机制。
- 原理: 当多个节点同时开始发送消息时,它们在发送ID的同时也在监听着总线。CAN总线协议是“线与”(Wire-AND)逻辑:显性位(逻辑0)会覆盖隐性位(逻辑1)。
- 仲裁过程:
- 不同节点在发送ID时,从最高位(MSB)开始一位一位地比较。
- 当一个节点发送隐性位(1)而检测到总线为显性位(0)时,它立即知道自己在这场竞争中失败了。
- 失败的节点会立刻停止发送,转为接收模式,并且不会破坏赢得仲裁节点发送的数据帧(这就是“非破坏性”的含义)。
- 最终,ID最小的消息(即优先级最高)赢得仲裁并继续完成其整个帧的发送。失败的节点会在总线再次空闲时自动重试。
-
事件驱动型传输:
- CAN总线的传输通常由节点内部事件触发(例如传感器读数变化、用户输入、定时器到期等)。
- 这使得通信具有很高的实时性和效率,信息在产生时被及时发送。
二、通信流程(一次消息传输)
以节点A向其他节点发送一条消息为例:
-
消息准备(节点A):
- 节点A内的应用程序将需要发送的数据准备好。
- 节点A的CAN控制器会根据数据结构将其封装成一个标准的CAN帧(包含ID、数据长度码、数据域、CRC校验码等)。
-
总线空闲检测:
- 节点A的CAN控制器持续监视总线状态。
- 当检测到总线处于连续11个位的隐性电平(逻辑1)时,认为总线空闲。
-
发送开始与仲裁:
- 当总线空闲并且节点A有数据要发送时,它开始发送帧起始位(SOF - Start of Frame),一个显性位(0),标志传输开始。
- 紧接着,节点A开始发送标识符(ID)。
- 如果在发送ID期间(直到ID结束),没有其他更高优先级(更小ID)的节点同时发送,节点A赢得仲裁。
- 如果有更高优先级节点也尝试发送,节点A在发送ID过程中一旦检测到它发送的是1(隐性)而总线上是0(显性),它就立刻停止发送并转为接收模式。
-
赢得仲裁后继续发送:
- 赢得仲裁的节点(比如节点A)继续发送帧的剩余部分:
- 控制段: 包含数据长度码。
- 数据段: 实际要传输的数据(0-8字节)。
- CRC段: 循环冗余校验码,用于接收方检查帧传输错误。
- 确认段(ACK Slot):
- 发送节点在此处发送一个隐性位(1)。
- 总线上所有正确接收到该帧(无CRC错误)的节点,都会在这个ACK Slot时间段内,发送一个显性位(0)覆盖掉发送方的隐性位。因此发送节点如果监测到ACK Slot位被拉低为显性位,说明至少有一个节点正确收到(这是主动确认机制)。
- 如果发送节点在ACK Slot位时间内检测到的还是隐性位(1),则表示没有任何节点确认收到有效帧,将触发错误。
- 帧结束(EOF): 7个连续的隐性位,标志帧结束。
- 赢得仲裁的节点(比如节点A)继续发送帧的剩余部分:
-
错误检测与处理:
- 全程检测: 发送节点和接收节点都会持续检测传输中的错误(位错误、填充错误、帧格式错误、ACK错误、CRC错误)。
- 错误标志: 一旦任意一个检测到错误的节点(可能是发送节点本身或接收节点),会主动在下一个位时间内发送一个错误帧(由6个显性位和随后的8个隐性位组成),强行中断当前总线上正在进行的错误传输。
- 错误计数器: 每个CAN控制器内部维护着发送错误计数器和接收错误计数器。错误会增加计数器值,成功通信会减少计数器值。当错误计数达到特定阈值时,节点会进入被动错误模式(只能被动发送错误帧)或总线关闭模式(断开通信),防止故障节点持续干扰总线。
-
接收消息(所有节点):
- 总线上的所有节点都在监听。
- 过滤: 每个节点的CAN控制器会检查接收到的帧的ID,如果该ID在控制器配置的接受过滤列表中,则接收该帧(存入本地接收缓存区)。
- 校验: 对接收到的帧进行CRC校验。
- ACK响应: 如上所述,正确接收的节点在ACK Slot位置发送显性位进行确认。
- 向上层传递: 如果接收成功且消息是给自己的(或需要处理的),CAN控制器将数据帧中的有效数据提取出来,交给节点内部的微处理器或应用程序进行处理。
-
总线恢复:
- 在帧结束(EOF)后或错误帧结束后,总线开始空闲计数(连续11个隐性位),然后新的通信可以开始。
总结关键点
- 多主竞争: 所有节点平等竞争总线,ID小的消息胜出。
- 非破坏仲裁: 仲裁失败者自动退出不破坏成功者。
- 广播过滤: 消息广播发送,接收者按ID决定是否接收。
- 强健错误处理: 内置多种错误检测机制(CRC、ACK、格式等)和自动处理(中断传输、错误计数)。
- 事件驱动: 消息传输由节点事件触发。
- 高可靠性: 差分信号抗干扰,完善的错误处理,使其适用于苛刻环境。
这种工作方式使CAN总线非常适合于需要多个子系统之间进行高速、可靠、优先级分明的实时通信的应用场景,例如汽车内部各个控制单元(引擎控制、刹车控制、门窗控制等)之间的信息交互。
CAN总线的基本工作原理是什么?优势是什么?
CAN总线的基本工作原理是什么?CAN总线工作流程是怎样的?CAN总线的优势是什么?如何计算CAN总线负载率?
站长2014
2021-12-27 07:39:55
汽车控制系统的工作方式
电路原理图如下:首先交代下新能源汽车的电源状态,共有6个状态:在每个状态下BCM(车身域控制器)都会发送相关的报文到can总线上。在这里再补充一下汽车控制系统的工作方式,它是由硬件和软件以及机械
闷~~
2022-03-01 07:33:53
can总线工作原理是什么
CAN是一种用于实时应用的串行通讯协议总线,CAN能够使用双绞线来传输信号,是国际上应用最广泛的现场总线之一。 can总线工作原理 CAN总线的传输方式是串行数据传输,能够在1Mb/s的速率40m
2021-08-07 17:07:43
STM32 CAN接收流程是怎样的
STM32 CAN有何功能?STM32 CAN接收流程是怎样的?STM32 bxCAN有哪几种主要的工作模式?
niu!kf
2021-10-27 07:29:19
CAN控制器总线错误分析之CAN节点BusOff恢复过程分析与测试
“ 总线关闭(bus off)是CAN节点比较重要的错误处理机制。那么,在总线关闭状态下,CAN节点的恢复流程是怎样的?又该如何理解节点恢复流程的“快恢复”和“慢恢复”机制?本文将为大家详细分析总线
2020-08-04 11:16:00
最常见的直流负载工作方式
最常见的直流负载工作方式 直流负载工作方式是指在直流电路中使用的各种负载方式。直流负载是用于测试和测量直流电源输出能力和能效的设备,可以模拟真实负载条件下的电流和功率需求。本文将详细介绍最常
2024-01-18 15:12:36
RS485和CAN总线的比较分析
RS485总线和CAN总线都是工业现场通信中常用的总线技术,它们各自具有独特的特点和优势,适用于不同的应用场景。以下是对这两种总线的比较分析: 一、通信方式 RS485总线 : 采用半双工工作方式
2024-11-28 15:35:22
什么是CAN总线通信?CAN总线工作原理
这意味着变送器通过CAN收发器改变总线电平,并将其信息传输到CAN总线。接收器通过监测总线电平将总线上的信息读取到自己的CAN收发器中。
2024-02-19 14:53:54
SPI总线的工作方式是怎样的
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
2019-08-30 16:56:00
GPIO基本结构和工作方式介绍
GPIO的8种工作方式一、GPIO基本结构和工作方式1、战舰/精英板2、Min板3、基本结构4、工作方式二、GPIO寄存器说明1、GPIO相关寄存器2、端口配置低寄存器(GPIOx_CRL)、端口
斗地主之神
2022-01-11 07:02:29
SPI总线的工作方式及原理详解
SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯
2019-05-22 15:51:34
DC电源模块的原理及工作方式
BOSHIDA DC电源模块的原理及工作方式 DC电源模块是一种将交流电转换为直流电的设备,它将交流电输入端转换为稳定的直流电输出,以供电子设备使用。DC电源模块的工作原理及工作方式如下。 DC
2024-04-24 10:37:10
CAN总线收发器的工作原理和应用
CAN(Controller Area Network)总线收发器是CAN总线通信中的关键组件,其工作原理和应用对于理解现代汽车电子、工业自动化等领域的通信系统至关重要。以下将详细阐述CAN总线收发器的主要工作原理及其应用。
2024-08-26 15:23:00
PLC的CPU工作方式详解
Processing Unit,中央处理器)作为其核心组件,其工作方式直接影响到PLC的性能和稳定性。本文将详细探讨PLC的CPU工作方式,包括其工作原理、主要模式以及实际应用中的注意事项,以期为相关技术人员提供参考和借鉴。
2024-06-13 18:20:19
CAN总线控制器的工作原理
CAN(Controller Area Network,控制器局域网)总线控制器的工作原理涉及多个方面,包括消息传输、冲突检测与解决、总线仲裁等关键机制。以下是对CAN总线控制器工作原理的详细解析,旨在全面阐述其工作原理和机制。
2024-09-30 11:33:12
小编科普STM32的GPIO工作方式有哪几种
GPIO的工作原理是什么?GPIO的基本结构是由哪些部分组成的?STM32的GPIO工作方式有哪几种?在STM32中怎样选择I/O模式?
Jade799153347
2021-08-06 09:13:30
放大器的非线性工作方式
放大器的非线性工作方式是一个复杂而广泛的主题,它涉及到电子学、信号处理以及电路设计等多个领域。在非线性工作方式下,放大器的输出信号不再是输入信号的简单线性放大,而是会引入各种非线性效应,如失真、频率变换、谐波产生等。
2024-08-08 17:32:06
STM32的GPIO有哪几种工作方式设置呢
GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集,即所谓的I/O端口,类似51单片机的P0~P3.而STM32 的每个 IO 端口都有 7 个寄存器来控制其工作方式的。端口位基本结构
山中老虎
2022-02-28 07:17:25
RAID 的工作方式
)磁盘上,借此来提高性能或建立数据冗余以防驱动器发生故障。您可以通过设定设备的 RAID 模式来决定设备以何种方式处理数据。 为更好地了解 RAID 的工作方式,首先应熟悉以下术语: 条带化是指将数据分到多个驱动器上。条带 RAID 阵列通常用于
2023-06-25 14:56:01