开漏和推挽模式的区别
在GPIO配置中,开漏输出(Open-Drain)和推挽输出(Push-Pull)的对比如下:
1. 电路结构对比
推挽输出(Push-Pull):包含两个MOS管(PMOS和NMOS),形成互补对称电路。
VDD|
PMOS (上拉)|
Output ←─┬─→ 外部电路|
NMOS (下拉)|
GND
开漏输出(Open-Drain):仅有一个NMOS管(下拉部分),无内置上拉。
(无内部上拉)|
NMOS (下拉)|
Output ←─┬─→ 外部电路 + 上拉电阻 → VDD|
GND
2. 输出特性对比
特性 | 推挽输出 | 开漏输出 |
---|---|---|
高电平 | 由PMOS主动提供(强驱动) | 依赖外部上拉电阻(驱动能力弱于推挽) |
低电平 | 由NMOS主动提供(强驱动) | 由NMOS主动提供(强驱动) |
输出 | 固定高/低电平,无高阻态 | 低电平或高阻态(需外部上拉) |
兼容性 | 仅支持单一电源电压(如3.3V) | 支持多电压系统(如3.3V与5V设备通信) |
内部 | PMOS+NMOS互补驱动 | 仅NMOS,无上拉 |
驱动 | 强(高低电平均主动驱动) | 低电平强,高电平依赖外部 |
总线冲突处理 | 易短路,需硬件协调(设计避免) | 天然支持“线与”逻辑, 无短路风险(仅单管) |
功耗 | 静态电流低,切换时瞬态电流较高 | 高电平时依赖上拉电阻电流 |
适用 场景 |
|
|
3. 关键注意事项
开漏模式上拉电阻选择:根据总线电容和速度需求。标准模式:4.7kΩ、快速模式:1kΩ。阻值过小 → 电流大、功耗高;阻值过大 → 上升沿变缓。
高阻态的意义:开漏输出在关闭时呈现高阻态,允许其他设备驱动同一线路。
Q:为什么开漏输出高电平比推挽慢?
A:开漏的高电平靠上拉电阻对寄生电容充电,上升时间由RC常数决定(τ=R×C)。推挽由PMOS主动拉高,驱动能力更强。
Q:能否用推挽模式实现I2C通信?
A:绝对不可!多设备会因同时输出高低电平而短路。I2C必须使用开漏模式:
多主机仲裁:多个设备可同时驱动总线,开漏避免短路。
电平兼容:上拉电阻可接不同电压(如3.3V或5V)。
电路连接:
主机1 (SDA开漏) ────┬───→ 上拉电阻 → VDD (3.3V/5V) 主机2 (SDA开漏) ────┘