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

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

评论

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

#1 楼

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


将带有电阻的LOW引脚拉低到GND的成本0瓦。
将带有电阻的高电平引脚拉至+ Vcc会消耗功率。

在复杂的电路或依赖电池的电路上,这种功率非常宝贵。

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

评论


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

–stefandz
15年8月13日在16:45

好的,但是只要告诉我我错了。下拉一个引脚,使用量为0v = 0瓦,但是拉一个引脚> 0瓦-任何种类,微,毫,毫微,都没有关系。如前所述,电池电量每纳瓦都会有所帮助。但是,正如已经在这里回答的那样……在USB上它什么也没有。我错了吗?

–Piotr Kula
15年8月13日在16:48



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

–stefandz
15年8月13日在16:52

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

–Piotr Kula
2015年8月13日在16:55



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

–stefandz
15年8月14日在15:39

#2 楼

电气工程师通常会使用电阻将输入拉高,然后使用开关将其接地,这有很多复杂的历史原因。
这些原因与Raspberry Pi的业余爱好并不特别相关。使用对您来说有意义的任何东西。

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

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


#3 楼

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

连接不好GPIO引脚直接连接到3V3或GND。 GPIO是双向的,如果将其编程为输入,则不会造成任何问题。另一方面,如果将其编程为输出将导致消耗过多的电流。良好的(安全)设计将使用与按钮串联的串联电阻(1kΩ)来限制电流。出于亚当·戴维斯(Adam Davis)的原因,最好将按钮接地,并在GPIO引脚附近放置保护电阻。

评论


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

–Piotr Kula
2013年9月11日15:51



#4 楼

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

连接电路(使用电线或PCB)时,最好选择较方便的那个并将其翻译成正确的含义您的软件。

#5 楼

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

#6 楼

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