STM32的推挽输出和开漏输出

举报
yd_274589494 发表于 2023/07/27 17:45:03 2023/07/27
【摘要】 @TOC 前言本篇文章将带大家了解STM32的推挽输出和开漏输出,并且学习这两个的区别,学习分别在什么时候使用这两个不同的输出方式。在 STM32 微控制器中,GPIO(General Purpose Input/Output)模块是一个通用的输入输出模块,可以用于实现各种功能,如控制 LED 灯、驱动电机、读取按键等等。为了控制 GPIO 输出的电平,需要配置 GPIO 的输出模式和输出类...

@TOC


前言

本篇文章将带大家了解STM32的推挽输出和开漏输出,并且学习这两个的区别,学习分别在什么时候使用这两个不同的输出方式。

在 STM32 微控制器中,GPIO(General Purpose Input/Output)模块是一个通用的输入输出模块,可以用于实现各种功能,如控制 LED 灯、驱动电机、读取按键等等。
为了控制 GPIO 输出的电平,需要配置 GPIO 的输出模式和输出类型。其中,输出模式可以设置为推挽输出(Push-Pull Output)或开漏输出(Open-Drain Output),输出类型可以设置为推挽输出或者开漏输出。

这里我先放一张图让大家先有一个具体的了解,在后面我会给大家详细讲解。
(本篇文章将引用百问网的一些资料)
在这里插入图片描述

一、推挽输出

我们可以在STM32参考手册第9章中看到下面这一张图片,这一张图片就是STM32 GPIO的结构图了。
在这里插入图片描述
==推挽结构由两个MOS管按互补对称的方式连接,任意时刻总是其中一个三极管导通,另一个三极管截止。如下图所示,内部由一个P-MOS管和一个N-MOS管组成,两个MOS管的栅极(Gate,G)接到了左侧“输出控制”,漏极(Drain,D)接到外部输出,P-MOS管的源极(Source,S)接到Vpp(3.3V),N-MOS管的源极接到Vss(OV) 。==
在这里插入图片描述

==MOS管作为开关使用,“输出控制”向两个MOS管栅极加一定电压,P-MOS管源极和漏极之间导通,Vpp 经过P-MOS管的S->G->D输出,N-MOS管处于高阻态(电阻很大,近似开路),整体对外为高电平;“输出控制”取消向两个MOS管栅极施加电压,P-MOS管源极和栅极截止,P-MOS管处于高阻态,N-MOS管源极和漏极导通,整体对外为低电平。==

==推挽模式,让“输出控制”变为了Vpp/V输出,使得输出电流增大,提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度。==

当STM32使用推挽输出时大大提高了电路的负载能力和开关的动作速度。

二、开漏输出

开漏模式下,“输出控制”不会控制P-MOS管,“输出控制”只会向N-MOS管栅极加一定电压,两个MOS管都处于截止状态,两个漏极处于悬空状态,称之为漏极开路。“输出控制”取消栅极的施加电压,P-MOS管依旧处于高阻态,N-MOS管导通,整体对外为低电平。
开漏输出模式可以等效将下图中灰色框的P-MOS管看作不存在。即该模式下只能输出低电平,若要输出高电平,则需要外接电阻,所接的电阻称为上拉电阻,此时输出电平取决于此时上拉电阻的外部电源电压情况,如下图中蓝色框的外部电路。

在这里插入图片描述

三、区别和适应场景

开漏输出(Open-Drain Output)是将负载电阻的两端连接到输出管子(通常为 N 晶体管)的漏极和电源之间的输出模式。当输出管子导通时,输出端口的电平为低电平,两端的负载电路被拉低;当输出管子截止时,输出端口的电平处于高阻态(开路状态),负载电路不受影响。

推挽输出(Push-Pull Output)是将负载电路连接到输出管子(通常为 P 晶体管和 N 晶体管)的漏极和源极之间。当输出管子 N 跟 P 同时导通时,输出为高电平;当输出管子 N 跟 P 同时截止时,输出为低电平。推挽输出常用于直接驱动电阻负载,并能够提供比开漏输出更高的输出电流和更稳定的输出电压。

开漏输出和推挽输出的适用场景如下:

开漏输出适用于需要连接到一个外部上拉电阻或者 Pull-up 电路中的信号,或者需要实现多个开漏输出端口的连接来驱动负载或实现电平转换的场景。例如,用于驱动 LED 灯模块、I2C 总线等场合。
推挽输出适用于直接驱动电阻负载的场景,例如,驱动电机、继电器等等场合。
需要注意的是,在使用开漏输出时,由于输出为低电平或高阻态,因此其输出电路需要进行上拉电阻或者具有 Pull-up 功能的电路。而在使用推挽输出时,由于输出可以为低电平或高电平,因此在直接驱动负载时更加方便。

总结

本篇文章就讲解到这里了,大家有什么疑问可以留言或者看视频。
视频地址:B站

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。