0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式硬件杂谈:推挽、开漏、高阻态、上拉电阻

张飞实战电子官方 2025-04-17 19:31 次阅读

对于嵌入式硬件这个庞大的知识体系而言,太多离散的知识点很容易疏漏,因此对于这些容易忘记甚至不明白的知识点做成一个梳理,供大家参考以及学习,本文主要针对推挽、开漏、高阻态、上拉电阻这些知识点的学习。


GPIO基础

下图截取的数据手册图,里面包含了GPIO的相关模式的介绍。

873436cc-1b7f-11f0-9434-92fbcf53809c.png


MCU输出时会有两种模式,一种叫做推挽模式,一种是开漏模式,对于一个GPIO要么不就是输出高电平不就是输出低电平吗,为什么还要有这两种模式,答案在后文。

GPIIO内部结构简图

如下图所示,我们要关注的也就是mos管的开关状态,枚举一下会有四种情况,如下所示:

Q1Q2OUT
opencloseHigh
closeopenLow
closecloseFloating
openopenShort Circuit

875b0e64-1b7f-11f0-9434-92fbcf53809c.png

推挽的理解

当 Q1 PMOS 打开,Q2 NMOS 关闭,VCC给负载所在电路的给这颗 NMOS 的栅极供电,也就是推电流出去,输出高电平,当Q1 PMOS 关闭,Q2 NMOS打开时,负载所在的电路的NMOS栅极放电,也就是挽电流回来,这里用的是 NMOS 也就是在此专栏的硬件篇专门讲过为什么是NMOS,应用的场景也有说明,如果还是不懂可以回去看看。

878739f8-1b7f-11f0-9434-92fbcf53809c.png

开漏的理解 驱动能力强

开漏模式下不加外部上拉电阻的话如下图所示,这种情况是不能接受的。

87a727c2-1b7f-11f0-9434-92fbcf53809c.png

因此我们需要加一个外部电阻,上拉电阻。

87bc43be-1b7f-11f0-9434-92fbcf53809c.png

第一个就是改变高电平的电压,防止主控烧坏相关器件,例如在IIC中,我们想用主控控制一个芯片,但是主控输出的高电平为5V, 芯片引脚只支持3.3V输入 ,因此会造成芯片给烧毁等一系列不确定因素的问题了,因此我们就要使用开漏模式了,同时最主要的就是需要外接一个上拉电阻了,用来将5V拉低成3.3V。

87e280a6-1b7f-11f0-9434-92fbcf53809c.png

也就是NMOS关闭就是高阻态,高电平由外部提供,打开就是低电平。

第二个作用就是可以让几个GPIO同时控制芯片,但是推挽就会造成短路。

87fcbe9e-1b7f-11f0-9434-92fbcf53809c.png

这里补充一下,I2C总线理论上可以连接127个设备(7位地址模式),2^7 (本质就是前7位是地址后一位是方向 )减去一个设备0 就是127.

推挽和开漏的区别

输出状态直接输出高电平和低电平只输出低电平,或通过上拉电阻输出高电平
驱动方式双向驱动(高电平和低电平)只有低电平驱动(高电平由外部提供)
输出能力高驱动能力低驱动能力(需要上拉电阻)
适用场景一般的数字输出、控制信号多设备共享总线、I2C、1-Wire等
优点响应速度快,能提供较大电流支持多设备共享,避免驱动冲突
缺点不适合多个设备共享,功耗较大需要外部上拉电阻,响应速度较慢

上拉电阻,到底在拉什么?

上拉电阻应用的场景

上拉电阻都会伴随着mos管的出现,其实就是工作在开漏模式下的GPIO口,

88314448-1b7f-11f0-9434-92fbcf53809c.png

但是如果例如相关外部芯片集成上拉电阻,我们就不用外部加了,如下图所示:

88586f46-1b7f-11f0-9434-92fbcf53809c.png

上拉电阻如何取值?

绝大部分上拉电阻都是 1K-100K 之间,电阻小的话优点就是驱动能力强,电阻大的话漏电流小。

886d299a-1b7f-11f0-9434-92fbcf53809c.png8887c8f4-1b7f-11f0-9434-92fbcf53809c.png

漏电流?驱动能力?是什么?

漏电流就是mos管打开时,会形成通路,如果这个电阻是1K的话,那这边的漏电流就有5mA了,这个电流是白白浪费的,而且还会产生热量。因此阻值当然是越大越好,但是驱动能力会弱。。

8898025a-1b7f-11f0-9434-92fbcf53809c.png


何为驱动能力?

也就是低电平向高电平的电平转换的过程,虽然你看到的是一个瞬间的上升沿,但是其实刻度调大之后,低电平到高电平并不是瞬间完成的,也就是之前章节说到的爬升过程了。。也要结合相关芯片负载的硬件选型了,否则会有失真的情况了。

88bfad5a-1b7f-11f0-9434-92fbcf53809c.png88d9cf78-1b7f-11f0-9434-92fbcf53809c.png

88f8ac22-1b7f-11f0-9434-92fbcf53809c.png890c777a-1b7f-11f0-9434-92fbcf53809c.png




-- END --

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 上拉电阻
    +关注

    关注

    5

    文章

    365

    浏览量

    31016
  • 推挽
    +关注

    关注

    1

    文章

    75

    浏览量

    34001
  • 高阻态
    +关注

    关注

    0

    文章

    19

    浏览量

    15627
  • 开漏
    +关注

    关注

    0

    文章

    6

    浏览量

    6080
  • 嵌入式硬件
    +关注

    关注

    1

    文章

    955

    浏览量

    8658
收藏 人收藏

    评论

    相关推荐
    热点推荐

    STM32cubemx在推挽输出模式下电阻和下拉电阻有什么作用和区别?

    只配置过输入的时候和下拉电阻。不知道在推挽输出模式下
    发表于 03-27 07:20

    推挽输出与输出

    推挽输出与输出的区别 推挽输出:可以输出,低电平,连接数字器件;
    发表于 11-18 22:05

    【经典】集电极开路,极开路,推挽,电阻,弱,三...

    本帖最后由 gk320830 于 2015-3-4 23:25 编辑 【经典】集电极开路,极开路,推挽,电阻,弱
    发表于 07-29 21:17

    推挽、强、弱、强下拉、弱下拉输出

    本帖最后由 gk320830 于 2015-3-4 23:01 编辑 推挽、强、弱
    发表于 08-20 14:02

    集电极开路 极开路 推挽 电阻门 准双向口

    集电极开路 极开路 推挽 电阻
    发表于 06-02 16:22

    MCU引脚输出模式中,“推挽输出”与“输出”电路原理究竟有啥区别

    会有这样的情况,因为电阻提供的电流比较小。如果是推挽输出的要设置为
    发表于 10-12 10:41

    【微信精选】单片机中的

    容易理解。单片机中的在51单片机,没有连接上电阻的P0口相比有
    发表于 07-29 07:00

    单片机中的到底什么意思?

    单片机中的到底什么意思?在我们刚一开始接触到51单片机的时候对P0口必须加上电阻,否则
    发表于 12-31 08:00

    简析单片机中的

    电阻,输出0就是状态(低),因为I/O引脚是通过一个管子接地的,并不是使用导线直接连
    发表于 07-24 07:32

    单片机中的解析

    问题可能容易理解。  单片机中的    在51单片机,没有连接上电阻的P0口相比有
    发表于 01-13 16:56

    IIC为什么用输出和电阻

    IIC通信协议推挽输出和输出输出的作用IIC为什么用
    发表于 02-26 06:48

    集电极开路_极开路_推挽_电阻_弱_三门_准双向口

    集电极开路_极开路_推挽_电阻_弱_三
    发表于 11-16 18:32 0次下载

    集电极开路极开路推挽电阻拉三

    介绍了什么是集电极开路,极开路,推挽电阻
    发表于 02-28 22:08 2次下载

    输出、推挽输出,悬空输入、模拟输入、输入、下拉输入的区别

    1.输出和推挽输出的区别开输出只能输出低电平,需要
    发表于 12-01 10:06 50次下载
    <b class='flag-5'>开</b><b class='flag-5'>漏</b>输出、<b class='flag-5'>推挽</b>输出,悬空输入、模拟输入、<b class='flag-5'>上</b><b class='flag-5'>拉</b>输入、下拉输入的区别

    STM32的GPIO的输入,输出与推挽,下拉的关系

    STM32的GPIO的输入,输出与推挽,下拉的关系
    发表于 01-14 14:45 25次下载
    STM32的GPIO的输入,输出与<b class='flag-5'>开</b><b class='flag-5'>漏</b>,<b class='flag-5'>推挽</b>,<b class='flag-5'>上</b><b class='flag-5'>拉</b>,下拉的关系