野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13868|回复: 8

关于GPIO开漏输出描述的疑惑。请指点迷津。

[复制链接]
发表于 2015-12-11 10:03:12 | 显示全部楼层 |阅读模式
看到《零死角玩转STM32》的关于输出方式开漏输出时。书上的这段话令我感到莫名其妙。请结合下图帮我看看,是上面的PMOS开漏还是下面的NMOS开漏?怎么开漏的?这不是连接在一起了吗?另外,既然后面提到是NMOS管开通,而前面那句输出为0时,怎么会让NMOS管导通的?奇怪啊。明明应该是低电平截止的。我有点迷糊了。请大师指点一二??  
我的理解是:NMOS管G极为高电平1,则NMOS导通,所以输出被拉低到GND电平。反之,如果G极为低电平时,则NMOS管截止,导致一个不确定状态。所以,才需要一个外加的上拉电阻,把这个状态固定为高电平。不知道理解是否正确?是不是原书是错误的描述了?

问题2:下面原理图输出控制那个方框输出的两路信号应该是同时为1,或者同时为0的吧。这样才能保证一个管子开,另外一个是关的。应该不是输出为10,或者01这样的组合。理解是否正确?大神指点哦。



开漏输出2.jpg


开漏输出1.jpg

回复

使用道具 举报

发表于 2015-12-11 10:09:06 | 显示全部楼层
参考这个等效电路图

等效电路.png


所谓的推挽输出模式,是根据这两个MOS管的工作方式来命名的。在该结构中输入高电平时,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;而在该结构中输入低电平时,N-MOS管导通,P-MOS关闭,对外输出低电平。当引脚高低电平切换时,两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0伏,高电平为3.3伏,参考图 2 2左侧,它是推挽输出模式时的等效电路。


而在开漏输出模式时,上方的P-MOS管完全不工作。如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地,若控制输出为1 (它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。为正常使用时必须接上拉电阻(可用STM32的内部上拉,但建议在STM32外部再接一个上拉电阻),参考图 2 2中的右侧等效电路。它具“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。
推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。
开漏输出一般应用在I2C、SMBUS通讯等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5伏的高电平,就可以在外部接一个上拉电阻,上拉电源为5伏,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5伏的电平。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-11 10:28:10 | 显示全部楼层
您的这个例子是可以看明白的。因为里面的原理图用的是NPN和PNP管子。而且也是输出低电平时,下面的PNP管子是导通的。输出确定的低电平0..这个是对的。可以理解。

返回头看《零死角》PDF书上的说法,完全跟你说的 这个例子相反。
请问控制输出为0,是指的引脚上的电平是0还是下面的NMOS管子的G极信号是0
如果引脚PIN上的电平要想是0,那只有下面的NMOS的管子的G极为高电平,管子导通。
看来图上的那个“输出控制”方框的功能是对输出寄存器的数值进行了变换了。
比如在LED灯控制时,我们要输出低电平。这个时候“输出控制”电路输出的是高电平,打开下面的NMOS管输出PIN为0.   是不是这样理解?

请解释一下划线的地方哦。这个地方描述的匪夷所思啊。容易产生误解。没有描述清楚。

开漏输出2.jpg
回复 支持 反对

使用道具 举报

发表于 2015-12-11 10:35:00 | 显示全部楼层
qduwg 发表于 2015-12-11 10:28
您的这个例子是可以看明白的。因为里面的原理图用的是NPN和PNP管子。而且也是输出低电平时,下面的PNP管子 ...

哦,我主要看《STM32库开发实战》书里的文档,那里改过来了
《零死角》这个文档我们准备重新整理

以上面那个等效电路图来理解吧, 三极管一看就知道了,mos管看得头晕
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-11 10:49:04 | 显示全部楼层
flyleaf 发表于 2015-12-11 10:35
哦,我主要看《STM32库开发实战》书里的文档,那里改过来了
《零死角》这个文档我们准备重新整理

我看了《STM32库开发实战》这个书的。里面这个地方的内容描述基本都是一样的啊。哪里改了?

NPN,PNP组成的推挽电路,刚好跟书上给出的图里面的PMOS,NMOS位置相反的。

我现在只有考虑一个原因,就是那个“输出控制”逻辑在起作用了。 输出寄存器值为0时,通过输出控制逻辑,让上面的关闭,下面的打开。这样PIN上的输出就是低电平。反之,则两个管子都关闭,则输出无定态。需要上拉电阻钳位到高电平。

开漏输出3.jpg


非常感谢版主的讨论。
回复 支持 反对

使用道具 举报

发表于 2015-12-11 11:10:35 | 显示全部楼层
qduwg 发表于 2015-12-11 10:49
我看了《STM32库开发实战》这个书的。里面这个地方的内容描述基本都是一样的啊。哪里改了?

NPN,PNP组 ...

是啊,总之最后实现的是推挽模式时,寄存器1时,上面导通,下面关闭,寄存器为0时,下面导通,上面关闭。


时不时有读者反映这里写错了,可是我有时看它发现确实错了,但过一段时间又不知道它错在哪里了,好晕。我再看看吧。反正结论就是上面那种方式,可能是过程有的搞反了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-11 11:32:43 | 显示全部楼层
flyleaf 发表于 2015-12-11 11:10
是啊,总之最后实现的是推挽模式时,寄存器1时,上面导通,下面关闭,寄存器为0时,下面导通,上面关闭。 ...

就是在描述的时候,把原因放在前面,结论放在后面。这样比较符合逻辑。你是把结论放在前面,原因放在后面。容易误导。
回复 支持 反对

使用道具 举报

发表于 2015-12-11 12:05:14 | 显示全部楼层
qduwg 发表于 2015-12-11 11:32
就是在描述的时候,把原因放在前面,结论放在后面。这样比较符合逻辑。你是把结论放在前面,原因放在后面 ...

专业发帖23年                    
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-11 13:11:09 | 显示全部楼层

哈哈,我们都是菜鸟。希望高手的指点。共同进步哦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 23:43 , Processed in 0.040063 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表