i2c地址超出范围



我一直在尝试将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)

我收到这个通知只是因为我还没有连接设备吗?还是因为使用子流程模块而出现问题?

感谢您的帮助,

Namita。

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

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

有关更多详细信息,请参阅此答案:https://stackoverflow.com/a/15109975/870658

你可以重写如下

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

最新更新