Es können keine Daten von MCP9808 mit i2c gelesen werden

Ich habe einen Temperatursensor MCP9808 und einen Raspberry Pi 3B plus. Ich hatte großen Erfolg beim Lesen der Temperatur von diesem Sensor über i2c auf einem Arduino Uno, aber ich kann die Temperatur nicht mit dem Raspberry Pi lesen. Es sind mehrere Bibliotheken verfügbar, um den Sensor über Python und C auszulesen, aber ich erhalte bei allen Fehlermeldungen. Daher versuche ich, einfache Befehlszeilentools zu verwenden, um das Problem zu diagnostizieren.

Das Datenblatt finden Sie hier: http://ww1.microchip.com/downloads/en/DeviceDoc/MCP9808-0.5C-Maximum-Accuracy-Digital-Temperature-Sensor-Data-Sheet-DS20005095B.pdf

Ich habe i2c bereits auf dem Pi aktiviert und kann den Sensor erkennen (Standardadresse 0x18):

root@raspberrypi:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
...etc...

Außerdem kann ich die Register des Sensors sondieren:

root@raspberrypi:~# i2cdump 1 0x18

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX 00 00 00 00 80 00 04 03 60 a0 27 00 XX XX XX    X....?.??`?'.XXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
...etc...

Aber ich kann keine einzelnen Bytes oder Wörter vom Sensor bekommen:

root@raspberrypi:~# i2cset -y 1 0x18 0x05
Error: Write failed
root@raspberrypi:~# i2cget -y 1 0x18 0x05 w
Error: Read failed
root@raspberrypi:~# i2cget -y 1 0x18 0x05 b
Error: Read failed
root@raspberrypi:~# i2cget -y 1 0x18 0x05 i
Error: Invalid mode!

Ich kann auch nicht das Konfigurationsregister des Sensors einstellen:

root@raspberrypi:~# i2cset -r 1 0x18 0x01 0x0000 w
Error: Write failed

Ich habe die relevanten Teile des Datenblatts gelesen (glaube ich), aber ich verstehe nicht, warum ich keine Daten bekomme. Wenn ich das richtig verstehe, muss ich nichts in irgendwelche Register schreiben, um den Sensor vorzubereiten (die Einschaltvorgaben machen ihn einsatzbereit).

Was mache ich falsch?

Ein weiterer Datenpunkt: i2cdetectErkennt ein Gerät, auch wenn GND überhaupt nicht verbunden ist.

Antworten (1)

Nun, fügen Sie mich der langen Liste der Leute hinzu, die Probleme mit der Verkabelung haben. Ich hatte die Drähte an den Pins 1, 3, 5 und 7 mit dem Pi verbunden, hätte aber 9 statt 7 verwenden sollen.

Das Wichtige, was hier zu beachten ist, ist, dass ich i2cdetectden Sensor und i2cdumpden Sensor erfolgreich konnte, aber nicht i2cgetden i2csetSensor. Ich bin mir nicht sicher, warum das so ist, aber die Fakten sprechen für sich.