SMBUS auf dem RPI gibt IOError: [Errno 121] Remote-I/O-Fehler
Habe ich versucht die Kommunikation zwischen RPi3 und stm32 über I2C. Zuerst habe ich installiert die i2c-tools python-smbus. Alles in allem habe ich verwendet python-Skript auf dem RPI wie folgt:
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)
Wenn ich das Skript ausführen können, sehe ich folgenden Fehler:
IOError: [Errno 121] Remote I/O error
STM32 ist konfiguriert als I2C-slave, beide Geräte sind korrekt angeschlossen(SDA, SCL und GND). Wie kann ich das wissen? Habe ich gemacht, das Programm mit BCM2835-Bibliothek. C-Programm korrekt funktionierte. C-Programm gesendet Puffer ohne Fehler. STM32 erhielt auch Puffer ohne Fehler. Können Sie mir sagen, was ich falsch mache?
Vielen Dank im Voraus.
InformationsquelleAutor J. Doe | 2017-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche problem. Ich habe herausgefunden, dass der Fehlercode 121 angegeben wird, wenn keiner der Sklaven ACKs den Befehl senden durch den Master. Dies geschieht, wenn Sie versuchen, eine Verbindung mit einem nicht-IP-Adresse oder der Befehl ist nicht das, was den Sklaven erwartet.
In meinem Fall habe ich versucht das senden eines reset-Befehls an eine TLC59116. Diese ICs erwarten, dass der Befehl "0xA5 0x5A" auf Adresse 0x6B.
Also habe ich versucht zu senden mit einem ähnlichen snippet wie Ihre:
Aber im raw-Mitteilung mit diesem Befehl führt zu einer Msg [0x00 0xA5 0x5A], mit führenden start registeraddress, die diese ICs nicht erlauben und richtige Antwort mit NACK -> Fehler 121.
O. T.:
Ich löste mein problem mit dem senden
InformationsquelleAutor crazyduck