登录/注册

can总线通信电路的原理解析

CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

更多

好的,我们来详细解析一下CAN总线(Controller Area Network,控制器局域网)通信电路的工作原理。它是一种在工业自动化和汽车领域应用极其广泛的多主、串行、差分、广播式现场总线。

其核心原理可以分解为以下几个关键方面:

  1. 差分信号传输 (核心物理层特性):

    • 信号表示: CAN总线使用两根线:CAN_H (高) 和 CAN_L (低)
    • 隐性状态: 当总线空闲或没有节点发送显性位时,驱动电路使 CAN_H 和 CAN_L 的电压非常接近(通常都在 2.5V 左右)。这个电压差很小(接近0V),代表了逻辑“1”,称为隐性状态。此时,总线上没有有源驱动。
    • 显性状态: 当有节点需要发送逻辑“0”时,它主动驱动总线:抬高 CAN_H 的电压(例如到约 3.5V),同时拉低 CAN_L 的电压(例如到约 1.5V)。 这样就产生了一个显著的差分电压(比如 2V 左右),代表了逻辑“0”,称为显性状态。
    • 优点:
      • 抗干扰能力强: 外部噪声源(如电磁干扰)通常会同时作用于两根线上,产生的共模噪声会被接收端忽略,只检测差分电压的变化,从而极大地提高了通信的抗噪性能。
      • 信号识别清晰: 显性状态(0)主动且具有较大的电压摆幅,容易被检测到。
  2. 线与逻辑 (实现非破坏性仲裁):

    • 物理特性: CAN 总线上的节点输出级通常采用开集或开漏驱动结构。
    • 逻辑规则: 在隐性状态下,各节点的驱动管截止,总线通过终端电阻(通常是 120Ω)将差分电压拉至接近0(逻辑1)。当任意一个节点驱动显性状态(逻辑0)时,由于线与特性,总线就被强行拉到显性状态。即:显性位(0)覆盖隐性位(1)
    • 关键作用: 这个特性是实现CAN最核心功能——非破坏性逐位仲裁的基础。多个节点同时发送时,只要它们在发送ID字段期间检测到自己发出的隐性位(1)在总线上被覆盖成了显性位(0),就知道总线上有更高优先级(ID值更小)的节点在发送(因为更小ID的二进制位在前面更容易出现0),便立即停止发送(转为接收模式),而不会破坏高优先级节点的帧传输。
  3. 多主结构与仲裁:

    • 无中心控制器: CAN网络上没有主控节点,所有节点在总线空闲时都可以尝试发送数据(多主)。
    • 标识符 (ID): 每个数据帧的开头都有一个唯一的标识符(ID),用来标识数据内容和确定节点优先级。ID值越小,优先级越高。
    • 非破坏性逐位仲裁: 当多个节点同时开始发送时,它们首先发送各自帧的ID。在发送ID的同时,每个节点监听总线状态。
      • 节点发出一个隐性位(1),而检测到总线上是显性位(0):说明有更高优先级的节点也在发送(它发出了一个显性位0),该节点立刻停止发送,退出发送器。
      • 节点发出一个显性位(0),且检测到总线上也是显性位(0):说明至少目前为止没有更高优先级节点发出不同的位,该节点继续发送。
    • 结果: 当ID发送结束时,只有一个节点(发送了最低ID值,即最高优先级的节点)获胜,能够完整发送完它的数据帧。其他低优先级节点自动退出。这个过程中没有任何总线冲突导致的帧损坏,高优先级数据总能成功发送。这是CAN总线区别于其他总线(如RS485)的关键优势。
  4. 广播式通信:

    • 获胜节点发送的数据帧会被广播到总线上的所有节点。
    • 基于ID的过滤: 每个接收节点都会接收完整的数据帧,但会根据帧头的ID来决定是否处理该数据。如果ID不是自己关心的,则忽略该帧;如果是,则读取数据内容。这减少了节点CPU的负载。
  5. 终端电阻:

    • 必要性: CAN总线作为高速差分信号传输线(尤其是符合 ISO 11898-2 的高速CAN),其两端必须各接一个120欧姆的终端电阻
    • 作用:
      • 阻抗匹配: 消除信号在总线两端的反射,保证信号波形质量,防止通信错误。
      • 维持隐性电平: 在无节点驱动(隐性状态)时,通过分压网络(电阻连接到电源和地)将 CAN_H 和 CAN_L 拉至中间电平(约2.5V)。
  6. 节点内部电路结构 (简化模型):

    • CAN 控制器:
      • 负责处理CAN协议相关的逻辑功能:构造帧格式(添加起始位、仲裁字段、控制字段、数据、CRC校验码、ACK应答、结束位等)、错误检测(CRC、帧格式、位填充、ACK)、错误处理(计数器、限制、自动重发或关闭)、位定时控制(波特率设置)、仲裁控制。
    • CAN 收发器:
      • 作为物理层接口,连接在CAN控制器和物理总线之间。
      • 发送端: 接收CAN控制器发出的逻辑电平信号(TTL/CMOS),驱动总线上的CAN_H和CAN_L线,根据逻辑0/1输出显性/隐性差分电平。
      • 接收端: 检测总线上的差分电压(CAN_H - CAN_L),将其转换为逻辑电平信号(TTL/CMOS)发送给CAN控制器。滤除总线上的共模噪声
      • 保护功能: 通常具有过热保护、短路保护(总线到Vcc、地)、ESD保护等。
  7. 错误检测与处理:

    • 强大的错误检测机制:
      • 位监控: 发送节点在发送显性位的同时检测总线是否也是显性位。
      • 位填充检查: 数据帧中连续出现5个相同位后,必须插入一个相反位(位填充)。接收节点发现连续出现6个相同位(在特定区域)即触发错误。
      • 帧检查: 检测固定格式字段(如CRC界定符、ACK界定符、帧结束、帧间隔)是否符合标准。
      • CRC校验: 使用循环冗余校验码检查数据传输的正确性。
      • ACK缺失: 发送节点如果检测到ACK间隙没有被任何节点置为显性位(表示没有节点正确收到帧),则判定为ACK错误。
    • 错误处理: 检测到错误的节点会发送一个“错误帧”(连续6个显性位)来打断总线上的错误传输。每个节点有错误计数器,错误次数超过阈值会自动进入离线状态(错误被动或总线关闭),避免持续干扰总线。

总结CAN通信电路工作流程:

  1. 空闲: 总线隐性状态,所有节点均可尝试发送。
  2. 争用总线: 多个节点同时开始发送,从ID的最高位(MSB)开始逐位仲裁(线与逻辑)。低优先级节点退出,高优先级节点胜出。
  3. 发送数据: 获胜节点完整发送其数据帧(包括ID、数据、CRC等)。
  4. 接收广播: 所有节点接收到完整的帧。
  5. 应答: 正确收到帧的节点在ACK间隙发送显性位,向发送节点确认。发送节点在ACK间隙采样总线,检测是否有应答。
  6. 错误处理: 任何节点检测到错误时(根据上述机制)会发送错误帧打断当前传输。发送节点检测到错误或未收到ACK会尝试重发(如果在错误计数允许范围内)。
  7. 完成: 发送成功后,总线恢复空闲状态(隐性)。

图示说明关键电平状态:

逻辑状态 总线状态 CAN_H 典型值 CAN_L 典型值 差分电压 Vdiff = CAN_H - CAN_L
隐性 逻辑 1 ~2.5V ~2.5V ~0V (或 < 0.5V)
显性 逻辑 0 ~3.5V ~1.5V ~2.0V (或 > 0.9V)

理解CAN总线通信的核心在于掌握其差分传输的抗干扰性线与逻辑实现的非破坏性仲裁以及强大的容错机制。这使得它在复杂的电磁环境和多节点需要实时通信的场合(如汽车)中表现卓越。

CAN总线通信原理介绍 CAN总线模块选择指南

CAN总线(Controller Area Network)是一种串行通信协议,主要用于汽车电子控制单元之间的

2024-11-21 10:21:51

如何使用Arduino实现CAN总线通信

CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、

2024-11-12 10:09:17

如何检测CAN通信电路的好坏

电路的检测和维护是非常重要的。 概述 CAN通信电路主要包括

2024-06-16 11:06:38

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

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

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

CAN总线在客车电路设计中的应用综述

CAN总线在客车电路设计中的应用综述

资料下载 佚名 2021-06-17 09:39:15

CAN总线通信协议

CAN总线通信协议详细如下。

资料下载 姚小熊27 2021-04-19 16:54:38

CAN总线在客车电源等电路设计中的应用

通过对电路原理及逻辑关系的分析,阐明了CAN总线在客车电源、起动及熄火电路

资料下载 佚名 2021-04-12 16:36:09

结合Motorola控制器芯片的CAN总线通信研究

文章介绍了CAN总线通信协议和Motorola新一代嵌入式控制器DSP56F805内置的用于实现

资料下载 佚名 2021-03-15 16:24:27

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

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

2024-02-19 14:53:54

基于FPGA的CAN总线通信节点设计

节点的硬件接口电路。基于对CAN 总线控制器的功能分析, 并应用Verilog语言进行软件设计, 从而实现

2023-06-18 11:15:01

基于FPGA的CAN总线控制器的设计

今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,CAN

2023-05-18 09:21:30

stm32的can总线理解及应用

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

2021-08-19 06:26:04

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

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

2020-03-06 16:17:30

CAN总线隔离接地的原理解析

总线增加隔离固然可以保证总线稳定可靠地通信,但是带隔离通信接口的设备,在

2019-08-15 08:59:33

CAN总线通信系统的研究与设计

MCS-51单片机组成CAN通信系统需要扩展CAN控制器,本系统采用的CAN

2019-01-09 08:23:00

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