通过rasperry PI上的GPIO上拉设置

2024-05-23 07:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在rasperry PI上安装许多I2C总线,所以我使用常用的GPIO编写了自己的I2C控制器

它在使用BCM GPIO 2和3时工作,但在使用其他GPIO时不工作。 根据schematics,GPIO 2和3通过1.8KOhm电阻器上拉至VCC

我想知道为什么需要这个上拉电阻器,因为GPIO可以在BCM内部上拉(当时不确定电阻值,可能被认为对I2C来说太弱了)。。。无论如何

使用Rpi.GPIO时,应使用以下语句控制此“软件”上拉:

GPIO.setup(<gpio_pin>, GPIO.IN, pull_up_down=GPIO.PUD_UP)

因此,我编写了以下测试代码来测试:

GPIO.setmode(GPIO.BOARD)
gpios= [3,5,29,31] #board numbering (2,3,5,6 in BCM)

GPIO.setup(gpios, GPIO.IN, pull_up_down=GPIO.PUD_UP)

for gpio in gpios:  #test pin for pin
    print(">>>>> ", gpio)
    GPIO.setup(gpio, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    res= GPIO.input(gpio)
    print res

返回

./r:15: RuntimeWarning: A physical pull up resistor is fitted on this channel!
  GPIO.setup(gpios, GPIO.IN, pull_up_down=GPIO.PUD_UP)
('>>>>> ', 3)
./r:18: RuntimeWarning: A physical pull up resistor is fitted on this channel!
  GPIO.setup(gpio, GPIO.IN, pull_up_down=GPIO.PUD_UP)
1
('>>>>> ', 5)
1
('>>>>> ', 29)
0
('>>>>> ', 31)
0

没有连接到任何引脚,因此没有任何下拉

奇怪的是,我得到了关于电路板引脚3的警告,但不是5,尽管两个引脚都被从外部拔出(?)

但更重要的是,上面的结果告诉我,我的软件控制的上拉失败了。我应该在所有四个GPIO上都得到“1”

我是否误解了Rpi.GPIO的作用


Tags: ingpiosetuppini2cpullrpidown

热门问题