gpt4 book ai didi

raspberry-pi3 - RPI 上的 SMBUS 给出 IOError : [Errno 121] Remote I/O error

转载 作者:行者123 更新时间:2023-12-05 04:09:43 24 4
gpt4 key购买 nike

我尝试过通过 I2C 在 RPi3 和 stm32 之间进行通信。首先我安装了 i2c-tools 和 python-smbus。总而言之,我在 RPI 上使用了 python 脚本,如下所示:

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)

但在原始通信中,此命令会导致消息 [0x00 0xA5 0x5A],具有领先的起始寄存器地址,这些 IC 不允许并使用 NACK -> 错误 121 正确回答。

奥特:我通过发送解决了我的问题

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

关于raspberry-pi3 - RPI 上的 SMBUS 给出 IOError : [Errno 121] Remote I/O error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com