当前位置: 首页 > news >正文

GPIO推挽和开漏的名称由来和本质含义

看你的电路图,我来标注各个端子:

         VDD↑S (源极)P-MOSD (漏极)├────→ 输出引脚D (漏极)N-MOSS (源极)↓VSS

详细说明:

P-MOS管:

  • 源极(S):连接到 VDD(电源正极)
  • 漏极(D):连接到输出引脚
  • 栅极(G):连接到输出控制信号

N-MOS管:

  • 源极(S):连接到 VSS(地)
  • 漏极(D):连接到输出引脚
  • 栅极(G):连接到输出控制信号

关键点:两个MOS管的漏极都连到输出引脚

        VDD│┌────┴────┐│  P-MOS  ││    S    │ 源极接VDD│    ↓    ││    D────┼───→ 漏极接输出引脚└─────────┘输出引脚┌─────────┐│    D────┼───→ 漏极接输出引脚│    ↑    ││    S    │ 源极接VSS│  N-MOS  │└────┬────┘│VSS

记忆技巧

如何记住源极和漏极的位置:

  • 源极(Source):电流的"源头"
    • P-MOS的源极接VDD(高电位)
    • N-MOS的源极接VSS(低电位)
  • 漏极(Drain):电流"流走"的地方
    • 两种MOS的漏极都接到输出引脚

简单记法:电源端是源极,输出端是漏极


1. 推挽输出(Push-Pull)- 名称解释

"推挽"这个名字来源于它的工作方式:

"推"(Push) → P-MOS管把引脚往上"推"到高电平(VDD)
"挽"(Pull) → N-MOS管把引脚往下"拉"到低电平(VSS)

形象比喻:
就像两个人推拉一扇门:

  • 一个人负责"推门开"(P-MOS推高)
  • 一个人负责"拉门关"(N-MOS拉低)
  • 两人配合,门可以完全打开或完全关闭

电路特点:

     VDD↑P-MOS (上管:负责"推")|──┼── 输出引脚|N-MOS (下管:负责"挽/拉")↓VSS

2. 开漏输出(Open-Drain)- 名称解释

"开漏"这个名字的含义:

  • “开”(Open):断开、开路的意思
  • “漏”(Drain):指MOS管的漏极
开漏 = 漏极开路 = Drain端悬空(不连接到电源)

电路特点:

     VDD↑P-MOS (不使用,始终关闭)X──┼── 输出引脚(漏极直接连到引脚)|N-MOS (只有下管工作)↓VSS

实际应用中的区别

推挽输出的应用场景:

// 1. 驱动LED
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);   // LED亮
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); // LED灭// 2. 产生方波信号
for(;;) {HAL_GPIO_TogglePin(SIGNAL_PORT, SIGNAL_PIN);HAL_Delay(1);
}

优点:

  • ✅ 驱动能力强
  • ✅ 输出速度快
  • ✅ 不需要外部上拉电阻

缺点:

  • ❌ 不能实现"线与"功能
  • ❌ 不适合多个设备共享总线

开漏输出的应用场景:

// 1. I2C总线(多主机可以共享)
// SDA和SCL都配置为开漏
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;  // 或使用外部上拉// 2. 中断信号线(多个设备可以拉低同一根线)
// 任何一个设备都可以拉低INT线

优点:

  • ✅ 可以实现"线与"逻辑
  • ✅ 支持电平转换(如3.3V MCU连接5V设备)
  • ✅ 多个开漏输出可以连在一起

缺点:

  • ❌ 需要上拉电阻
  • ❌ 上升沿速度慢(通过电阻充电)

通俗理解

推挽 = 双向主动控制

想象一个电灯开关:
- 开关向上推 → 灯亮(主动供电)
- 开关向下拉 → 灯灭(主动断电)
- 开关有完全的控制权

开漏 = 单向被动控制

想象一个泄洪闸门:
- 闸门打开 → 水流走(拉低)
- 闸门关闭 → 水位靠其他因素决定(悬空)
- 闸门只能放水,不能主动加水

选择建议

应用场景选择原因
LED控制推挽需要强驱动能力
普通IO控制推挽简单可靠
I2C/SMBus开漏协议要求,支持多主机
中断线开漏多个设备共享
电平转换开漏可适配不同电压
高速信号推挽边沿速度快

这样理解是否更清楚了?推挽就是"能推能拉",开漏就是"只能拉不能推"。

http://www.xdnf.cn/news/1377559.html

相关文章:

  • FactoryBean接口作用
  • 使用Stone 3D快速制作第一人称视角在线小游戏
  • 【PyTorch】基于YOLO的多目标检测项目(二)
  • 基于Cursor AI IDE的Vue3留言板系统实战:从零搭建到智能优化全流程
  • 《金融对账系统雪崩隐患的深度复盘与架构重生》
  • 从CTFshow-pwn入门-pwn40理解64位栈溢出不都需要堆栈平衡
  • 致远OA新闻公告讨论调查信息查询SQL
  • Linux操作系统——TCP服务端并发模型
  • 域名、ip、DSN、URL
  • 虚拟机逃逸攻防演练
  • 装饰器模式(C++python)
  • 如何提升素材检索效率?语义搜索在 DAM 中的应用效果全解
  • 广东省省考备考(第八十八天8.27)——判断推理(听课后强化训练)
  • 基于NXP iMXRT600音频算法开发方法
  • 【ros-humble】【虚拟机】网络配置
  • 【leetcode】105. 从前序与中序遍历序列构造二叉树
  • 机器视觉学习-day05-图片颜色识别及颜色替换
  • 指针 (六):sizeof和strlen细节强化之“做题篇”
  • 深度学习:常用的损失函数的使用
  • Python随机选择完全指南:从基础到高级工程实践
  • 数据库:缓冲池和磁盘I/O
  • FPGA入门学习路径
  • 【Python 提高】GUI 界面 Tkinter 库布局管理器 Pack 方法开发指南
  • 树的常见算法及Java实现
  • 【yocto】Yocto Project 核心:深入了解.inc文件
  • Java循环结构全解析
  • android 嵌套webview 全屏展示 页面延伸到状态栏且不被底部导航栏遮挡
  • 高并发内存池(11)-PageCache获取Span(下)
  • 【C++标准库】<ios>详解基于流的 I/O
  • 腾讯云 CVM 上的 SpringBoot 应用避免非法访问