【发布时间】:2013-03-06 10:49:09
【问题描述】:
我已经连接了Raspberry Pi和Rainbowduino以及自制的I²C电平转换器,并安装了Python模块SMBus,树莓派可以与Rainbowduino通信,但我经常得到尝试命令 bus.write_i2c_block_data(address, signal, data) 时出现输入/输出错误消息。
上面写着:
IOError: [Errno 5] 输入/输出错误
为什么会发生,我该如何修复或忽略这些错误?
【问题讨论】:
-
此错误仍在继续。它发生时似乎是随机的。有时它会发生并且仍然会发送命令,有时则不会。这可能是由于干扰吗?我在想 smbus 必须从从设备接收确认,否则在成功接收命令时它不会出错(因此确认会受到干扰,从而导致错误)。否则传输会受到干扰,因此从站不会发送适当的确认
-
我也遇到了同样的问题......
-
我还没有找到解决这个问题的方法,虽然我认为它是由时钟偏差引起的,所以降低 RaspberryPi 上的 I2C 速度可能会有所帮助,尽管所有实现看起来都有些混乱。有时命令通过,但模块仍然出错,有时命令不通过并出错。因此,我设置了一段时间尝试捕获系统,如果出现错误,它会尝试再次发送命令。使用这些数据包,我发送一个两字节的数据包编号。如果 Rainbowduino 已经执行了这个数据包/命令,那么它会忽略它,如果需要代码,请告诉我
-
我得到了一个使用
bus = SMBus(1)而不是bus = SMBus(0)的解决方案(我使用的是512 MB RPi)。我不知道这是否可以解决您的问题。
标签: python arduino raspberry-pi