Forum: PC Hard- und Software SHT21 am BeagleBone Black


von Maik (Gast)


Lesenswert?

Hallo,

ich habe ergooglelt, dass es für einen SHT21 Luftfeuchtigkeitssensor für 
Linux einen Kernel-Driver geben soll. Kann mir jemand erklären was das 
genau bedeutet und wie ich den Sensor dann auslesen kann? Wie kann ich 
erkennen, ob mein Linux den Treiber schon im Bauch hat? Ich möchte ihn 
an mein BeagleBoneBlack anklemmen und möglichst einfach auslesen.

Maik

von Gerd E. (robberknight)


Lesenswert?

Hier findest Du den Treiber:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/hwmon/sht21.c

Wenn er in Deinem Kernel einkompiliert ist, heißt er "sht21". Also 
einfach mal "modprobe sht21" probieren. Wenn er was von "Module sht21 
not found" schreibt, dann ist der Treiber für Deinen Kernel noch nicht 
kompiliert.

Dann schau bei der Anleitung Deiner Distribution wie man einen eigenen 
Kernel kompiliert.

von Maik (Gast)


Lesenswert?

Hallo Gerd,

danke für Deine Antwort.

Wenn ich "modprobe sht21" eingebe kommt nur das Prompt zurück. Ohne 
irgend eine Meldung. Ist das ein gutes Zeichen?

Gruß
Maik

von TestX (Gast)


Lesenswert?

Ja

von Maik (Gast)


Lesenswert?

Danke

von Maik (Gast)


Lesenswert?

Ich hab jetzt einen SHT21 am BBB angeschlossen.

Wenn ich "i2cdetect -y 1" eingebe, bekomme ich aber den folgenden 
Fehler:

Error: Can't use SMBus Quick Write command on this bus

Wenn ich "i2cdetect -F 1" eingebe, kann ich sehen das "SMBus Quick 
Command " nicht implementiert ist. Kann ich das irgendwo einschalten? 
Wenn ja wo?

Functionalities implemented by /dev/i2c-1:
I2C                              yes
SMBus Quick Command              no
SMBus Send Byte                  yes
SMBus Receive Byte               yes
SMBus Write Byte                 yes
SMBus Read Byte                  yes
SMBus Write Word                 yes
SMBus Read Word                  yes
SMBus Process Call               yes
SMBus Block Write                yes
SMBus Block Read                 no
SMBus Block Process Call         no
SMBus PEC                        yes
I2C Block Write                  yes
I2C Block Read                   yes

Gruß
Maik

von Jim M. (turboj)


Lesenswert?

1
echo sht21 0x40 > /sys/class/i2c-adapter/i2c-1/new_device

sollte den sht21 auf dem i2c-1 Bus scharf schalten. Falls das der 
korrekte Bus ist...

von Maik (Gast)


Lesenswert?

Ja, aber der echo Befehl kommt mit einem Fehler zurück.
Es gibt im i2c-1 auch keinen Ordner new_device.
Laut Pinbelegung des BBB ist es der I2C-1. Wobei der 1er Bus an 2 
unterschiedlichen Portpins vorhanden ist.

Hat jemand noch irgendwelche Tipps zum debugging?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Maik schrieb:
> kommt mit einem Fehler zurüc

Und welcher Fehler?

von Maik (Gast)


Lesenswert?

sudo echo sht21 0x40 > /sys/class/i2c-adapter/i2c-1/new_device

kommt mit "Permission denied" zurück.

Es gibt den Ordner auch nicht unter:

/sys/class/i2c-adapter/i2c-1/

Dort sind nur folgendes:

0-0024  0-0034  0-0050  0-0070  delete_device  device  i2c-dev  name 
new_device  power  subsystem  uevent

von Sepp Platter (Gast)


Lesenswert?

liegt möglicherweise daran das der Kernel neu kompiliert werden, muss. 
Schau mal ob du das in der Kernelkonfig konfigurieren kannst.

von Sepp Platter (Gast)


Lesenswert?

ansonst mit lsmod kannste gucken was für Treiber laufen, insmod dient 
zum hinzufügen.

von Maik (Gast)


Lesenswert?

"lsmod" zeigt den sht21 nach dem ich "modprobe sht21" eingegeben habe 
an.

In einem anderen Forum habe ich noch herausgefunden, das man "i2cdetect 
-r 1" (1 für I2C-1) eingeben sollte. Dann kann ich den Bus auch scannen. 
Der Sensor wird aber nicht gefunden :-(

Dann geht die Suche also weiter...

von Gerd E. (robberknight)


Lesenswert?

Maik schrieb:
> In einem anderen Forum habe ich noch herausgefunden, das man "i2cdetect
> -r 1" (1 für I2C-1) eingeben sollte. Dann kann ich den Bus auch scannen.
> Der Sensor wird aber nicht gefunden :-(

Pullups hast Du am Bus dran? Wieviel Ohm?

100nF direkt an der Versorgung des SHT21 vorhanden?

Wenn es das nicht ist, dann schau Dir mal die Flanken am Bus mit dem 
Oszi an während Du das i2cdetect laufen lässt. Sind die sauber?

von Maik (Gast)


Lesenswert?

Pulups sind mit 2K2 vorhanden.

100nF Pufferkonni vorhanden.

Flanken kann ich keine sehen! Es kommen keine Signale!

Ich sehe im BBB nur i2c-0 und i2c-1.

ich kann an keinem Pin der i2c Busse irgend etwas messen. Im Ruhezustand 
liegen 3,3V an. (wg. der Pulups)

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.