CAN 总线的硬件实现

要理解 CAN 总线的硬件实现,日常保洁13825404095首先需要了解 CAN 通信的基本物理层和控制器的工作原理。CAN 硬件主要由以下几个关键部分组成:

CAN 控制器:用于生成和解析 CAN 数据帧。

CAN 收发器:用于电平转换,确保 CAN 控制器的逻辑信号能在 CAN 总线上可靠传输。

CAN 总线:CAN 通信的物理线路,通常由两根差分信号线构成(CAN_H 和 CAN_L)。

终端电阻:在 CAN 总线两端用于消除信号反射和确保总线的正确电气特性。

1. CAN 总线的组成 CAN_H 和 CAN_L

CAN_H(CAN High)CAN_L(CAN Low) 是 CAN 总线的两根差分信号线。

通过这两条线,CAN 以差分信号的形式进行数据传输。

在空闲状态下,CAN_H 和 CAN_L 电压是相等的,通常在 2.5V 左右。

在传输数据时,CAN_H 和 CAN_L 之间产生差分电压:

显性位(Dominant bit):CAN_H 比 CAN_L 电压高约 2V,CAN_H 为 3.5V,CAN_L 为 1.5V。

隐性位(Recessive bit):CAN_H 和 CAN_L 电压相同,通常在 2.5V。

差分信号的好处是具有强抗干扰能力,即使在长距离传输中,CAN 通信也能保持稳定和可靠。

终端电阻

终端电阻通常为120Ω,放置在 CAN 总线的两端,主要作用是消除信号反射并确保总线的电气稳定性。

CAN 总线必须在两端各接一个终端电阻,以确保差分信号的完整性和信号传输的稳定性。

2. CAN 控制器

CAN 控制器负责处理 CAN 数据帧的生成、解析、错误检测等高级功能。它位于 MCU(微控制器)或专用 CAN 控制器芯片上。

功能:

数据帧生成:根据应用程序的指令,CAN 控制器生成 CAN 数据帧(包括起始位、标识符、数据字段、校验码、ACK 等部分)。

仲裁机制:CAN 控制器自动处理总线的仲裁,确定优先级高的节点可以继续发送数据,优先级低的节点则等待。

错误检测:CAN 控制器可以检测数据帧中的错误(如 CRC 校验错误、位错误等),并负责重传数据。

接收和解析数据:当 CAN 总线上有数据时,CAN 控制器会将数据解码,并通知微控制器。

FIFO 缓冲区:控制器一般带有发送和接收的 FIFO 缓冲区,确保高效处理数据传输。

典型的 CAN 控制器:

内置于 MCU:许多现代微控制器(如 STM32、PIC、NXP 等)内置了 CAN 控制器模块,这些控制器可以直接与 CAN 收发器连接进行通信。

外部 CAN 控制器:在一些情况下,可以使用外部的 CAN 控制器芯片(如 MCP2515)通过 SPI 接口与微控制器通信。

3. CAN 收发器(Transceiver)

CAN 收发器负责将 CAN 控制器的逻辑信号(TX 和 RX)转换为 CAN 总线上的差分信号(CAN_H 和 CAN_L),并且将 CAN 总线上的信号转换回逻辑信号。

CAN 收发器的主要功能:

电平转换:CAN 控制器的 TX 引脚输出的是标准逻辑电平(0V 或 3.3V/5V),而 CAN 总线上的信号是差分电平(CAN_H 和 CAN_L),收发器负责将它们进行转换。

抗干扰:CAN 收发器通过差分信号传输数据,具有较强的抗干扰能力,可以确保即使在长距离或电气噪声环境下,CAN 通信仍然可靠。

总线驱动:CAN 收发器具备将信号驱动到总线上的能力,同时能够从总线上读取信号并传输回控制器。

典型的 CAN 收发器:

MCP2551:一种常用的 CAN 收发器,用于将 CAN 控制器的逻辑信号转换为差分信号。

TJA1040、TJA1050:NXP 的 CAN 收发器芯片,具有较强的抗噪声能力,常用于工业和汽车应用中。

CAN 收发器连接:

TX 和 RX 引脚:CAN 收发器通过两个引脚与 CAN 控制器连接,TX(发送)和 RX(接收)。

CAN_H 和 CAN_L:CAN 收发器通过 CAN_H 和 CAN_L 两个引脚连接到 CAN 总线。

4. 硬件连接图

典型的 CAN 硬件实现如下图所示:

+-----------------------------------+ | | | 微控制器(MCU) | | | | +----------------------------+ | | | CAN 控制器(内置或外部) | | | +----------------------------+ | | | | | | TX RX | +-----------------------------------+ | | | | +---------------------------+ +---------------------------+ | CAN 收发器 | | CAN 收发器 | | | | | | CAN_H --------------+------+-------------- CAN_H | | CAN_L --------------+------+-------------- CAN_L | +---------------------------+ +---------------------------+ | | +--------------------------------+ CAN 总线(带有终端电阻)

MCU 通过 CAN 控制器的 TX 和 RX 引脚与 CAN 收发器连接,收发器负责将这些信号转换为 CAN_H 和 CAN_L 信号,在 CAN 总线上传输。

CAN 总线两端通常各接一个 120Ω 的终端电阻,以保证信号质量。

5. CAN 硬件工作流程

数据准备

应用程序通过 MCU(或 CAN 控制器)准备要发送的数据,并通过 CAN 控制器的 TX 引脚发送信号给 CAN 收发器。

发送数据

CAN 收发器将来自 TX 的信号转换为差分信号,并在 CAN_H 和 CAN_L 线路上发送数据。

总线仲裁

如果多个节点同时发送数据,CAN 控制器的仲裁机制会通过比较标识符优先级来确定谁能优先发送,优先级低的节点自动等待。

接收数据

接收方通过 CAN 收发器从 CAN_H 和 CAN_L 线路接收到差分信号,收发器将差分信号转换为标准的逻辑电平,并将其传递给 CAN 控制器的 RX 引脚。

数据解析

CAN 控制器解析接收到的 CAN 帧,并将有效数据传递给 MCU 的应用程序。

错误检测与处理

如果在传输过程中检测到错误(如位错误、CRC 错误),CAN 控制器负责重新传输数据帧,保证数据的完整性。

6. CAN 硬件中的关键点

抗干扰性:CAN 使用差分信号传输,抗干扰能力强,这使得它在噪声环境下(如汽车电子和工业现场)具有良好的性能。

总线负载能力:CAN 支持多个节点(理论上最多 120 个节点)挂接到同一总线,节点之间无需地址配置,通过 CAN 标识符进行消息过滤。

硬件设计简化:CAN 硬件设计简单,通常只需要一个 CAN 收发器和总线上的终端电阻即可完成硬件部分的设计。

总结

CAN 总线的硬件实现主要依赖于 CAN 控制器CAN 收发器 的协作。CAN 控制器负责生成、解析和管理 CAN 帧,而 CAN 收发器则负责信号的电平转换和传输。在实际硬件设计中,终端电阻是必不可少的,用于保证总线的电气特性。CAN 硬件通过差分信号传输,具备高抗干扰能力和高可靠性,适用于汽车、工业自动化等领域的多节点通信系统。

2025-06-29 08:22 点击量:12