上拉/下拉电阻 和 开漏/推挽输出 之间的关系

news/2024/10/19 3:29:14/

上拉/下拉电阻 和 开漏/推挽输出 之间的关系

文章目录


很常见的一个GPIO口配置

    GPIO_InitTypeDef gpio_init_struct;						/* 初始化结构体 */__HAL_RCC_GPIOB_CLK_ENABLE();                           /* GPIOB时钟使能 */gpio_init_struct.Pin = GPIO_PIN_5;                   	/* PB5引脚 */gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */gpio_init_struct.Pull = GPIO_PULLUP;                    /* 上拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */HAL_GPIO_Init(GPIOB, &gpio_init_struct);       			/* 初始化LED0引脚 */gpio_init_struct.Pin = GPIO_PIN_6;           			/* PB6引脚 */HAL_GPIO_Init(GPIOB, &gpio_init_struct);       			/* 初始化LED1引脚 */
GPIO八种模式特点及应用
输入浮空输入用,完全浮空,状态不定
输入上拉输入用,用内部上拉,默认是高电平
输入下拉输入用,用内部下拉,默认是低电平
模拟功能ADC、DAC
开漏输出软件IIC的SDA、SCL等
推挽输出驱动能力强,25mA(max),通用输出
开漏式复用功能片上外设功能(硬件IIC的SDA、SCL引脚等)
推挽式复用功能片上外设功能(SPI的SCK、MISO、MOSI引脚等)

上拉电阻 & 下拉电阻

STM32 F1的IO结构图
在这里插入图片描述
STM32 F4/F7/H7的IO结构图
在这里插入图片描述


上拉电阻

上拉电阻作用:解决浮空状态的不确定性,将输出压钳位高电平


上拉电阻原理

芯片内部可以简略等效成mos管(Q1)表示输出
在这里插入图片描述

Q1输出
打开低电平
关闭浮空/高阻态

也就是当mos管(Q1)关闭时,输出是不知道,相当于什么都没接(浮空/高阻态)
这就相当于是一个未知不可控的因素,这是让人不能接受。

所以我们需要接上拉电阻
在这里插入图片描述

Q1输出
打开低电平
关闭高电平

如此当mos管(Q1)关闭时,输出就被钳位在高电平

也可以这么理解
并联电阻使得上半部分阻值减少
而下半部分阻值无穷大
故而5V电压全加在下半部分
由此将输出电压拉高
在这里插入图片描述


上拉电阻如何取值?

最靠谱的做法就是,用示波器来看,找打合适的阻值

应用取值
只用作控制开关取10K-100K
驱动PWM / IIC等通讯R1取1K-10K
阻值优点缺点
上拉电阻驱动能力强漏电流大
上拉电阻漏电流小驱动能力弱

PS:漏电流 & 驱动能力

漏电流

MOS管打开时,就会产生如图的漏电流
这部分电流不仅会浪费掉,还会产生热量
电阻越小漏电流越大,发热越厉害

在这里插入图片描述


驱动能力

两个器件之间电平传输,一般会有寄生电容
当电平跳变的时候,例如低电平跳变成高电平

在这里插入图片描述

你以为的电平跳变

在这里插入图片描述

实际上的电平跳变

在这里插入图片描述

这就是寄生电容充电的过程,上拉电阻越大,充电越慢,驱动能力越弱


下拉电阻

下拉电阻作用:同样是解决浮空状态的不确定性,将输入电压钳位低电平


我们先将芯片内部等效成一个mos管(实际上应该是一个触发器)
在这里插入图片描述
虽然接的是5V电源,但由于N半导体和P半导体组成的PN结阻值太大,跟断开没什么区别
在这里插入图片描述
由于存在扩散电流,漂移电流,信号干扰等诸多因素
导致P半导体的电压漂浮不定,也就是输入电压不确定
对于一个精益求精的工程师来说,这怎么能忍,必须要排除一切不确定因素

当外接一个与地相连的电阻(下拉电阻),此时输入电压就是低电平了

在这里插入图片描述

那为什么不直接接地?

在这里插入图片描述
如果直接接地,也是将输入电压钳位在低电平
但是这样的话,就无法输入高电平了!!

默认情况,输入低电平
在这里插入图片描述

当有高电平连接时,输入高电平
在这里插入图片描述


开漏输出 & 推挽输出


一个GPIO口有可能的几种输出
在这里插入图片描述

状态Q1Q2输出
状态1打开关闭高电平
状态2关闭打开低电平
状态3关闭关闭浮空/高阻态
状态4打开打开(短路烧毁)

推挽输出

将 状态1 和 状态2 拿出来研究


什么是 “ 推挽 ”?

当Q1打开,Q2关闭时,输出高电平,如下图这个过程叫做

当Q1关闭,Q2打开时,输出地电平,如下图这个过程叫做
在这里插入图片描述


开漏输出


什么是 “ 开漏 ”

将 状态2 和 状态3 拿出来看,可以发现,Q1都是关闭的,就可以等效成下图
只剩下Q2,而且Q2的漏极什么都没接,处于开路状态,这就是你为什么叫 “ 开漏输出
在这里插入图片描述


什么情况下使用开漏模式?

在这里插入图片描述
GPIO需要给一个外部芯片输出一个高信号时
当GPIO输出的是5V,而外部芯片的使能电压是3.3V时
如果使用开漏输出,外部芯片就有可能会倍烧毁
此时就应该使用开漏输出
并且要接一个上拉电阻
这样高电平电压就由上拉电阻的电压决定了
在这里插入图片描述

Q2关闭时,输出高电平
在这里插入图片描述

Q2打开时,输出低电平
在这里插入图片描述
所以现在知道,为什么配置IO的时候,开漏输出要加上拉电阻的吧!!!


开漏输出的应用

多个IO口控制一个输出
在这里插入图片描述
Q2和Q4任意一个打开,都输出低电平
只有Q2和Q4都关闭,才输出高电平

Q2Q4输出
打开关闭低电平
关闭打开低电平
打开打开低电平
关闭关闭高电平

(1)、

(2)、

(3)、

(4)、


┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈┈
┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈
┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈
▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈┈

如果对你有帮助,就点赞收藏把!(。・ω・。)ノ♡


http://www.ppmy.cn/news/1509463.html

相关文章

TLE4966-3G带方向检测功能的高灵敏度汽车霍尔开关

TLE4966-3G是一款集成电路双霍尔效应传感器,专为使用旋转极轮的高精度应用而设计。通过片上有源补偿电路和斩波器技术实现精确的磁切换点和高温稳定性。 该传感器在Q2提供速度输出,其状态(高或低)与磁场值相对应。对于超过阈值BO…

java怎么做一个轻量级的线程池监控?

为什么需要监控 线程池在业务系统应该都有使用到,帮助业务流程提升效率以及管理线程,多数场景应用于大量的异步任务处理。 虽然线程池提供了我们许多便利,但也并非尽善尽美,比如下面这些问题就无法很好解决。 线程池随便定义&a…

静态IP和动态IP哪个好?怎么选择?

静态IP:确保稳定性与连续性 静态IP,即固定不变的IP地址,适用于需要长期保持在线状态的场景。它分为静态住宅代理和静态机房代理两种类型,前者更接近真实用户的网络环境,后者则是由服务器生成的虚拟IP。静态IP在以下场…

【Spring】Sping笔记01

参考学习:b站浪飞yes ---------------------------------------------------- # 一、Spring 引入 **事务实现** java public class EmployeeServiceImpl implements IEmployeeService { public void save(Employee employee){ // 打开资源 /…

《重构,改善既有代码的设计》解读

《重构,改善既有代码的设计》这本书由Martin Fowler撰写,是软件开发领域的经典之作。该书主要探讨了如何通过一系列重构技术来改善既有代码的设计,以提高代码的可读性、可维护性和可扩展性,同时保持软件的功能行为不变。《重构&am…

LeetCode106 从中序与后序遍历序列构造二叉树

前言 题目: 106. 从中序与后序遍历序列构造二叉树 文档: 代码随想录——从中序与后序遍历序列构造二叉树 编程语言: C 解题状态: 完全不会… 思路 注意中序遍历和后序遍历的特点,后序遍历负责提供中间节点&#xff0c…

Kubernetes/K8s集群1.23.6搭建

1 集群规划 HostnameIP角色centos702192.168.131.102mastercentos704192.168.131.104nodecentos705192.168.131.105node 2 安装步骤 初始操作和安装基础软件每个节点都要执行。 2.1 初始操作 2.1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld2.1.…

yolov5网络初始化问题

当你打印detect层的三个特征层时,发现有三种不同的长和宽,如下图所示: 我提出三个问题: 为什么不一样呢,输入有什么含义吗? 为什么网络初始化四次(forward)? 下面来逐个击破 1. torc…