GPIO模式详解:推挽/开漏/浮空/上拉/下拉/施密特(迟滞)输入

GPIO(General Purpose Input Output)可用于执行数字输入或输出功能。典型的应用包括从/向模拟或数字传感器/设备读写数值、驱动LED、为I2C通信驱动时钟、生成外部组件的触发、发出中断等。

文章目录

  • 1 GPIO简介
  • 2 输出模式
    • 2.1 推挽输出
    • 2.2 开漏输出
  • 3 输入模式
    • 3.1 高阻态(浮空)、上拉、下拉
    • 3.2 施密特触发输入

1 GPIO简介

一个GPIO引脚主要有两个缓冲区,即输入和输出。

在这里插入图片描述

输入和输出由使能引脚ENABLE控制:

在这里插入图片描述

每个输入/输出缓冲区都有一个PMOS和NMOS晶体管以及一个非门。这两个晶体管的栅极和漏极连接在一起,如下图所示:

在这里插入图片描述

2 输出模式

如果将逻辑高电平输出到引脚,则PMOS打开,NMOS关闭,从而将VCC连接到输出引脚。这个阶段被称为推相位,因为它类似于推动电流。如果输出逻辑低电平到引脚,则NMOS打开,PMOS关闭,从而将输出引脚连接到地,由于它看起来像是在拉电流,因此被称为拉相位

在这里插入图片描述

2.1 推挽输出

推挽模式是GPIO输出模式的默认状态。引脚可以使用PMOS晶体管或NMOS晶体管将信号“推”高或者“拉”低。

在这里插入图片描述

流入缓冲区地端的电流被称为灌电流(Current Sinking),相反地,从缓冲区产生的电流被称为拉电流(Current Sourcing)。拉电流始终通过PNP或PMOS晶体管完成,而灌电流通过NPN或NMOS晶体管完成。

由于PMOS(PNP)晶体管通常具有较高的电流驱动能力,即拉电流时所需的电流较大。因此一个GPIO引脚就可以驱动多个GPIO引脚。

在这里插入图片描述

2.2 开漏输出

在这种配置中,没有PMOS晶体管,而NMOS晶体管的漏极保持在浮空状态。因此这种配置被称为开漏。

在这里插入图片描述

当输出逻辑低电平时,NMOS将打开并接地。输出高电平时,NMOS不会打开,引脚处于浮动状态。

在这里插入图片描述

换句话说,这种模式仅支持灌电流。为了避免这种浮动状态,我们可以在NMOS的漏极接一个上拉电阻。

在这里插入图片描述

何时使用推挽和开漏?

  • 推挽用于不需要在同一组引脚上同时传输和接收数据的协议,如UART、SPI
  • 开漏可用于执行双向通信的引脚,如I2C协议

3 输入模式

如果引脚处于逻辑高电平输入状态,那么PMOS晶体管将打开,NMOS晶体管关闭,从而将Vcc连接到GPIO。 反之GPIO连接到地。

在这里插入图片描述

3.1 高阻态(浮空)、上拉、下拉

高阻态就是引脚既没有上拉也没有下拉,而是保持漂浮状态。在没有外部驱动的情况下,该状态是不确定的。

默认情况下,在上电后GPIO引脚处于高阻态输入模式。浮动引脚极易受到噪声干扰,可能会导致两个晶体管导通并提供直接路径从VCC到GND的漏电流。我们绝对不应将引脚保持在浮动状态,因为漏电流将导致高功耗,在最坏的情况下还可能导致芯片复位。 为了避免这种情况,可以配置上拉电阻或下拉电阻。

在这里插入图片描述

在GPIO配置为上拉时,下面的开关打开,则PMOS导通;下面的开关闭合,则NMOS导通。

在这里插入图片描述

反之,GPIO配置为下拉时,上面的开关闭合,则PMOS导通;上面的开关打开,则NMOS导通。

在这里插入图片描述

3.2 施密特触发输入

这种输入类型与我们之前讨论的常规输入缓冲区不同,它连接到一个施密特触发器。在输入信号接近阈值时,由于噪声或其他不稳定性因素,输入信号可能会在上升和下降阈值之间摆动。这可能导致触发器在阈值之间多次切换,产生不确定的输出状态。所以为了确保可靠性,需要添加上拉或下拉电阻来明确信号的状态

在这里插入图片描述

什么是施密特触发器?

施密特触发器是一种电压比较器,只有在输入电压超过上阈值时才会启动,一旦启动,它只有在输入电压低于下阈值时才会关闭。施密特触发器表现出的这种特性被称为滞回(hysteresis)。

下面为普通输入缓冲区和带有施密特触发器的输入缓冲区在处理嘈杂信号时的输出比较:

在这里插入图片描述

可以看出,普通输入缓冲区的输出随噪声而波动。而施密特触发器抑制了很多噪声并提供了稳定的输出。因此,在嘈杂的环境中,使用施密特触发器输入是很有用的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2023-22515 Confluence未授权漏洞分析

0x01 漏洞描述 Confluence 是由 Atlassian 开发的企业级协作软件。2023年10月,Atlassian 官方披露 CVE-2023-22515 Atlassian Confluence Data Center & Server 权限提升漏洞。攻击者可构造恶意请求创建管理员,从而登录系统,造成敏感信息…

K8s实战RestartPoliy策略

一、默认策略为Always cmd.yaml apiVersion: v1 kind: Pod metadata:name: myapp-pod labels:app: myapp spec: containers:- name: myapp-container image: busyboxcommand: [sh, -c, echo OK!&& sleep 60]首先我们根据这个yaml创建一个测试的pod 执行命令 kubec…

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…

【计算机网络笔记】路由算法之层次路由

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

路由的控制与转发原理

场景1:路由器收到数据包后,会根据数据包的目标IP地址,计算出目标网段,再确定终端设备的具体位置。这个过程中,还需要计算出接口,或数据包下一跳的地址。最终会生成一条路由,即路径,存…

2023亚太杯数学建模B题思路分析 - 玻璃温室中的微气候法规

1 赛题 问题B 玻璃温室中的微气候法规 温室作物的产量受到各种气候因素的影响,包括温度、湿度和风速[1]。其中,适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气候因素 , 温室的设计通常采用带有温室风扇的通风系统&#xf…

postgreSQL如何快速查询大表数据量

文章目录 场景方案结果 场景 我有一个非常大的表,估计几百万或者几千万。 我开始使用了 select count(*) from my_table_javapub 方式,查询非常慢。 如何解决??? 方案 如果你需要更快地获取表中的行数&#xff0c…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析,这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

生成式AI与大语言模型,东软已经准备就绪

伴随着ChatGPT的火爆全球,数以百计的大语言模型也争先恐后地加入了这一战局,掀起了一场轰轰烈烈的“百模大战”。毋庸置疑的是,继方兴未艾的人工智能普及大潮之后,生成式AI与大语言模型正在全球开启新一轮生产力革新的科技浪潮。 …

『亚马逊云科技产品测评』活动征文|通过Lightsail搭建个人笔记

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言实践知识储备Lightsail介绍Leanote介绍实践…

一套开源、强大且美观的WPF UI控件库 - HandyControl

前言 今天给大家推荐一套开源、强大且美观的WPF UI控件库:HandyControl。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创…

ASO优化之关于应用类别的选择

用户可以通过应用商店内的类别,来发现他们想要的新应用。接下来我们来一起了解如何为应用来选择最符合最准确的类别。 1、应用的类别所显示的区域? 我们可以为APP选择一个主要类别和一个次要类别,所选择的主要类别对于该应用在应用商店曝光度…

Linux 局域网传输工具LANDrop安装

Linux 局域网传输工具LANDrop安装 🥙下载🌭解压🥪运行 🥙下载 官网下载 或网盘 🌭解压 使用以下命令解压获得squashfs-root文件夹 ./LANDrop-latest-linux.AppImage --appimage-extract🥪运行 进入squ…

Selenium切换窗口、框架和弹出框window、ifame、alert

一、切换窗口 #获取打开的多个窗口句柄 windows driver.window_handles #切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) #最大化浏览器 driver.maximize_window() #刷新当前页面 driver.refresh() 二、切换框架frame 如存在以下网页&#xff1a; <htm…

Java面试-框架篇-Mybatis

Java面试-框架篇-Mybatis MyBatis执行流程延迟加载使用及原理一, 二级缓存来源 MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构造会话工厂SqlSessionFactory会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)操作数据库的接口, Ex…

C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址&#xff1a;https://github.com/Parskatt/DeDoDe DeDoDe &#x1f3b6; Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…

RabbitMQ 的网页界面操作说明

启动 上面给用户添加了角色和权限&#xff0c; 我们就可以登录了 先手动创建两个队列&#xff0c;然后再把这两个队列和交换机绑定&#xff0c;就可以发布消息 回到队列中看看有什么变化 队列中显示绑定了交换机 再看一下队列中发生的变化 可以看到队列中收到了信息

【鸿蒙应用ArkTS开发系列】- 云开发入门实战一使用鸿蒙登录组件实现客户端登录

目录 概述使用云端一体化开发模板创建项目工程创建登录入口页面集成登录SDK组件依赖登录组件SDK使用登录组件SDK 开启“手机号码”和“邮箱地址”认证方式 概述 通过本次课程&#xff0c;我们将学习怎么使用云端一体化开发模板来创建云开发工程&#xff0c;以及如何使用鸿蒙登…

Bean基本注解开发

Commponent 使用Component注解代替<bean>标签 <!--注解扫描:扫描指定的基本包及其子包下的类&#xff0c;识别使用了Component注解的文件--><context:component-scan base-package"org.xfy"></context:component-scan> package org.xfy.Dao.…

python二叉树链树_树的链式存储结构

二叉链树是一种树状数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。每个节点包含一个数据元素和指向其左右子节点的指针。二叉链树可以是空树&#xff0c;也可以是具有以下特点的非空树&#xff1a; 1. 每个节点最多有两个子节点。…