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)。

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

在这里插入图片描述

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

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

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

相关文章

推荐一款适合做智慧旅游的前端模板

目录 前言 一、功能介绍 二、前端技术介绍 三、功能及界面设计介绍 1、数据概览 2、车辆监控 3、地图界面 4、其它功能 四、扩展说明 总结 前言 智慧旅游是一种全新的旅游业务模式,它充分利用先进的信息技术,提升旅游体验,优化旅游管…

【Axure高保真原型】树形表格

今天和大家分享树形表格的原型模板,点击树的箭头可以打开或者收起子节点,点击表格内容,可以选中该行内容实现高亮变色效果,树形表格是通过中继器制作的,使用简单,只需要按要求填写中继器表格即可&#xff0…

2023亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法?2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…

安防监控视频融合平台EasyCVR定制化页面开发

安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索…

ConditionObject介绍(二)

1. Condition的signal方法分析 分为了几个部分: ● 确保执行signal方法的是持有锁的线程 ● 脱离Condition的队列 ● 将Node状态从-2改为0 ● 将Node添加到AQS队列 ● 为了避免当前Node无法在AQS队列正常唤醒做了一些判断和操作 // 线程挂起后,可以基于…

Centos设置nginx开机自启动设置

Centos设置nginx开机自启动设置 要设置CentOS中的Nginx开机自启动,可以按照以下步骤进行操作: 首先,登录到CentOS服务器上,并以root用户或具有sudo权限的用户身份执行以下命令来安装Nginx(如果尚未安装)&a…

字符集合!!!

字符集合!!! 描述 输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。 数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 ,且只包含大小写字母,区分大小…

中国信息通信研究院产业与规划研究所校招一面、二面内容

本文介绍2024届秋招中,中国信息通信研究院的数字孪生智慧城市研究员岗位一面、二面的面试基本情况、提问问题等。 10月投递了中国信息通信研究院的数字孪生智慧城市研究员岗位,所在部门为数字孪生与城市数字化研究部。目前完成了一面与二面,在…

Django 模型和Admin站点管理(三)

一、定义模型 (1) 创建模型类,必须要继承自 models.Model from django.db import models# Create your models here. #设计数据库 #创建模型 class UserModel(models.Model):namemodels.CharField(max_length30) #对应于SQL name varchar(30…

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…

Vue.observable可以在vue2中给新增的属性增加响应式

将data中的config数据转为响应式: data() {return {config: {password1: "YQd^7D1",password2: "YQd^7D2",password3: "YQd^7D3"}}; }, computed: {transformedConfig() {if (this.config) {return Object.keys(this.config).map(k…

C++二维数组中的查找

4. 二维数组中的查找 题目链接 牛客网 题目描述 给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。 Consider the following matrix: [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[1…

深度之眼Paper带读笔记GNN.08.GCN(下)

文章目录 前言细节四:卷积核介绍图卷积核初代目图卷积核二代目契比雪夫多项式例子小结 GCN公式推导 实验设置和结果分析数据集节点分类任务消息传递方式比较运行效率 总结关键点创新点启发点 代码复现train.pyutil.pymodel.pylayer.py 作业 前言 本课程来自深度之眼…

基于单片机直流电机调速(proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、转速值送到液晶1602显示。 3、按键设加减速,开始暂停、正反转。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 en0; rw0; write_com(0x01); //lcd初始化 write_com(0x38)…

CQ 社区版 V2.6.0 发布 | SQL闪回、权限看板、新增数据源人大金仓等

前言 HELLO,大家好,又到了 CloudQuery 社区版发版时间!本次更新版本为 v2.6.0,亮点多多,我们直入主题一起来看! 一、本期亮点 新增 3 种数据源支持 V2.6.0,新增三种国产数据源支持&#xff…

cocos2dx ​​Animate3D (一)

3D相关的动画都是继承Grid3DAction 本质上是用GirdBase进行创建动画的小块。 Shaky3D 晃动特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 晃动的范围 // z轴是否晃动 static Shaky3D* create(float initWithDuration, const Size& …

内存可见性与指令重排序

文章目录 内存可见性内存可见性问题代码演示JMM(Java Memory Model) 指令重排序指令重排序问题代码演示指令重排序分析 volatile关键字volatile 保证内存可见性 & 禁止指令重排序volatile 不保证原子性 在上一节介绍线程安全问题的过程中&#xff0c…

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

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

实验4.数据全量、增量、比较更新

【实验目的】 1.利用Kettle的“表输入”,“表输入出”,”JavaScript代码”组件,实现数据全量更新。 2.熟练掌握“JavaScript代码”,“表输入”,“表输入出”组件的使用,实现数据全量更新。 【实验原理】 …

MATLAB算法实战应用案例精讲-【图像处理】图像缩放

目录 前言 知识储备 MATLAB图像处理函数 数字数字图像增强 数字数字图像的变换