【发布时间】:2018-02-11 18:37:11
【问题描述】:
我在使用 ads1115(在树莓派下)时遇到了问题。 这是我的python代码
import smbus
bus = smbus.SMBus(1)
address = 0x49
print bus.read_byte(address)
print bus.read_i2c_block_data(address, 0x00, 2)
还有以下问题:
17
Traceback (most recent call last):
File "test.py", line 8, in <module>
data = bus.read_i2c_block_data(address, 0x00, 2)
IOError: [Errno 121] Remote I/O error
因此,我猜 I2C 模块没问题,而我的答案是“bus.read_byte”(此处为 17)。特别是, i2cdetec -y 1 完全有效(输出是地址 49。
如果我使用 ads1115 的另一个地址(如 adafruit 示例中所说的另一个接线),问题仍然存在。
更新:模块 ADS1115 可与 Arduino(和 Adafruit 库)配合使用并提供良好的测量结果。
你有想法吗?
【问题讨论】:
-
只是一个疯狂的猜测,但是——您是否尝试过在读取调用之间设置一点延迟?我遇到过这种 RPi 的计时问题,我从来没有真正理解过。无论是什么原因,我都注意到 I2C 操作无法按照 CPU 的速度按顺序执行的情况。
-
我刚刚使用了 time.sleep(1),没有做任何改动。请注意,ADS1115 模块已通过 Arduino 和 Adafruit 库成功测试
-
对不起——这只是在黑暗中刺伤。我在 RPi 上做了一些 i2c 编程,但只在 C 中。是否可以深入研究 python smbus 模块并详细了解错误 121 是否来自内核模块,或者是 python 模块对某些条件的解释不明白?
标签: python raspberry-pi i2c adafruit