理解 GPIO 的推挽与开漏

在日常的嵌入式开发过程当中,GPIO可以说是接触最多的外设了。小到点亮一个LED灯,大到模拟总线通讯,都必不可少地需要用到GPIO资源。而对于GPIO的两大输出模式 ——推挽输出开漏输出,你是否真正理解了呢?

首先我们看到STM32F4xx参考手册中的IO端口基本结构:

图片

其包含了输入驱动器和输出驱动器接口,和我们今天的主体相关的是右下角的输出驱动器结构:

图片

可以看到这个输出驱动器可以配置为推挽、开漏或禁止。而实现推挽和开漏的关键部分就是途中的两个MOS管:P-MOS和N-MOS。

推挽输出模式

推挽(Push-Pull)实际上指的是两个不同的电流方向,也有人更形象地称之为推拉模式。推指的是电路将电流“推”入负载,拉指的是电路将电流从负载“拉”回。

在推挽输出模式下,P-MOS和N-MOS都正常工作,当然在电路实际的工作中,每一时刻只会有一个管子导通。

输出高电平时,P-MOS会导通,N-MOS截止,此时输出端体现出来的就是高电平:

图片

同理,在输出低电平时,P-MOS截止,N-MOS导通:

图片

也正是因为同一时间只有一个管导通,因此在推挽输出模式下导通损耗小,效率高。同时从上图中可以看到当输出激活时负载是直接连接到电源和地的,因此能够提供大量电流,提高了电路的负载能力。

但是推挽模式也有一个缺点,如果把两个推挽结构相连,一个输出高电平,另一个输出低电平,反映到电路上则是高电平驱动的上MOS导通,下MOS关闭,低电平驱动的上MOS关闭,下MOS导通,此时电流将从第一个结构的VDD通过上MOS再经过第二个结构的下MOS直接流向GND,整个通路上的电阻非常小,从而引起短路。因此推挽模式下无法实现“线与”逻辑。

线与:多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。

开漏输出模式

开漏就是指MOS管的漏极开路,也就是漏极什么也不接,直接作为输出端口。

在这种模式下,当输出控制为高电平时,N-MOS截止,此时由于漏极是开路的,因此无法直接输出高电平,也是其主要特性,一般称为高电平没有驱动能力,此时要想获得高电平必须要外接上拉电阻,如下图:

图片

而控制端输出低电平时,N-MOS打开,输出端口将直接与地相连,因此其输出低电平的驱动能力是很强的,如下图所示:

图片

虽然开漏模式无法独立输出高电平,但也正是因为这一特性,使其可以非常方便地调节输出电平(完全由上拉电阻连接的电源电平决定)。因此在一些需要做电平转换的地方,开漏模式是有很大的优势的。

同时上面提到的推挽模式无法实现的“线与”逻辑在开漏模式下也能够实现。在高电平与低电平相连的情况下,由于上拉电阻的存在,不会出现推挽模式下的短路问题。

当然,开漏模式也有其缺点。其上升沿是通过上拉电阻来对负载充电,因此如果电阻小时延时就小,但功耗会变大,反之延时大功耗小。

总结

最后由一个表格来总结推挽输出与开漏输出的特性与优缺点:

图片

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
树莓派GPIO开漏输出是一种输出模式,它可以将输出引脚连接到外部设备或电路的共地(GND)或其他电源上。在开漏输出模式下,GPIO引脚可以通过开关电路将引脚连接到GND,形成一个低电平,或者将引脚断开,形成一个高阻抗状态。这种输出模式常用于与其他设备进行通信,如驱动继电器、LED灯等。在开漏输出模式下,需要通过外部电阻将引脚连接到供电电源,以确保电平的正常工作范围。开漏输出模式的优点是可以与多个设备连接在同一个总线上,实现多个设备的共享控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [利用树莓派漏极输出控制电机 Using Raspberry Pi open drain output GPIO to control a moter](https://blog.csdn.net/coolwaterld/article/details/84792220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)](https://blog.csdn.net/Seciss/article/details/120595713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WKJay_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值