CAN 显性、隐性电平学习
在 CAN(Controller Area Network)总线 中,隐性电平(Recessive Level) 和 显性电平(Dominant Level) 是两种基本的总线状态,它们通过 差分电压 来表示,由 CAN 收发器 实现,用于传输逻辑“0”和“1”。
✅ 一、基本定义
| 状态 | 逻辑值 | 差分电压(VCAN_H - VCAN_L) | 含义 |
|---|---|---|---|
| 显性电平(Dominant) | 逻辑 0 | ≥ 0.9V(典型值 2V) | 总线被“拉低”,表示数据 0 或总线活动 |
| 隐性电平(Recessive) | 逻辑 1 | ≤ 0.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
✅ 显性电平是“主动驱动”的低阻态,
✅ 隐性电平是“高阻释放”的自然状态。
🧠 四、为什么这样设计?—— 优势
-
非破坏性仲裁(Arbitration):
- 所有节点同时发送,通过监测总线是否从“隐性”变为“显性”来判断是否“输掉仲裁”。
- 显性 > 隐性,高优先级报文自动胜出。
-
抗干扰能力强:
- 差分信号对共模噪声有很强的抑制能力。
-
故障安全(Fail-safe):
- 即使总线短路或断线,也能检测到故障状态。
✅ 五、总结
| 项目 | 显性电平(Dominant) | 隐性电平(Recessive) |
|---|---|---|
| 逻辑值 | 0 | 1 |
| 差分电压 | ≥ 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 总线 |
|---|---|---|
| 单端信号 | → | 差分信号 |
| 上拉电阻提供高电平 | → | 终端电阻维持隐性态 |
| 晶体管拉低 | → | 收发器驱动显性电平 |
| 线与逻辑 | → | 显性覆盖隐性(仲裁) |
| 简单数字逻辑 | → | 嵌入式通信协议 |
2万+

被折叠的 条评论
为什么被折叠?



