GPIO口的学习

推挽输出

用它去控制一个mos管,当输出高电平时电流这样流出去,给外面的这颗mos管的栅极充电,所以这个过程称为把电流推出去

然后当IO口输出低电平时电流这样流进来,给外面的这颗mos管的栅极放电,那这就是挽,把电流挽回来,所以所谓的推挽,其实就是描述了mos管输出高低电,平时电流的一个动作而已

开漏输出

接下去我们再把GPIO的这两种状态拿出来,组成一个组合,你会发现在这个组合里,上面的mos管永远是关闭的,所以可以认为它就是不存在的,那这个时候下面的mos管的漏极,就等于啥也没接,处于一个开漏状态,所以这个模式被称为开漏模式。

作用

第一个是改变高电平的电压,比如说我们现在想要用这个GPIO,去控制一个芯片的enable引脚,但是呢这个GPIO输出的高电平是5V,而后面这个芯片的enable只支持3.3V输入,如果用推挽模式的话,高电平时输出五伏,就有可能把后面的芯片给烧毁了,所以我们就需要使用开漏模式,同时需要在外面接一个上拉电阻,这样当这颗mos管关闭,也就是GPIO处于高阻态时,enable这边就被这个上拉电阻拉到了3.3伏,也就是高电平,当这颗mos管打开时,enable这边就被这颗mos管拉到了低电平,实现了5V单片机对3.3V芯片的控制

第二个作用就是可以支持几个GPIO同时控制一个输入,

我们来看一下这张图

用两个GPIO去控制这个芯片的enable,如果用推挽模式的话,上面的GPIO输出高电平,

下面的GPIO输出低电平时这条通路就短路了,这两个mos管总是会烧毁一个,所以需要把这两个GPIO都配置为开漏模式,然后再外接一个上拉电阻,这样只要有任意一个GPIO输出低电平时,这边enable就是低电平,如果都处于高阻态,那么这边enable就是高电平

用于实现多个设备共享同一条数据总线的情况,如 I²C总线 中。多个设备的开漏输出可以连接在同一条总线上,通过外部上拉电阻将线路拉高。当任意一个设备将输出拉低时,总线的状态就会变为低电平。这种"线与"(wired-AND)操作机制允许多个设备同时控制一条数据线,而不会发生冲突。

应用场景:I²C、SMBus等总线通信协议。

输出的总结

对于一个GPIO,根据内部mos管的开关情况,存在三种输出状态,分别是高电平,低电平和高阻态,然后高电平和低电平的组合,就变成了所谓的推挽输出,低电平和高阻态的组合,就变成了所谓的开漏输出,同时开漏输出,一般都会配置一颗外部的上拉电阻。

模拟输入

不经过TTL施密特触发器

上拉输入

上拉输入模式下,寄存器直接读取IO端口的电平,IO端口为高电平,读取的就是高电平,IO端口为低电平,读取的就是低电平,IO端口悬空无信号输入时读取的是高电平

下拉输入

浮空输入

在IO端口悬空时,读取的端口电平是不确定的

三种输入模式的区别

相关推荐
_李小白13 分钟前
【android opencv学习笔记】Day 31:提取轮廓之Canny算法
android·opencv·学习
点灯小铭15 分钟前
基于单片机的雨量检测智能汽车雨刮器模拟系统设计与实现
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业
零陵上将军_xdr21 分钟前
后端转全栈学习-Day6-JavaScript 基础-4
前端·javascript·学习
数智工坊25 分钟前
周志华《Machine Learning》学习笔记--第十四章--概率图模型
笔记·学习·机器学习
段一凡-华北理工大学29 分钟前
工业领域的Hadoop架构学习~系列文章20:故障诊断与根因分析 - 从表象到本质的智能推理
大数据·人工智能·hadoop·学习·架构·高炉炼铁·工业智能体
The moon forgets42 分钟前
ABot-M0:基于动作流形学习的机器人操作VLA基础模型深度解析
人工智能·pytorch·python·学习·具身智能·vla·点云分割
05候补工程师1 小时前
【马原核心复习】唯物辩证法与认识论全景架构图解与精要笔记
经验分享·笔记·学习·考研
三佛科技-134163842121 小时前
腕式血压计方案开发设计,腕式血压计MCU控制芯片选择
单片机·嵌入式硬件·物联网·智能家居
cici158741 小时前
C# LAS 点云读取与处理工具
stm32·单片机·c#
断眉的派大星1 小时前
YOLO26 完整学习笔记:从 Anchor-Free、TAL、STAL 到端到端无 NMS 部署
人工智能·笔记·学习·yolo·目标检测·计算机视觉·目标跟踪