Seite 1 von 1
Problem beim Read-Befehl: i2c-bus mit smbus von raspberry pi
Verfasst: Freitag 24. Juli 2015, 10:32
von svens
Hallo,
ich hab da mal ne Frage:
ich will eine Kommunikation zwischen einem raspberry pi und einem Nucleo Mbed aufbauen. Nucleo Mbed benutzt I2C-Bus. Raspberry Pi den SM-Bus, der ja auf dem I2C-Bus aufbaut. Ich benutze folgenden Befehl in Python:
read_i2c_block_data(int addr, char cmd)
und krieg Fehlermeldung. Kann mir vielleicht jemand weiterhelfen?
Der entsprechende Write-Befehl funktioniert.
Gruß
Sven
Re: Problem beim Read-Befehl: i2c-bus mit smbus von raspberr
Verfasst: Freitag 24. Juli 2015, 10:40
von Kebap
Hallo Sven,
es würde helfen, den genauen Code und die komplette Fehlermeldung zu zeigen.
So wie du deinen Aufruf schreibst, scheint mir schon etwas seltsam. In Python brauchst du die Typen "int" und "char" nicht angeben. Vielleicht funktioniert der Aufruf schon, wenn du die 2 Worte weglässt.
Re: Problem beim Read-Befehl: i2c-bus mit smbus von raspberr
Verfasst: Freitag 24. Juli 2015, 12:45
von svens
Hallo,
die Fehlermeldung ist ein Input/output Error [Errno5].
Ja, klar int und char sind wegelassen, hab das nur geschrieben um welche Daten es sich handelt.
Es geht eher um das Problem zwischen SM-bus und dem I2C-Slave im Nucleo Mbed.
Re: Problem beim Read-Befehl: i2c-bus mit smbus von raspberr
Verfasst: Freitag 24. Juli 2015, 14:00
von snafu
Bitte mehr Details, damit sinnvoll geholfen werden kann. Das mindeste wäre die Zeile, die im tatsächlichen Programm für den Aufruf genutzt wird, d.h. mit den echten Werten für die Parameter. Idealer wäre ein passendes Minimalbeispiel, bei dem der Fehler aufritt.
Sinnvolles Fragestellen heißt, dass man auch ausgiebig über die eigene Fragestellung nachdenkt und möglichst viele Hintergrundinformationen mitliefert. Das Forum ist schließlich kein Orakel, dem man nur die Frage stellen muss, um prompt die korrekte Antwort zu erhalten.

Re: Problem beim Read-Befehl: i2c-bus mit smbus von raspberr
Verfasst: Montag 27. Juli 2015, 14:22
von svens
Tut mir leid, ich bin noch neu im Forum und bei der Thematik noch ein Anfänger.
Ich hab folgenden Code (Werte sind Beispiele):
Code: Alles auswählen
import smbus
NUCLEO_ADDRESS = 0x5e #Nucleoadresse eintragen
data = [0x03,0x02,0x6f,0x6f]
ret = [0xc7,0xc8,0xc9]
i2c_port = smbus.SMBus (1) #I2C-Bus Nummer 1 am Raspberry
#ret = i2c_port.read_byte (NUCLEO_ADDRESS) #funktioniert
#ret = i2c_port.read_byte_data(NUCLEO_ADDRESS, 0xC3)
ret = i2c_port.read_i2c_block_data(NUCLEO_ADDRESS, 0xC3)
Taktrate-Runtersetzen am Raspberry PI hat nichts gebracht. Ich denke es liegt nicht am Clock-Stretching, sondern am Restart-Bit.
Siehe Seite 3 bei incompatible:
http://www.ti.com/lit/an/sloa132/sloa132.pdf
Ich weiß auch nicht wie ich die Read_Block-Befehle modifizieren soll:
Hoffe das genügt euch erstmal
