理解 GPIO 的推挽与开漏

在日常的嵌入式开发过程当中,GPIO可以说是接触最多的外设了。小到点亮一个LED灯,大到模拟总线通讯,都必不可少地需要用到GPIO资源。而对于GPIO的两大输出模式 ——推挽输出开漏输出,你是否真正理解了呢?

首先我们看到STM32F4xx参考手册中的IO端口基本结构:

图片

其包含了输入驱动器和输出驱动器接口,和我们今天的主体相关的是右下角的输出驱动器结构:

图片

可以看到这个输出驱动器可以配置为推挽、开漏或禁止。而实现推挽和开漏的关键部分就是途中的两个MOS管:P-MOS和N-MOS。

推挽输出模式

推挽(Push-Pull)实际上指的是两个不同的电流方向,也有人更形象地称之为推拉模式。推指的是电路将电流“推”入负载,拉指的是电路将电流从负载“拉”回。

在推挽输出模式下,P-MOS和N-MOS都正常工作,当然在电路实际的工作中,每一时刻只会有一个管子导通。

输出高电平时,P-MOS会导通,N-MOS截止,此时输出端体现出来的就是高电平:

图片

同理,在输出低电平时,P-MOS截止,N-MOS导通:

图片

也正是因为同一时间只有一个管导通,因此在推挽输出模式下导通损耗小,效率高。同时从上图中可以看到当输出激活时负载是直接连接到电源和地的,因此能够提供大量电流,提高了电路的负载能力。

但是推挽模式也有一个缺点,如果把两个推挽结构相连,一个输出高电平,另一个输出低电平,反映到电路上则是高电平驱动的上MOS导通,下MOS关闭,低电平驱动的上MOS关闭,下MOS导通,此时电流将从第一个结构的VDD通过上MOS再经过第二个结构的下MOS直接流向GND,整个通路上的电阻非常小,从而引起短路。因此推挽模式下无法实现“线与”逻辑。

线与:多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。

开漏输出模式

开漏就是指MOS管的漏极开路,也就是漏极什么也不接,直接作为输出端口。

在这种模式下,当输出控制为高电平时,N-MOS截止,此时由于漏极是开路的,因此无法直接输出高电平,也是其主要特性,一般称为高电平没有驱动能力,此时要想获得高电平必须要外接上拉电阻,如下图:

图片

而控制端输出低电平时,N-MOS打开,输出端口将直接与地相连,因此其输出低电平的驱动能力是很强的,如下图所示:

图片

虽然开漏模式无法独立输出高电平,但也正是因为这一特性,使其可以非常方便地调节输出电平(完全由上拉电阻连接的电源电平决定)。因此在一些需要做电平转换的地方,开漏模式是有很大的优势的。

同时上面提到的推挽模式无法实现的“线与”逻辑在开漏模式下也能够实现。在高电平与低电平相连的情况下,由于上拉电阻的存在,不会出现推挽模式下的短路问题。

当然,开漏模式也有其缺点。其上升沿是通过上拉电阻来对负载充电,因此如果电阻小时延时就小,但功耗会变大,反之延时大功耗小。

总结

最后由一个表格来总结推挽输出与开漏输出的特性与优缺点:

图片

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

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

相关文章

CPI降温仍猛砍降息预期!美联储继续按兵不动,预计今年仅降息一次

要点: 美联储继续保持利率不变,符合市场预期。 决议声明不再说降通胀缺乏进一步进展,改称取得适度的进... 要点: 美联储继续保持利率不变,符合市场预期。 决议声明不再说降通胀缺乏进一步进展,改称取得适度…

linux开发过程

Linux开发过程可以大致分为以下几个阶段: 一、需求分析阶段 与客户或利益相关者合作,明确产品的需求和目标。确定产品的功能、性能要求、用户界面设计等。 二、架构设计阶段 制定产品的整体架构设计,确定各个模块的功能和接口。包括硬件架…

【中间件】Pulsar集群安装

目录 一、Pulsar介绍 1.1 Pulsar基本介绍 1.2 Pulsar架构 Producer & Consumer Apache Zookeeper Pulsar Brokers Apache Bookkeeper 二、Zookeeper集群安装 三、Pulsar集群安装 3.1 bookie与broker配置 3.1.1 修改bookie配置文件 3.1.2 修改broker配置文件 3…

渗透测试工具NMAP

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全…

java.lang.reflect.Type是什么

Java 中的 java.lang.reflect.Type 在 Java 中,java.lang.reflect.Type 是一个接口,代表所有类型的通用超类型。它包括原始类型、参数化类型、数组类型、类型变量和基本类型。在反射机制中,Type 接口用于提供对 Java 类型系统的抽象表示&…

Vue3 自定义渲染器 API createRenderer()(七)

createRenderer() createRenderer() 是一个高级 API,它允许你创建自定义的渲染器。这个 API 主要是为了支持 Vue 的非 DOM 渲染目标,如 WebGL、Canvas、Web Workers、自定义 DOM 实现等。在实际使用中,自定义渲染器是一个复杂的任务&#xf…

debian10 arm芯片安装.net6

前往下载dotnet sdk https://download.visualstudio.microsoft.com/download/pr/46083246-216c-4d0c-905f-67f335466a23/505f9e26b85d7dd29d79a7e11da37926/dotnet-sdk-6.0.423-linux-arm.tar.gz将文件放在root目录下,如果其他自定义目录也可以下载完成后&#xff0…

pytest中一个场景测试的demo

注意点1: allure.severity 是一个装饰器,用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一,表示这个测试用例极为重要。allure.severity_level.BLOCKER:阻塞级别的问题&#xff0c…

【Python入门与进阶】Python拼接字符串的常用操作

在Python中,有多种方法来拼接字符串。以下是一些常用的字符串拼接操作: 1. 使用 操作符 这是最简单直接的字符串拼接方法。 str1 "Hello" str2 "World" result str1 " " str2 print(result) # 输出: Hello Worl…

Flutter-使用MethodChannel 实现与iOS交互

前言 使用 MethodChannel 在 Flutter 与原生 Android 和 iOS 之间进行通信,可以让你在 Flutter 应用中调用设备的原生功能。 基础概念 MethodChannel:Flutter 提供的通信机制,允许消息以方法调用的形式在 Flutter 与原生代码之间传递。方法…

【产品经理】ERP对接电商平台

电商ERP对接上游平台,会需要经历几个步骤环节,包括店铺设置等。 电商ERP对接上游电商平台,其主要设置为店铺设置、商品同步、库存同步,本次讲解下店铺设置应该如何进行设置,以及在设置过程中的可能出现的踩坑事项。 …

深入浅出: XML HttpRequest 入门指南

XML HttpRequest(XHR) 技术是构建动态、响应式网站的关键。这项技术使得网页能在不重新加载整个页面的情况下与服务器进行数据交互,极大地优化了用户的交互体验。 定义 XML HttpRequest XML HttpRequest 是一种浏览器与服务器进行数据交换的…

互联网和万维网都有哪些区别?

互联网(Internet)与万维网(World Wide Web,简称WWW或Web)是两个相互关联但概念上有所区别的技术框架: 1. 定义与范围: • 互联网 是一个全球性的计算机网络系统,它将世界各地的计算…

windows cmd 使用linux命令

下载安装msys2 path中添加: C:\msys64\mingw64\bin C:\msys64\usr\bin

CSS之块浮动

在盒子模型的基础上就可以对网页进行设计 不知道盒子模型的可以看前面关于盒子模型的内容 而普通的网页设计具有一定的原始规律,这个原始规律就是文档流 文档流 标签在网页二维平面内默认的一种排序方式,块级标签不管怎么设置都会占一行,而同一行不能放置两个块级标签 行级…

vue3的websocket连接

直接上代码 分方法代码-util.ts中 let websock: any null; let global_callback: any null; //创建多个WebSocket实例,没想到怎么优化,先这么写 function createWebSocket(callback: any, url: any) {// || websock.readyState WebSocket.CLOSEDif …

【自我学习】圣多纳释放莱斯特

一、莱斯特莱文森 莱斯特莱文森(Lester Levenson)的人生中有几件事特别引人注目和令人钦佩,这些事情不仅体现了他的个人成就,也展示了他对心理健康和情绪释放领域的重大贡献。 1. 健康危机的转变 莱斯特莱文森在42岁时遭遇了严…

好用的Web数据库管理工具推荐(ChatGPT的推荐)

在现代数据管理和开发中,Web数据库管理工具变得越来越重要。这些工具不仅提供了直观的用户界面,还支持跨平台操作,方便用户在任何地方进行数据库管理。 目录 1. SQLynx 2. phpMyAdmin 3. Adminer 4. DBeaver 5 结论 以下是几款推荐的Web…

臻奶惠的行业优势与市场竞争力解析

臻奶惠在智能售货机领域深耕多年,其加盟合作模式在行业中展现出了多方面的优势。以下是对该公司智能售货机加盟优势的深入分析: 技术先进性: 臻奶惠智能售货机以高度自动化的运营模式著称,特别是在自动补货、远程监控和数据分析…

史上最全,呕心沥血总结oracle推进SCN方法(六)

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。前面介…