当我们配置推挽输出、开漏输出、上拉、下拉时,我们在配置什么?

在STM32的引脚配置中,我们经常看到:推挽输出,开漏输出,上拉,下拉,浮空等术语,这些都是什么意思?应用场合有何不同?本文将尝试解答这些问题。

1 STM32的GPIO结构

STM32的IO模式一般有这4种:输入,输出,复用,模拟。前面两种作为通用IO使用,也是本文的主要讨论对象,复用功能可以借鉴通用IO的配置,模拟功能比较特殊,没有上下拉、推挽开漏之说,具体配置参照对应的手册说明即可,不在本文的讨论范围。

下图是STM32的3V/5V兼容引脚的GPIO结构图,可以看到模拟Analog和数字Digital分开,数字又可分为输入输出,输入由一个施密特触发器和一对可配置的上下拉电阻组成,输出由共漏极的PMOS和NMOS,和一对可配置的上下拉电阻组成(输入和输出共用一对上下拉电阻)。
STM32的3V/5V兼容引脚的GPIO结构图

2 输入配置

输入只有上下拉电阻的配置,共有3种配置:上拉输入,下拉输入,浮空输入(既不上拉,也不下拉)。

2.1 上拉输入

当外部输入在有效时为低电平,无效时电平不确定,一般使用上拉电阻来使输入无效时的电平处于确定的状态。下图中的按键输入就是一个例子,当按键闭合时,施密特触发器的输入是低电平,当按键断开时,施密特触发器的输入是未知的,这时需要接一个上拉电阻使按键断开的输入处于确定的状态(高电平),这个上拉电阻可以是外部的,也可以是单片机内部的。
上拉输入

2.2 下拉输入

与上拉输入相反,当外部输入在有效时为高电平,无效时电平不确定,一般使用下拉电阻来使输入无效时电平处于确定的状态。如下图所示。
下拉输入

2.3 浮空输入

当外部输入不管是有效还是无效,电平都处于确定的状态时(比如推挽输出,详见下文),则可以使用浮空输入,也就是没有上下拉电阻的输入。

3 输出配置

输出主要有两种:推挽输出,开漏输出, 开漏输出一般搭配上拉电阻使用。

3.1 推挽输出

如下图所示,推挽输出(push-pull)由栅极、漏极分别相连的一对MOS管组成,当输入IN为低电平时,PMOS打开,NMOS关闭,输出OUT连接到VDD;反之,当输入IN为高电平时,NMOS打开,PMOS关闭,输出OUT连接到VSS。因此推挽输出的电平都是确定的,一般不需要接上下拉电阻。推挽输出常用于UART和SPI等单向通信接口(通信线路上信号只往一个方向走)。
推挽输出

3.2 开漏输出

如下图所示,开漏输出(open-drain)电路只有一个NMOS,当输入IN为高电平时,NMOS打开,输出OUT连接到VSS,当输入IN为低电平时,NMOS关闭,输出OUT处于浮空状态,输出电平不确定。
开漏输出
一般开漏输出会接上拉电阻,这个电阻可以是单片机内部的,也可以是外接的,下图中的为单片机内部上拉。这样,当输入IN为低电平时,NMOS关闭,由于接了上拉电阻,输出OUT为高电平。开漏输出常用于I2C等双向通信接口(通信线路上的信号可以往两个方向走),以I2C为例,总线接上拉电阻,总线上的设备在默认情况下都没有输出,总线处于高电平状态,一旦有任一个设备输出低电平,整个总线都被拉低,其它设备都可以读到这个低电平。
带上拉的开漏输出

参考:



2020/12/20   晴   SZ

  • 33
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
GPIO(通用输入输出)是一种通用的数字接口,可以用于连接外部设备和处理器。在GPIO中,浮空、模拟、上拉下拉、推挽和开漏是常见的概念。下面我来逐个介绍它们的含义: 1. 浮空(Floating):当一个GPIO引脚处于浮空状态,它没有连接到任何电源或地,因此其电压状态是不确定的。这种状态常用于输入引脚,可以通过外部电路将其拉高或拉低。 2. 模拟(Analog):模拟GPIO引脚可以接收和发送连续范围内的电压信号,用于处理模拟信号,如声音、光线等。模拟引脚通常需要额外的模数转换器(ADC)和数模转换器(DAC)来实现与数字系统的交互。 3. 上拉(Pull-up):上拉是一种使输入引脚保持高电平(逻辑1)的电路配置。当没有外部信号输入上拉电阻将引脚拉高到高电平。 4. 下拉(Pull-down):下拉是一种使输入引脚保持低电平(逻辑0)的电路配置。当没有外部信号输入下拉电阻将引脚拉低到低电平。 5. 推挽(Push-pull):推挽输出是一种输出模式,引脚可以提供高电平和低电平的输出。在高电平,驱动器提供电压源,使引脚保持高电平;在低电平,驱动器提供接地路径,使引脚保持低电平。 6. 开漏(Open-drain):开漏输出是一种输出模式,引脚可以提供低电平输出,但无法提供高电平输出。在开漏模式下,引脚通过一个开漏晶体管与地连接,当引脚输出低电平,晶体管导通,引脚被拉低;当引脚输出高电平,晶体管截断,引脚处于浮空状态。为了实现高电平输出,通常需要外部上拉电阻。 这些概念在GPIO配置和使用中起着重要的作用,可以根据具体需求选择适合的模式和配置方式。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值