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