登录/注册

can总线原理如何理解

  CAN(Controller Area Network),中文名称为控制器局域网络,通常称为CAN bus,即CAN总线。是由德国BOSCH(博世)公司研究开发的,现已成为ISO国际标准化的串行通信协议,是目前在国际上应用最广泛的开放式现场总线之一。

更多

好的,理解CAN总线的原理可以拆分成以下几个核心部分来把握:

核心目标:实现众多电子控制单元(ECU)之间的可靠、高效通信。

想象一下一辆现代汽车:有发动机控制器、变速箱控制器、ABS控制器、仪表盘、安全气囊控制器等等几十个甚至上百个电子模块。它们需要实时地共享信息(如车速、转速、刹车状态、故障码)。CAN总线就是为解决这种“多点对多点”通信而设计的。

核心原理与工作机制:

  1. 基于总线拓扑和差分信号 (物理层):

    • 结构: 所有ECU节点都挂接到一对(两根)总线电缆上:CAN_High (CAN_H) 和 CAN_Low (CAN_L)。就像一个微信群,所有成员都在一个群里发言(总线)。
    • 抗干扰: 采用差分电压传输信号。逻辑状态不是靠单线电压高低判断,而是看两根线之间的电压差
      • 显性电平 (Dominant State) - 逻辑“0”: CAN_H 和 CAN_L 电压差较大(典型值:CAN_H ≈ 3.5V, CAN_L ≈ 1.5V, 差值≈2V)。这代表总线被“主动驱动”的状态,优先级高。
      • 隐性电平 (Recessive State) - 逻辑“1”: CAN_H 和 CAN_L 电压差非常小(约0V)。这代表总线“未被主动驱动”(靠终端电阻维持)的状态,优先级低。
    • 好处: 差分传输对电磁干扰具有极强的抑制能力(干扰通常是共模的,即同时加到两条线上,不会显著改变电压差),非常适应汽车等电气环境恶劣的场合。
  2. 多主结构与非破坏性逐位仲裁 (数据链路层核心):

    • 多主: 任何一个ECU节点都可以在总线空闲时主动发送信息。没有固定的“主”节点控制发送权。
    • 先听后说 (CSMA/CA): 节点想发送消息时,先侦听总线。只有当总线空闲(检测到连续11个隐性位)时,才开始发送。
    • 边说边听 (冲突检测与仲裁): 如果多个节点恰好同时开始发送(冲突),冲突必然发生。CAN总线解决冲突的机制极其巧妙,称为非破坏性逐位仲裁(Nondestructive Bitwise Arbitration)
      • 节点在发送自己报文ID(标识符,决定了报文的优先级)的同时,实时监听总线的实际电平状态。
      • 节点自己发送的位电平会与监听到的总线电平比较:
        • 如果一致:继续发送下一位(说明自己占优或还没冲突)。
        • 如果不一致(比如自己发“1”(隐性)却读到“0”(显性)):说明有更高优先级的节点正在发送显性位。本节点立即停止发送后续位并转为接收模式。这个过程发生在发送ID域的过程中。
      • 仲裁规则: 显性位“0”覆盖隐性位“1”。也就是说,在冲突发生时,谁先发送“0”(较低ID值的对应位更可能是“0”),谁就赢得仲裁。ID数值越小,优先级越高
      • “非破坏性”关键: 赢得仲裁的高优先级报文会完整无缺地继续发送,而退出发送的节点也不会因为冲突而损坏任何信息。对于旁观节点来说,整个过程只看到最终胜利者发出的连贯报文。就像多辆车同时到达路口都想进主路,但谁的车头先占位(发出显性位),谁就继续通行,其它车立刻谦让,道路不会堵塞,赢的车通行顺畅。这种仲裁机制保证了最重要的信息(高优先级)能以最小的延迟被传输。
  3. 报文/帧结构与标识符 (ID):

    • CAN的信息以固定格式的“”进行传输。基本结构如下:
      • 仲裁域 (Arbitration Field): 包含核心的标识符 (ID) 和 RTR 位(标识是数据帧还是远程帧)。ID长度通常是11位(标准帧)或29位(扩展帧)。ID决定了报文的优先级,用于仲裁。
      • 控制域 (Control Field): 包含标识符扩展位和DLC(数据长度码,指示数据域字节数,0-8字节)。
      • 数据域 (Data Field): 实际传输的有效数据(0-8字节)。CAN协议设计传输的是小数据块,适合实时控制系统。
      • CRC域 (CRC Field): 循环冗余校验码,供接收节点检查帧传输错误。
      • ACK域 (ACK Field): 发送节点发送隐性位。所有正确接收到报文(无CRC错误)的节点,无论报文是不是发给它的,都会在这个位置主动回一个显性位,向发送节点确认收到了一个有效帧。
      • 帧结束: 特定结束符。
    • 广播特性: 报文发送到总线上,所有节点都会收到。每个节点通过报文ID来判断自己是否需要处理这个报文。ID既标识了报文含义(如车速),也隐含了其优先级。
  4. 强大的错误检测与处理机制:

    • 为了极高的可靠性,CAN定义了一套完整的错误检测方法:
      • 位监控 (Bit Monitoring): 发送节点在发显性位时会同时监听总线,确保总线确实是显性状态(防止故障节点只接收不发送)。
      • 填充规则检查 (Stuff Rule Check): CAN使用位填充确保同步(连续发5个相同极性位后,自动填充一个反极性位)。接收端检查是否符合填充规则。
      • 帧格式检查 (Frame Check): 检查帧的关键部分(起始帧、仲裁域、控制域、ACK域、帧结束)的固定格式是否合法。
      • CRC校验 (CRC Check): 接收端根据收到的数据重新计算CRC,与报文中的CRC域进行比较。
      • ACK槽检查 (ACK Slot Check): 发送节点检查在ACK域位置是否收到至少一个显性位(确认),否则没人收到。
    • 错误处理: 检测到错误的节点会立即发送一个显性“错误标志”(连续6个显性位,违反填充规则)来主动破坏错误帧,通知总线上所有节点。发送错误帧的节点会重试发送出错的报文(计数器控制)。严重故障的节点会被隔离(进入“总线关闭”状态),避免拖垮整个总线。

总结关键要点:

  1. 目标: 多点、可靠、实时的控制通信(汽车、工业)。
  2. 物理层: 双线差分 (CAN_H, CAN_L),显性/隐性电平,抗干扰强。
  3. 多主仲裁: 核心精髓!“非破坏性逐位仲裁”机制实现:
    • 谁空闲谁发 (CSMA/CA)
    • 冲突时:低ID (小号)优先级高;发0(显)赢,发1(隐)让 (逐位比较)
    • 赢者全发,输者无损退让
  4. 报文结构: 格式固定帧,ID决定含义和优先级,数据短小(0-8字节)。
  5. 广播与确认: 所有节点都收到,由ID决定处理;接收者确认(ACK)。
  6. 高度可靠: 多重错误检测(位监控、填充、帧格式、CRC、ACK)、错误帧破坏、重发、故障隔离。

简单比喻(不严谨但助理解):

想象一个微信群(CAN总线),群成员是各个ECU节点。大家约定:

CAN总线的非破坏性仲裁机制是它能在复杂多节点系统中实现高效、可靠、实时通信的关键所在,也是其设计的精妙之处。

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

CAN总线是什么,CAN总线的特点资料下载

电子发烧友网为你提供CAN总线是什么,CAN总线的特点资料下载的电子资料

资料下载 李军 2021-04-17 08:48:48

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

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

2024-02-19 14:53:54

高速CAN总线和低速CAN总线的特性

高速CAN总线和低速CAN总线的特性 高速

2024-01-31 14:09:01

认识CAN总线错误 CAN总线错误分析与解决

认识CAN 总线错误的第一步就是了解认识CAN 总线协议和它的具体功能,

2023-08-14 15:18:46

高速CAN总线和低速CAN总线的特性

在ISO 11898-2和ISO 11898-3中分别规定了两种CAN总线结构(在BOSCH CAN2.0规范中,并没有关于

2023-04-07 09:30:18

stm32的can总线理解及应用

stm32的can总线理解及应用——程序对应stm32f103系列CAN

2021-08-19 06:26:04

CANOpen系列教程02_ 理解CAN总线协议

CANOpen系列教程02_理解CAN总线协议

2020-03-06 16:17:30

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