首页 > 其他分享 >CAN 总线的硬件实现

CAN 总线的硬件实现

时间:2024-09-23 13:45:36浏览次数:8  
标签:控制器 实现 总线 差分 硬件 收发器 信号

要理解 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 硬件通过差分信号传输,具备高抗干扰能力和高可靠性,适用于汽车、工业自动化等领域的多节点通信系统。

标签:控制器,实现,总线,差分,硬件,收发器,信号
From: https://www.cnblogs.com/lihaoxiang/p/18426940

相关文章

  • Hyper-V (NAT) + DHCP server:实现灵活的虚拟机网络(虚拟交换机路由器):类似于vmware的
    vmwareworkstation(pro)有4种内置虚拟网络交换机1:桥接:虚拟机网络就是真正的物理机网络。虚拟机之间,虚拟机和宿主机,虚拟机和其他物理机之间,通过常规的网络方式访问。2:nat网络:虚拟机之间、虚拟机和宿主机可互访;虚拟机可访问其他物理机;其他物理机【不能】访问虚拟机3:仅主机网络:虚......
  • 结对项目——实现一个自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里结对项目-作业-计科22级34班-班级博客-博客园(cnblogs.com)这个作业的目标结对项目——实现一个自动生成小学四则运算题目的命令行程序成员1陈奕奕32220045......
  • 医院急诊系统设计与实现spring boot+vue+mysql+html
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、其他案例七、源码获取​​​​​​​作者介绍:✌️大厂全栈码农|毕设实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️作者博客:曾几何时​​​​​​​......
  • 基于Spring Boot的企业OA管理系统设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、其他案例七、源码获取​​​​​​​作者介绍:✌️大厂全栈码农|毕设实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️作者博客:曾几何时​​​​​​​......
  • 基于Spring Boot的校园服务平台的设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、其他案例七、源码获取​​​​​​​作者介绍:✌️大厂全栈码农|毕设实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️作者博客:曾几何时​​​​​​​......
  • IPD流程体系:IPD在硬件产品开发中的应用
    目录1、内容简介2、开发各阶段介绍3、PVT阶段4、资源群更新作者简介1、内容简介在硬件类相关产品的开发过程中,每个阶段的工作都是需要按照一定的流程、规范和标准去进行的。整体还是相对瀑布化的流程,每个阶段的输入、输出、准入、准出标准也都很明确。也就是说,硬件类产品相对更容易......
  • java毕业设计下载(全套源码+配套论文)——基于javaEE+SSH+mysql的医院在线挂号系统设计
    基于javaEE+SSH+mysql的医院在线挂号系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于javaEE+SSH+mysql的医院在线挂号系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于javaEE+SSH+mysql的医院在线挂号系统设计与实现(毕业论文+程序源码)1、项......
  • java毕业设计下载(全套源码+配套论文)——基于javaEE+SSH+mysql的百货中心供应链管理系
    基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(全套源码+配套论文)大家好,今天给大家介绍基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(全套......
  • 品牌如何实现全渠道增长:策略、挑战与未来展望
    在数字化时代,品牌的全渠道增长已成为企业提升竞争力、实现可持续发展的关键路径。全渠道增长不仅要求企业在多个销售渠道上实现无缝衔接和协同运作,更需要在产品、服务、营销等各个方面进行全面优化,以提供更加便捷、个性化的消费体验。本文将深入探讨品牌如何实现全渠道增长,包......
  • 安全:用logrotate实现fail2ban日志按天切分
    一,fail2ban默认安装了日志分割文件文件位置:/etc/logrotate.d/fail2ban[[email protected]]#rpm-qf/etc/logrotate.d/fail2banfail2ban-server-1.0.2-12.el9.noarch可以看到此文件来自于fail2ban-server这个rpm包配置文件默认内容:[root@iZ2zejc9t0hf6pnw6sewrxZlog......