0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

stm32的can总线理解及应用

stm32的can总线理解及应用——程序对应stm32f103系列CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。它的通信速度

大连云港 2021-08-19 06:26:04

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

节点的硬件接口电路。基于对CAN 总线控制器的功能分析, 并应用Verilog语言进行软件设计, 从而实现CAN节点之间的通信功能。 0 引言 CAN 总线允许高达1M bit /s通讯速率, 支持多主通讯模式, 有高抗电磁干扰性而且能够检测出通信过程中产生的任何错误, 已被广泛应用到各自动

2023-06-18 11:15:01

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

总线增加隔离固然可以保证总线稳定可靠地通信,但是带隔离通信接口的设备,在复杂的环境或安装状态下,接口会表现出完全不同的ESD特性,了解ESD对接口的影响机理,才能有针对性地增加保护器件,提升隔离接口

2019-08-15 08:59:33

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

CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个

2024-11-12 10:09:17

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

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

2020-03-06 16:17:30

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

CAN总线(Controller Area Network)是一种串行通信协议,主要用于汽车电子控制单元之间的通信。它由Bosch公司在20世纪80年代初开发,因其可靠性、实时性和灵活性而广泛应用

2024-11-21 10:21:51

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

电路的检测和维护是非常重要的。 概述 CAN通信电路主要包括CAN控制器、CAN收发器、CAN总线驱动器、CAN总线终端电阻等部分。在检测CAN通信电路的好坏时,需要从以下几个方面进行: 1.1 硬件检查 硬件检查主要包括对CAN控制器、CAN收发器、CAN总线驱动器、CAN总线终端电阻等硬件组

2024-06-16 11:06:38

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

这意味着变送器通过CAN收发器改变总线电平,并将其信息传输到CAN总线。接收器通过监测总线电平将总线上的信息读取到自己的CAN收发器中。

2024-02-19 14:53:54

基于CAN总线的伺服电机通信控制

【导读】介绍了CAN总线与伺服电机的特点,并讨论了伺服电机基于CAN总线通信控制特性。

2022-12-27 10:57:56

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

CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加

2024-12-23 09:06:44

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

今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,CAN 总线协议解析以及 CAN 通信控制器程序基本框架。话不多说,上货。

2023-05-18 09:21:30

工业控制中的CAN总线接口模块硬件设计原理解析

。其内嵌的增强型CAN 总线控制器(ECAN)模块,完全兼容CAN 2.0B 协议,邮箱数量增加至32 个,并增加了时间戳、消息过滤和超时发送功能,提高了应用CAN通信的灵活性。

2019-07-26 15:40:47

CAN总线是如何通信的#CAN #常学常新

CAN总线

2024-11-07 16:34:29

CAN通信的过滤器配置的理解

总结一些最近做项目对CAN通信的过滤器配置的理解;这里我使用STM32F105系列的芯片,有2路CAN,我使用的是CAN2,过滤器可以设置从15开始,当然,从1开始也是没有问题的;当设置了CAN

richips 2021-08-20 07:14:33

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

认识CAN 总线错误的第一步就是了解认识CAN 总线协议和它的具体功能,这样才能更容易地理解CAN 总线是如何去发现并解决错误的。

2023-08-14 15:18:46

采用CAN总线控制器SJA1000实现控制电路接口的设计

硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。

2020-03-13 10:45:50

can总线为什么要用双绞线?can总线不用双绞线可以吗?

can总线为什么要用双绞线?can总线不用双绞线可以吗? CAN总线是一种数据通信协议,广泛用于汽车、航空、船舶、工业自动化、机器人等领域。CAN总线采用串行通信方式,主要用于实现多个模块之间的通信

2023-09-14 16:48:05

解析汽车can总线无法读取数据情况

现在的汽车一般都采用CAN总线作为标准的通讯总线,我们如果能够解析出一台车子的CAN总线数据,就能够对这台车子的状态有一个非常好的了解

2020-08-06 16:23:07

如何使用CAN通信文档解释来自总线CAN消息?

你好呀,我正在尝试将一个 CAN 节点 (BMS) 连接到总线,并使用另一个节点 (VCU) 来处理数据以根据消息启动少数 LED。这是目标语句。 我知道 CAN 在理论上是如何通信的。但是我需要

hxjq 2023-03-27 06:02:05

CAN总线收发器的工作原理和应用

CAN(Controller Area Network)总线收发器是CAN总线通信中的关键组件,其工作原理和应用对于理解现代汽车电子、工业自动化等领域的通信系统至关重要。以下将详细阐述CAN总线收发器的主要工作原理及其应用。

2024-08-26 15:23:00

CAN总线应用领域 CAN总线协议解析

CAN(Controller Area Network)总线是一种用于车辆内部网络的串行通信协议,由Bosch公司在1986年开发。它以其高可靠性、实时性和灵活性而闻名,广泛应用于汽车电子、工业控制

2024-11-21 10:15:46

CAN总线通信详解

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

2023-03-29 10:06:16

什么是汽车CAN总线#通信

CAN总线,CAN,总线,can总线控制器,总线/接口技术

2022-09-23 14:32:10

CAN总线是什么 CAN总线的作用

IICSPICAN485USB工业以太网EtherCATEtherCAT传输性能EtherCAT应用层协议层CoE协议现场总线最近的实验需要较高的运动控制速率。市场上大部分的驱动板目前只支持CAN通信。毕竟CAN通信配置简单

听我讲 2021-08-06 07:44:19

CAN总线如何实现通信呢?

CAN总线如何实现通信呢?我大体思路这样的:1、初始化的时候,给系统配置时钟,处理看门狗电路2、初始化CAN模块在调试的时候是不是要将计算机模拟成CAN节点,通过上位机的调试软件和CCS来观察呢如何发?如何收?这个感觉难点不少啊?求大神能有个具体的调试方法,先谢谢了

clslda 2020-06-01 15:56:35

汽车CAN总线的特点和应用

汽车CAN总线是一种连接汽车各种控制单元的通信协议和数据传输标准,它对于现代汽车的发展具有重要意义。以下是对汽车CAN总线的详细解析,旨在全面阐述其概念、特点、工作原理、应用以及未来发展等方面。

2024-09-30 11:31:39

CAN总线通信波形要求#电路设计 #通信

CAN总线,CAN,总线,波形,can总线控制器,总线/接口技术

2022-09-23 14:33:51

如何学习CAN总线通信

在开发板上有CAN总线,怎样来进行CAN总线通信呢?希望能普及一下这方面的知识或者提供些相关的例程。如果有高手做过,请介绍一下开发的过程。

lingjianghui 2019-09-30 04:35:02

CAN总线通信中的数据帧结构解析

CAN总线由Bosch公司在1980年代开发,旨在为汽车电子系统提供一个可靠的通信网络。随着技术的发展,CAN总线已经被广泛应用于各种工业和自动化领域。 2. CAN总线数据帧概述 CAN总线的数据

2024-11-12 10:12:17

加载更多
相关标签