RPI上的SMBUS给出IOError:[Errno 121]远程I/O错误

问题描述:

我尝试通过I2C在RPi3和stm32之间进行通信。首先,我安装了i2c工具和python-smbus。所有在所有我已经使用Python脚本的RPI如下:RPI上的SMBUS给出IOError:[Errno 121]远程I/O错误

import smbus 
bus = smbus.SMBus(1) 
address = 0x0A 
data = [1,2,3,4,5,6,7,8] 
bus.write_i2c_block_data(address, 0, data) 

当运行脚本,我可以看到以下错误:

IOError: [Errno 121] Remote I/O error 

STM32被配置为I2C从设备,两个设备被连接正确(SDA,SCL和GND)。我如何知道这一点?我使用BCM2835库编程。 C程序正常工作。 C程序发送的缓冲区没有任何错误。 STM32也收到缓冲区没有任何错误。你能告诉我,我做错了什么?

预先感谢您。

我遇到了同样的问题。当我发现所有的从机都没有收到主机发送的命令时,我发现错误代码为121。如果您尝试联系未使用的地址,或者该命令不是奴隶期望的情况,则会发生这种情况。

在我的情况下,我试图发送一个复位命令到TLC59116。这些IC需要地址0x6B处的命令“0xA5 0x5A”。

于是,我就用类似的片段像你送:

import smbus 
bus = smbus.SMBus(0) 
address = 0x6B 
data = [0xA5,0x5A] 
bus.write_i2c_block_data(address, 0, data) 

但在原始通信此命令导致消息[0×00的0xA5 0x5A],与领先的起始地址,这些芯片并没有让并回答正确与NACK - >错误121

OT: 我解决我的问题与发送

bus.write_data(address,0xA5,0x5A)