i2c 地址超出范围

i2c address is out of range

我一直在尝试将 MCP23017 与我的 beaglebone 一起使用。但是我还没有收到我的设备,但我已经开始准备我的程序了…… 我现在正在对 GPIO 引脚进行编程。在这里,我尝试使用 i2c 命令读写引脚,如下所示: 写--

a=('i2cset', '-y', '0', '0x20', '0x14', '0x01')
subprocess.call(a, shell=True)

类似地使用 i2cget 进行阅读。但是当我尝试 运行 它时,它会在我的屏幕上显示一条通知

Usage: i2cset [-f] [-y I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x03- 0x77)

我收到这个通知只是因为我还没有连接我的设备吗?还是因为使用了subprocess模块​​的问题?

感谢任何帮助,

波田

假设您已经尝试了 shell 中的命令并且成功了。 如果您在 subprocess.call() 中设置 shell=True,建议使用字符串而不是序列(在您的情况下是元组)作为第一个参数。

如果您使用 shell=True 并将序列作为第一个参数传递,则从第二个开始的参数将被视为 shell 本身的参数。

详情请参考此回答:

您可以改写如下

cmd = 'i2cset -y 0 0x20 0x14 0x01'
subprocess.call(cmd, shell=True)