开漏输出:只能拉低,不能拉高,高电平靠“外部”帮忙

你有没有想过一个问题:GPIO输出高电平,不就是引脚输出3.3V吗?**开漏输出做不到。**它内部只有一个接地的MOS管。

  • 输出低电平:MOS管导通,引脚拉到地(0V)
  • 输出高电平 :MOS管关断,引脚什么都不接------悬空

它不会主动输出高电平,只会"放手"。 要让引脚变成高电平,必须在外面接一个上拉电阻

那个"内部结构"的真相(对应教程3.4节), 推挽输出内部有两个MOS管:一个接VCC,一个接地。开漏输出内部只有一个接地的MOS管。输出高电平时,MOS管关断,引脚与内部电路断开 。引脚上的电压完全由外部电路 决定。它只能拉低,不能推高。

**那个"上拉电阻"的作用(对应教程3.6节),**接一个电阻从引脚到VCC(上拉电阻)。

  • 输出低电平:MOS管导通,引脚0V(电阻电流流过MOS管)
  • 输出高电平:MOS管关断,引脚被电阻拉到VCC

上拉电阻,是开漏输出的"拐杖"。 没有它,引脚浮空------电平不确定。

那个"电平转换"的妙用(对应教程3.4节), 3.3V的单片机和5V的芯片通信:开漏引脚接上拉电阻到5V

  • 单片机输出低电平 → 引脚0V → 5V芯片读到低电平
  • 单片机输出高电平 → 引脚被电阻拉到5V → 5V芯片读到高电平

**3.3V单片机,直接驱动5V芯片。**不需要电平转换芯片,一个电阻就够了。

那个"线与"的逻辑(对应教程3.6节), 多个开漏输出可以接在同一条线上。任何一个设备输出低电平(拉低),整条线就是低电平。所有设备都"放手",线才被上拉电阻拉高。谁都能拉低,谁都不推高------避免短路。 这就是I2C总线使用开漏输出的原因。那个"应用"的场景

  • I2C:SCL和SDA都是开漏
  • 1-Wire:单总线,开漏
  • 电平转换:3.3V ↔ 5V
  • 多设备共享总线:多个输出接一起

开漏输出不强,但"合群"。

这个故事的启示, 为什么开漏输出不能输出高电平?因为它内部没有连接VCC的MOS管 。它只能拉低,只能"放手"。"弱"是它的特点,不是缺陷。 开漏的哲学:不争不抢,才能协作。

写在最后, 下次你需要连接不同电压的芯片,或者让多个设备共享总线。想想开漏输出。上拉电阻 + 开漏 = 电平转换 + 线与。那个"不会输出高电平"的缺陷,恰恰是它强大的地方。


(本文灵感源于于振南《新概念ARM32单片机》教程第3.4节"GPIO开漏模式与电平匹配",感谢作者将开漏输出的物理本质讲得如此通透。)


如果您觉得这个故事对您有启发,欢迎点赞、转发,让更多工程师看到这个藏在"只能拉低"背后的开漏智慧。

相关推荐
youcans_2 分钟前
从零搭建 STM32 VSCode 开发环境
vscode·stm32·单片机·嵌入式硬件
ye1501277745535 分钟前
220V降5V0.3A电源芯片WT5104
单片机·嵌入式硬件·其他·硬件工程
第二层皮-合肥37 分钟前
【数据采集专栏】输入阻抗
单片机·嵌入式硬件
風清掦38 分钟前
【STM32学习笔记-15】FLASH 闪存(Claude)
笔记·stm32·单片机·嵌入式硬件·学习
Molesidy2 小时前
【Embedded Development】【Zephyr】【Windows】基于STM32的Zephyr移植
stm32·led·zephyr
易水寒陈2 小时前
stm32使用Jlink进行GDB脚本调试
stm32·单片机·嵌入式硬件
weixin_452077642 小时前
LVGL移植到STM32教程(附源码) ----兼容正点原子精英板
stm32·单片机·嵌入式硬件
Zyed3 小时前
[STM32]Day13修改主频、睡眠模式+串口发送、停止模式+对射式红外传感器计次、待机模式+实时时钟
stm32·单片机·嵌入式硬件
硬件工程师宝典3 小时前
I2C从入门到精通之一:I2C的历史起源和综合简介
服务器·嵌入式硬件·硬件架构·i2c
金色光环4 小时前
DSP28335 SPI通信实验:从零到实战
单片机·嵌入式硬件·物联网