GPIO:为什么将按钮接地而不是+ 3.3v?


14

在大多数示例中,我都看到了将按钮连接到GPIO输入的过程,该按钮已布线,因此当闭合时,该引脚和地之间会形成电路,从而在该引脚上产生一个低输入。上拉电阻用于将输入值默认设置为高。然后,按下按钮,Pi上的代码即可检测到低电平。

我一直在将按钮连接到+ 3.3v,因此信号很高,因为这似乎更有意义,并使代码更符合逻辑,但是必须有一个大多数人都喜欢接地的原因。有什么优势?


注意:当我说“上拉电阻器”时,我指的是物理外部电阻器或内部上拉电阻器,已通过代码配置。
howard10年

Answers:


19

支持将按钮和逻辑连接到GND(然后在整个Internet复制)的主要原因之一是由于电源优化。

  • 将带有电阻器的引脚拉低至GND时成本为0瓦。
  • 用电阻将引脚拉高至+ Vcc会消耗功率。

在复杂的电路或依赖电池的电路上,此电源非常宝贵。

其他原因包括低EMF生成。在无线设备上,将逻辑电平拉高会在极其敏感的RF接收器上引起不必要的串扰。在此类收发器上,有一个用于过滤噪声的GND平面,这是所有逻辑都下拉到的地方。然后,处理器使用GND平面来过滤开关噪声。


3
用电阻上拉或下拉会消耗多少功率?电流流向Pi上的一个非常高的阻抗输入,这将把任何电流减小到亚微安培,即功率的微瓦。
stefandz

好的,但是请告诉我我是否错。向下拉针,这是一种0v = 0watts用法,但向上拉针>0watts-任何种类的微,毫,毫微级都无所谓。如前所述,在电池电量上每纳瓦都有帮助。但是,正如这里已经回答的那样……在USB上它什么也没有。我错了吗?
Piotr Kula 2015年

1
不一定正确。数字输入对地的阻抗很高-正确。但是它们不仅仅是电阻。它们是通常用于FET的输入门,并且这些门是不理想的。它们具有泄漏电流,并且这些泄漏电流可以沿任一方向进入或向外。因此,您的下拉电阻很可能消耗一瓦或两个微瓦,与上拉电阻一样多。
stefandz

如果您必须设计一个使用2AA电池运行的嵌入式设备,并且客户要求它至少运行12个月。而且您必须下拉/上GPIO。您将使用哪一种来节省最多的电量。(我们在这里谈论微观管理)
Piotr Kula 2015年

4
对于它的价值,我对此进行了一些测量-并且下拉式取胜(针对功耗)只是一个。10k上拉至3.3V = 9fW(是飞瓦)-10k上拉至地面= 5fW。当然,这甚至没有节省一些电池空间。
stefandz

10

电气工程师通常会使用电阻将输入拉高,然后使用开关将其接地,这有很多复杂的历史原因。

但是,这些原因与Raspberry Pi的业余爱好并不特别相关。使用对您有意义的任何东西。

如果您要生产商用产品,或者希望您的设计稍好一些,则出于以下实际原因,您将选择带有接地开关的上拉电阻:

  • 一根长接地线比连接到电源的一根接地线具有更低的EMI / EMC辐射风险
  • 比电源线更容易接地,并找到要连接的接地点
  • 如果通常与电路相距一定距离的开关或布线受损,并且使电线或内部开关部件与外壳或用户短路,则不会造成任何伤害-全部接地

2

完全不需要上拉电阻,BMC GPIO具有内部上拉电阻,尽管没有害处,但内部上拉电阻可在编程为输入时被激活。

将GPIO引脚直接连接到3V3或GND的做法很差。GPIO是双向的,如果将其编程为输入,则不会造成任何问题。另一方面,如果将其编程为输出,将导致消耗过多的电流。

良好(安全)的设计应使用与按钮串联的串联电阻(1kΩ)限制电流。出于亚当·戴维斯(Adam Davis)的原因,最好将按钮接地,并在GPIO引脚附近放置保护电阻。


唯一的问题是,在引导阶段1-3期间,这些引脚处于浮动状态(GPU到CPU的切换),然后在Linux内核引导期间的阶段4上,这些PIN设置为正确的状态。这可能导致门等待逻辑的严重问题。因此,建议还是将它们拉低,以免启动期间的浮动时间使您的电路陷入混乱!
Piotr Kula 2013年

1

我认为在RPi上没有理由比其他人更喜欢一个。大多数人可能只是复制或移植他们在其他地方看到的电路。

连接电路(使用电线或PCB)时,最好选择较方便的那个,然后将其转换为软件中的正确含义。


0

在TTL的旧时代,拉低引脚所需的电流要比拉高所需的电流大得多。因此,上拉电阻可能比下拉电阻具有更高的电阻(从而减少了功耗)。对于现代CMOS来说无关紧要,但是旧习惯会死掉。


-1

使用内部上拉电阻将该引脚接地,意味着您使用的部件更少。您只需要一个按钮;不需要外部电阻来限制电流。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.