要理解 CAN 总线的硬件实现,首先需要了解 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 硬件通过差分信号传输,具备高抗干扰能力和高可靠性,适用于汽车、工业自动化等领域的多节点通信系统。
标签:控制器,实现,总线,差分,硬件,收发器,信号 From: https://www.cnblogs.com/lihaoxiang/p/18426940