CAN 总线的硬件实现

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

  1. CAN 控制器:用于生成和解析 CAN 数据帧。
  2. CAN 收发器:用于电平转换,确保 CAN 控制器的逻辑信号能在 CAN 总线上可靠传输。
  3. CAN 总线:CAN 通信的物理线路,通常由两根差分信号线构成(CAN_H 和 CAN_L)。
  4. 终端电阻:在 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 硬件工作流程#

  1. 数据准备

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

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

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

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

    • CAN 控制器解析接收到的 CAN 帧,并将有效数据传递给 MCU 的应用程序。
  6. 错误检测与处理

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

6. CAN 硬件中的关键点#

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

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

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

总结#

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

posted @   xiazichengxi  阅读(355)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
主题色彩