今天给大家分享的是浮动输入和开漏输出。
本文引用地址:
首先,考虑双向(单刀双掷)开关情况
当开关打开时,为控制输入将连接到 +3.3V,即高电平。当开关关闭时,微控制器输入将连接到 0V(即低电平)。但是,如果只有一个按钮怎么办?
![](http://n.sinaimg.cn/spider20240702/530/w862h468/20240702/6c3c-0f5065b36786c61ceacdc8c8743d304b.jpg)
开关打开
当按下按钮时,微控制器输入将连接到 0V(即低电平)。
![](http://n.sinaimg.cn/spider20240702/374/w862h312/20240702/c735-e6dfe5abcc370457ce928329c76603bc.jpg)
按下按钮
然而,当未按下按钮时,微控制器输入并没有真正连接到组件:
![](http://n.sinaimg.cn/spider20240702/368/w862h306/20240702/c519-e7cc9b5b0f56f19b9c569e5c2d4d2100.jpg)
未按下按钮
就好像没有连接一样:
![](http://n.sinaimg.cn/spider20240702/479/w431h48/20240702/c142-2ca07caad28147441f60cf12ec822033.png)
等效
在这种情况下,输入电平是多少?高还是低?因为它没有真正连接到任何东西,所以输入可以是任何东西,具体取决于环境中的静电或电磁辐射。
它可能只是简单地接收无线电波(如天线)并在弱定义的高状态和低状态之间来回翻转。这种状态,其中微控制器输入没有明确定义并且可以是任何东西(随机),称为浮动。
为了解决这个问题,需要在输入端添加一个上拉电阻或下拉电阻(上拉电阻如下图所示):
![](http://n.sinaimg.cn/spider20240702/752/w862h690/20240702/83c8-d86802a192d81c9c45c85e35d3eeeefc.jpg)
上拉电阻
当按钮未被按下时,上拉电阻会将微控制器输入拉至+3.3V,提供明确定义的高电平。当按下按钮时,微控制器输入将直接连接(短路)至地 (0V),提供明确定义的低电平。在这种情况下,一些电流将流过上拉电阻,但由于电阻值相对较高,因此电流量很小。
这里可以发现电阻符号看起来像一个小弹簧,这是它在这种情况下的功能。比如自动关闭的门,除非你主动打开门,不然的话,会有机制门会自动关闭。如果没有自动关闭机制(假设门没有闩锁机制),门会被进出的人移动,不会默认特定的位置。
上拉(或下拉)电阻类似于这些门上的自动关闭机制,因为它在未主动驱动时将输入保持在特定电平。
情况可以反过来,因为按钮可以连接到+3.3V(高),并且可以使用下拉电阻来保持输入低。不过,上拉电阻配置比较常见
![](http://n.sinaimg.cn/spider20240702/696/w862h634/20240702/cd25-222054a2fa5a3e1dde0cd0dfd0ed3995.jpg)
下拉电阻
一些微控制器输出可以设置为漏极开路(或仅可用作漏极开路)。开漏输出是只能驱动为低电平而不能驱动为高电平的输出;输出为低电平或浮动。
本质上,输出只是连接到晶体管的漏极引脚(因此称为开漏)。
![](http://n.sinaimg.cn/spider20240702/546/w862h484/20240702/1ca7-8f7c9c0a8a69609f7169a86343b6762d.jpg)
开漏
当控制线被驱动为高电平时,晶体管将输出短路至地 (0V),将其拉低。当控制线被驱动为低电平时,晶体管处于高阻抗(高电阻)并且输出处于浮动状态。
一些通信方案,例如 I2C 和 CAN,使用它来允许多个设备通过相同的通信线路进行通信,而不会出现短路(冲突,即一个设备试图将线路驱动为高电平,而另一个设备试图将线路驱动为高电平)。它很低)。
在这些情况下,上拉电阻用于在未主动将线路驱动为低电平时将线路保持为高电平。
来源:https://www.labcenter.com/blog/sim-inputs-outputs/
![新浪科技公众号 新浪科技公众号](http://n.sinaimg.cn/tech/content/tech_qr2x.png)
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)
![](http://n.sinaimg.cn/tech/content/tech_weixin2.png)