推挽和开漏是单片机的输出模式,属于I/O口配置的常见类型。

开漏(Open-Drain)和推挽(Push-Pull)是两种根本不同的输出电路结构,理解它们的区别是正确使用任何单片机(包括51和STM32)GPIO的关键。

一、核心比喻

  • 推挽输出 (Push-Pull):就像两个人力气很大的水手,一个专门负责从井里打水(推,输出高电平),另一个专门负责把水倒掉(挽,输出低电平)。他们能主动且有力地输出明确的“有水”(1)或“没水”(0)状态。

    • 形象:双向主动,驱动能力强。

  • 开漏输出 (Open-Drain):就像只有一个负责倒水的水手,他能很用力地把水倒掉(输出强低电平0),但他完全不会打水。当他不倒水时,输出状态是悬空的(高阻态),相当于“不表态”。这个“不表态”的状态需要外部一个上拉电阻拉到“有水”(1)的状态,才能真正形成高电平。

    • 形象:只能主动拉低,不能主动拉高,需要外部帮助。


二、电路原理与区别

为了更直观地理解,可以参考下面的简化电路模型:

如图所示,它们的根本区别在于:

  • 推挽:内部有上下两个MOS管,总是处于一个导通另一个截止的状态,因此可以独立、强效地输出高电平和低电平。

  • 开漏:内部只有下拉的MOS管(NMOS)。当这个管子导通时,输出被强力拉到低电平(GND);当它截止时,输出引脚与地断开(“开路”或“漏极开路”),相当于断开状态,其电平由外部电路决定。


三、应用场景

基于以上根本区别,它们的使用场景完全不同:

什么时候用 推挽输出

推挽输出是最常用的模式,用于绝大多数需要直接驱动负载数字信号输出的场景。

  1. 驱动LED、继电器、蜂鸣器等器件

    • 因为推挽输出高低电平均有较强的驱动能力(例如STM32引脚可输出和吸收几十mA电流),可以直接点亮LED或驱动小型继电器。

  2. 数字通信协议(单向、高速)

    • 如 SPII2SUSBSDIO 等。这些协议需要清晰的、驱动能力强的波形来保证通信速度和稳定性。推挽输出可以提供快速上升沿和下降沿。

  3. 生成PWM波

    • 驱动电机、舵机等都需要清晰的PWM波形,必须使用推挽输出。

简单总结:只要你需要引脚自己独立、明确、有力地输出高电平和低电平,就用推挽输出。

什么时候用 开漏输出

开漏输出主要用于需要 “线与”(Wire-AND)电平转换 和 双向通信 的场景。

  1. 实现“线与”功能(最经典的用途)

    • 多个开漏输出的引脚可以直接连接在一起,共用一个上拉电阻。

    • 规则:只要任何一个输出脚主动输出低电平(0),整个线路就是低电平(0)。只有当所有输出脚都释放(不输出低电平,即高阻态)时,线路才被上拉电阻变为高电平(1)。

    • 应用I2C 总线是开漏输出最典型的例子。I2C上的多个设备都可以通过拉低总线来发送信号,而不会因为一个设备输出高电平另一个输出低电平而产生短路冲突。这实现了多主机仲裁双向通信

  2. 电平转换(Voltage Level Shifting)

    • 这是开漏输出一个极其有用的特性。因为开漏引脚本身不产生高电平,高电平电压完全由外部上拉电阻所连接的电源电压(VCC)决定。

    • 例子:STM32是3.3V供电,但需要和一个工作电压为5V的设备通信。可以将STM32引脚设置为开漏模式,外部上拉电阻接到5V。当STM32输出低电平(0)时,是0V;当STM32释放总线(输出1)时,线路被上拉到5V。这样就实现了从3.3V到5V的电平转换,非常简单成本低。

  3. 驱动高于芯片电压的设备

    • 原理同上。比如用3.3V单片机驱动一个5V的继电器线圈,就可以使用开漏模式,外接5V上拉。


四、对比总结表

特性推挽输出 (Push-Pull)开漏输出 (Open-Drain)
输出能力,可主动输出高电平和低电平,只能主动输出低电平,高电平靠外部上拉
输出状态确定(永远是0或1)不确定(不输出时呈高阻态,电平由外部决定)
速度,上升沿和下降沿都较陡峭,上升沿依靠上拉电阻,电阻越大速度越慢
功耗高低电平切换时存在瞬时导通电流,功耗相对较高静态功耗低,但上升沿慢可能导致动态功耗增加
关键应用1. 驱动LED、继电器等
2. SPI, I2S等高速总线
3. 产生PWM波
1. I2COne-Wire等支持“线与”的总线
2. 电平转换
3. 驱动高于芯片电压的设备

简单决策流程:

  • 驱动普通外设(LED、数码管等)? -> 推挽输出

  • 用在I2C总线上? -> 开漏输出 (注意:I2C协议必须用开漏模式!

  • 需要和不同电压的器件通信? -> 开漏输出 + 外部上拉到目标电压

  • 不确定? -> 优先选择推挽输出,这是最通用和直接的模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919997.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919997.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919997.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java18学习笔记-Simple Web Server

408:Simple Web Server Python、Ruby、PHP、Erlang 和许多其他平台提供从命令行运行的开箱即用服务器。这种现有的替代方案表明了对此类工具的公认需求。 提供一个命令行工具来启动仅提供静态文件的最小web服务器。没有CGI或类似servlet的功能可用。该工具将用于原型设计、即…

深度解析Atlassian 团队协作套件(Jira、Confluence、Loom、Rovo)如何赋能全球分布式团队协作

无穷无尽的聊天记录、混乱不堪的文档、反馈信息分散在各个不同时区……在全球分布式团队中开展真正的高效协作,就像是一场不可能完成的任务。 为什么会这样?因为即使是最聪明的团队,也会遇到类似的障碍: 割裂的工作流&#xff1a…

理解AI 智能体:智能体架构

1. 引言 智能体架构(agent architecture)是一份蓝图,它定义了AI智能体各组件的组织方式和交互机制,使智能体能够感知环境、进行推理并采取行动。本质上,它就像是智能体的数字大脑——整合了“眼睛”(传感器…

Spring Cloud系列—SkyWalking链路追踪

上篇文章: Spring Cloud系列—Seata分布式事务解决方案TCC模式和Saga模式https://blog.csdn.net/sniper_fandc/article/details/149947829?fromshareblogdetail&sharetypeblogdetail&sharerId149947829&sharereferPC&sharesourcesniper_fandc&…

机器人领域的算法研发

研究生期间学习大模型,可投递机器人领域的算法研发、技术支持等相关岗位,以下是具体推荐: AI算法工程师(大模型方向-机器人应用):主要负责大模型开发与优化,如模型预训练、调优及训练效率提升等…

深度学习入门:神经网络

文章目录一、深度学习基础认知二、神经网络核心构造解析2.1 神经元的基本原理2.2 感知器:最简单的神经网络2.3 多层感知器:引入隐藏层解决非线性问题2.3.1 多层感知器的结构特点2.3.2 偏置节点的作用2.3.3 多层感知器的计算过程三、神经网络训练核心方法…

mysql的索引有哪些?

1. 主键索引(PRIMARY KEY)主键索引通常在创建表时定义,确保字段唯一且非空:-- 建表时直接定义主键 CREATE TABLE users (id INT NOT NULL,name VARCHAR(50),PRIMARY KEY (id) -- 单字段主键 );-- 复合主键(多字段组合…

【计算机视觉与深度学习实战】08基于DCT、DFT和DWT的图像变换处理系统设计与实现(有完整代码python3.13可直接粘贴使用)

1. 引言 数字图像处理作为计算机视觉和信号处理领域的重要分支,在过去几十年中得到了快速发展。图像变换技术作为数字图像处理的核心技术之一,为图像压缩、特征提取、去噪和增强等应用提供了强有力的数学工具。离散余弦变换(Discrete Cosine Transform, DCT)、离散傅里叶变…

使用Python实现DLT645-2007智能电表协议

文章目录🌴通讯支持🌴 功能完成情况服务端架构设计一、核心模块划分二、数据层定义三、协议解析层四、通信业务层(以DLT645服务端为例)五、通信层(以TCP为例)使用例子🌴通讯支持 功能状态TCP客…

未来已来:基于IPv6单栈隔离架构的安全互联实践报告

未来已来:基于IPv6单栈隔离架构的安全互联实践报告 报告摘要 随着IPv4地址资源彻底枯竭,全球网络基础设施正加速向IPv6单栈(IPv6-Only)演进。传统“IPv4为主、IPv6为辅”的双栈模式已无法满足数字化转型对海量地址、端到端连接与原…

Ubuntu24.04 安装 Zabbix

Ubuntu24.04 安装 Zabbix 环境: 软件版本Ubuntu24.04.3Nginx1.24.0MySQL8.4.6PHP8.3.6phpMyAdmin5.2.2Zabbix7.4.1 LNMP 1. 更新本地软件包索引并升级已安装软件 更新可用软件包列表 把已安装的软件升级到最新版 安装常用工具 sudo apt update && sud…

【动手学深度学习】6.2. 图像卷积

目录6.2. 图像卷积1)互相关运算2)卷积层3)图像中目标的边缘检测4)学习卷积核5)互相关与卷积6)特征映射和感受野7)小结. 6.2. 图像卷积 卷积神经网络的设计是用于探索图像数据,本节…

游戏引擎中的Billboard技术

一.视觉公告板为解决场景中Mesh网格面数过多问题,使用2D平面Mesh替换为3D平面Mesh的技术即为Billboard技术.常用于场景中植被,树叶,粒子系统等对面数有要求的场景.二.Billboard着色器实现着色器输入参数:摄像机坐标,网格坐标,摄像机观察方向着色器输出:实际2D平面随视角不变

vue-admin-template权限管理

在基于 vue-admin-template 实现权限管理时,通常需要结合角色权限模型和动态路由机制,以满足不同用户角色对页面访问权限的控制需求。分为路由页面权限和按钮权限:下面是具体实现思路的思维导图和具体代码流程:0.实现逻辑思维导图…

微信小程序,事件总线(Event Bus) 实现

1、util.js文件/*** 事件总线*/ function createEventBus() {// 私有事件存储对象,通过闭包保持私有性const events {};return {/*** 监听事件,只执行一次* param {string} eventName - 事件名称* param {Function} callback - 回调函数*/once(eventNam…

OpenCV结构光三维重建类cv::structured_light::GrayCodePattern

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::structured_light::GrayCodePattern 是 OpenCV 库中用于结构光三维重建 的一个类,属于 OpenCV 的 structured_light 模块。 它用于…

变频器实习DAY35 引脚电平测试 退耦电阻

目录变频器实习DAY35一、工作内容1.1 硬性平台RO7测试二、学习内容2.1 退耦电阻核心原理:2大特性抑制干扰四大关键作用选型:4个核心参数典型应用场景四大常见误区附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^)变频器实习DAY35 一、工作内容 1.1 硬性…

C++标准库算法:从零基础到精通

算法库的核心理念与设计哲学 C标准库算法的设计遵循着一个令人称道的哲学:算法与容器的分离。这种设计并非偶然,而是经过深思熟虑的结果。传统的面向对象设计可能会将排序功能绑定到特定的容器类中,但C标准库却选择了一条更加优雅的道路——…

为什么存入数据库的中文会变成乱码

从产生、传输、处理到最终存储的整个生命周期中采用统一且正确的字符集编码。具体原因纷繁复杂,主要归结为:客户端操作系统或应用与数据库服务端字符集编码不一致、Web应用服务器到数据库驱动的连接层编码配置缺失或错误、数据库本身及其表、字段各层级的…

13种常见机器学习算法面试总结(含问题与优质回答)

目录 1. K近邻(K-NN) 2. 线性回归(一元/多元) 3. 逻辑回归 4. 决策树 5. 集成学习之随机森林 6. 贝叶斯(朴素/高斯) 7. SVM(支持向量机) 8. K-means聚类 9. DBSCAN 10. TF-…