CAN 显性、隐性电平学习

CAN 显性、隐性电平学习

CAN(Controller Area Network)总线 中,隐性电平(Recessive Level)显性电平(Dominant Level) 是两种基本的总线状态,它们通过 差分电压 来表示,由 CAN 收发器 实现,用于传输逻辑“0”和“1”。


✅ 一、基本定义

状态逻辑值差分电压(VCAN_H - VCAN_L含义
显性电平(Dominant)逻辑 00.9V(典型值 2V)总线被“拉低”,表示数据 0 或总线活动
隐性电平(Recessive)逻辑 10.5V(典型值 0V)总线处于“高阻态”,表示数据 1 或空闲

📌 关键点

  • 显性 > 隐性:当一个节点发送“显性”而其他节点发送“隐性”时,总线呈现“显性”状态(这是 CAN 仲裁的基础)。
  • 硬件实现:由 CAN 收发器芯片(如 TJA1050、SN65HVD230)完成 MCU 的单端信号(TXD/RXD)与总线差分信号(CAN_H/CAN_L)之间的转换。

🔧 二、电路实现原理

1. CAN 收发器内部结构简图(以 TJA1050 为例)

                         +------------------+
                         |                  |
       MCU_TXD  -------->|  Driver Input    |       CAN_H  ---> to bus
                         |                  |          |
                         |     Driver       |--------> +----+
                         |                  |          |    |
                         |                  |          |    | 60Ω (等效)
                         |                  |          |    |
                         |                  |--------> +----+
                         |                  |          |
       MCU_RXD  <--------|  Receiver Output |       CAN_L  ---> to bus
                         |                  |
       (GND)  <----------|  Ground Ref      |
                         +------------------+
                                |
                               GND
  • 发送过程(TXD → CAN_H/CAN_L)

    • 当 MCU 发送 逻辑 0(显性):收发器内部驱动器导通,CAN_H 被拉高,CAN_L 被拉低,形成 ≥0.9V 差分电压
    • 当 MCU 发送 逻辑 1(隐性):收发器内部驱动器关闭,CAN_H 和 CAN_L 通过终端电阻(120Ω)被上拉/下拉至相同电压,差分电压 ≈ 0V
  • 接收过程(CAN_H/CAN_L → RXD)

    • 收发器检测差分电压:
      • ≥ 0.9V → 输出 逻辑 0 到 MCU_RXD
      • ≤ 0.5V → 输出 逻辑 1 到 MCU_RXD

2. 外部电路连接示例

         MCU                          CAN 收发器 (TJA1050)                总线
+-------------------+        +----------------------------------+      +--------+
|                   |        |                                  |      |        |
|     TXD  -------->|--------|  TXD (Driver Input)              |      |        |
|                   |        |                                  |      |        |
|     RXD  <--------|--------|  RXD (Receiver Output)           |      |        |
|                   |        |                                  |      |        |
|     GND  -------->|--------|  GND                             |      |        |
|                   |        |                                  |      |        |
|                   |        |  Vref (if used)                  |      |        |
|                   |        |                                  |      |        |
|                   |        |  CAN_H ------------------------->|----->| CAN_H  |
|                   |        |                                  |      |        |
|                   |        |  CAN_L ------------------------->|----->| CAN_L  |
|                   |        |                                  |      |        |
+-------------------+        +----------------------------------+      +--------+
                                                                        |
                                                                       ===
                                                                       GND (可选)
🔌 外部终端电阻:
  • 在总线两端各接一个 120Ω 电阻,连接 CAN_H 和 CAN_L。
  • 作用:匹配特性阻抗,防止信号反射。
🔋 偏置电阻(可选):
  • 有时在 CAN_H 上接一个上拉电阻(如 1kΩ 到 3.3V),CAN_L 接下拉电阻,用于确保总线在空闲时稳定在隐性状态(防干扰)。

📈 三、电压电平示意图

         显性电平 (Dominant)        隐性电平 (Recessive)
              (逻辑 0)                   (逻辑 1)
                 |                           |
   CAN_H     ----+----                   ----+----
                 |        差分电压 ≥ 0.9V     |        差分电压 ≈ 0V
   CAN_L     ----+----                   ----+----
                 |                           |
                 V                           V
             Vdiff ≥ 0.9V              Vdiff ≈ 0V

显性电平是“主动驱动”的低阻态
隐性电平是“高阻释放”的自然状态


🧠 四、为什么这样设计?—— 优势

  1. 非破坏性仲裁(Arbitration)

    • 所有节点同时发送,通过监测总线是否从“隐性”变为“显性”来判断是否“输掉仲裁”。
    • 显性 > 隐性,高优先级报文自动胜出。
  2. 抗干扰能力强

    • 差分信号对共模噪声有很强的抑制能力。
  3. 故障安全(Fail-safe)

    • 即使总线短路或断线,也能检测到故障状态。

✅ 五、总结

项目显性电平(Dominant)隐性电平(Recessive)
逻辑值01
差分电压≥ 0.9V(典型 2V)≤ 0.5V(典型 0V)
总线状态被驱动(低阻)释放(高阻)
优先级高(覆盖隐性)
对应状态数据传输、仲裁中空闲、逻辑1

如果你正在设计 CAN 电路,建议:

  • 使用正规 CAN 收发器(如 TJA1050、MCP2551)
  • 在总线两端加 120Ω 终端电阻
  • 使用双绞线连接 CAN_H 和 CAN_L
  • 避免使用 RS485 收发器“模拟” CAN(无法实现仲裁)

我们继续深入探讨一下电路上如何实现的。

这个不就是OC 门电路吗?

✅ 简短回答:

CAN 总线的 隐性 = 高阻态(Hi-Z)显性 = 主动拉低,这种“线与(Wired-AND)”逻辑行为,本质上与 OC 门(或 OD 门)的“线与”结构非常相似


🔍 一、OC 门回顾:什么是 Open Collector?

OC 门(集电极开路) 是一种输出结构,其特点是:

  • 输出晶体管的集电极悬空,需要外接上拉电阻。
  • 只能主动拉低电平(输出 0),不能主动输出高电平。
  • 高电平由外部上拉电阻提供(即“释放”状态)。

多个 OC 门可以并联到一条总线上,实现“线与(Wired-AND)”逻辑:

        Vcc
         |
        [R]
         |
         +-----> Output (总线)
         |
   +-----+-----+
   |     |     |
  Q1    Q2    Q3   (NPN 晶体管,OC 输出)
   |     |     |
  GND   GND   GND

→ 只要有一个晶体管导通(输出 0),总线就是 0;
→ 只有所有晶体管都截止(高阻),总线才被上拉为 1。

这就是典型的“低电平有效”的线与结构。


🔁 二、CAN 总线 vs OC 门:类比分析

特性OC 门(线与)CAN 总线
输出能力只能拉低,不能主动输出高只能驱动显性(拉低差分电压),不能主动输出隐性
高电平/隐性状态由外部上拉电阻提供由终端电阻 + 偏置电路维持差分电压 ≈ 0
总线状态控制任意节点可拉低总线任意节点可发送显性位(覆盖隐性)
逻辑关系线与(Wired-AND)
Output = NOT (A OR B OR C)
线或(Wired-OR)的反相
显性(0)优先于隐性(1)
优先级机制任意节点可发起信号高优先级 ID 报文在仲裁中胜出(显性覆盖隐性)

✅ 所以:CAN 的“显性覆盖隐性”机制,本质上就是一种“线与”逻辑在差分信号上的扩展应用


🧠 三、关键区别:CAN 不是“单线”OC,而是“差分 + 状态机”

虽然行为类似 OC 门,但 CAN 更复杂,主要区别如下:

区别说明
1. 差分信号OC 是单端信号;CAN 是差分信号(CAN_H - CAN_L),抗干扰更强
2. 隐性不是“高电平”OC 的隐性是“上拉到 Vcc”;CAN 的隐性是“差分电压 ≈ 0V”,两个线电压接近(如 2.5V/2.5V)
3. 显性是主动驱动CAN 收发器会主动驱动 CAN_H 上拉、CAN_L 下拉,形成 2V 差分电压,不是简单的“拉低”
4. 内部有状态机和保护CAN 收发器内部有故障检测、斜率控制、热保护等,比 OC 门更智能
5. 终端电阻匹配阻抗CAN 使用 120Ω 终端电阻匹配传输线特性阻抗,防止反射,这是高速通信必需的

📌 四、更准确的类比:CAN 是“差分版的线与(Wired-AND)总线”

我们可以这样理解:

OC 门线与总线:
   总线电平 = 低(只要有一个节点拉低)
            = 高(所有节点释放)

CAN 总线:
   差分电平 = 显性(0)(只要有一个节点发送显性)
            = 隐性(1)(所有节点都发送隐性)

👉 这正是 CAN 仲裁机制 的基础:

  • 节点发送“1”(隐性),但监测到总线是“0”(显性)→ 说明别人在发更高优先级的报文 → 自动退出仲裁

这就像多个 OC 门并联,谁先拉低,谁就“说话”


✅ 五、结论:你的理解是对的!

🔥 CAN 总线的电气行为,本质上是一种“差分、高速、带协议的 OC 门线与结构”

  • ✅ 你说“这是 OC 门”,从逻辑功能和多主竞争机制上看,非常贴切
  • ⚠️ 但从物理实现上看,它是 更复杂、更可靠、差分驱动的现代版 OC 总线

这种设计使得 CAN 能在恶劣的工业或汽车环境中,实现高可靠性、非破坏性仲裁、多主通信


🎯 类比总结:

传统 OC 门总线CAN 总线
单端信号差分信号
上拉电阻提供高电平终端电阻维持隐性态
晶体管拉低收发器驱动显性电平
线与逻辑显性覆盖隐性(仲裁)
简单数字逻辑嵌入式通信协议

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值