Forum: Mikrocontroller und Digitale Elektronik Problem beim Read-Befehl: i2c-bus mit smbus von raspberry pi


von Sven S. (svensch)


Lesenswert?

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

von Wonko (Gast)


Lesenswert?

Sven S. schrieb:
> und krieg Fehlermeldung. Kann mir vielleicht jemand weiterhelfen?

Nur wenn Du bereit bist, uns die Fehlermeldung zu veraten.

von (prx) A. K. (prx)


Lesenswert?

Was ist ein "Nucleo Mbed"? Wenn das ein µC als I2C-Slave ist, dann wirst 
du vielleicht feststellen, dass der Clock Stretching verwendet. Und 
damit kommt der RPi nicht zurecht.

Setz mal den I2C-Takt auf ein paar kHz runter. Wenn es dann läuft...

von Sven S. (svensch)


Lesenswert?

Die Fehlermeldung ist ein Input/output Error [Errno5]

Ein Nucleo Mbed F411RE ist ein Microcontroller und wird bei mir als 
I2C-Slave verwendet.

von Sven S. (svensch)


Lesenswert?

@A.K.

Weißt du denn Befehl bzw. die Vorgehensweise, wie ich den I2C-Takt 
verändere?
Finde dazu grad nichts.

Danke
Sven

von (prx) A. K. (prx)


Lesenswert?

/sys/module/i2c_bcm2708/parameters/baudrate

von Sven S. (svensch)


Lesenswert?

Ich hab die Taktrate von 100kHz auf 50, fünf und ein kHz verändert 
gehabt. Das hatte allerdings keine Auswirkung, auf die fehlerhafte 
Übertragung.

Ich denke es liegt nicht am Clock-Stretching des SM-Buses, sondern am 
(Re-)start-Bit im read_block_data-Befehl.
Siehe auch auf Seite 3 bei incompatible:
http://www.ti.com/lit/an/sloa132/sloa132.pdf

Vielleicht weiß auch jemand was es mit dem modifizierten 
block-read-befehl auf sich hat. Weil read_i2c_block_data ist das nicht, 
weil der auch nicht funktioniert?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.