0

这是在树莓派上。

我能够让 I2C-1 使用 Python 在 PI 上正常工作。

然后我运行另一个 Python 脚本,该脚本使用 GPIOZERO 库将其中一个 I2C 引脚用作 GPIO。

  from gpiozero import LED

  i2cpin = LED("BOARD3")
  i2cpin.on()
  time.sleep(1)
  i2cpin.off()
  i2cpin.close()

但是,当我回到第一个程序时,I2C 停止工作。

我认为 close() 会将 pin 功能恢复为默认的 I2C 功能,但事实并非如此。我也确认使用

 i2cdetect -y 1

并确认 I2C 确实不起作用。

无需重新启动,如何使用 python 以编程方式将引脚重新编程回 I2C 功能?

4

1 回答 1

0

好的....对于那些面临同样问题的人,这是我的解决方法

在我需要使用 I2C 的程序中,我总是会重新加载 I2C 模块,它会负责引脚配置。不漂亮,但它对我有用。

import subprocess

def main():

  subprocess.call(['sudo','rmmod', 'i2c_dev'])
  subprocess.call(['sudo','rmmod', 'i2c_bcm2835'])
  subprocess.call(['sudo','modprobe', 'i2c_dev'])
  subprocess.call(['sudo','modprobe', 'i2c_bcm2835'])
于 2021-04-11T00:13:57.120 回答