Forum: Mikrocontroller und Digitale Elektronik HTU21D antwortet nicht (Trace, Schaltplan & Board)


von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum,
ich versuche derzeit ein HTU21D an einem STM32F103 anzusprechen. Leider 
meldet er sich nicht auf meine I²C Anfrage.

Er ist der einzige Teilnehmer am I²C Bus. Die Leitungen sind kleiner 
3cm. CLK & DAT sind jeweils mit 4,7k gegen VCC gelegt.
VCC ist ebenfalls ein einfacher GPIO des STM, da ich nur eine Messung 
alle 5 Minuten machen möchte und ihn damit dann einfach abschalte kann.

Als Frequenz I²C Frequenz bin ich bereits auf 5KHz runter gegangen.

Im Anhang habe ich den Trace der Anfrage, sowie auszüge aus Schaltplan 
und Board angehängt.

Legende:
CH1 (Gelb): VCC
CH2 (Blau): Data
CH3 (Lila): Clock

Ein zweites Board habe ich ebenfalls getestet (gleiches Resultat). Beide 
Boards kommen vom professionellen Bestücker. Bauteil wurde entsprechend 
der SolderMask auch richtigrum platziert.

Vielen Dank für eure Hilfe!

von Tomasz (Gast)


Lesenswert?

Ich würde sagen, dass die Adresse falsch ist. Ich sehe da eine 
8'b01000000 was eine I2C Adresse von 0x20 entspricht.

von Josef S. (josef2)


Lesenswert?

Hallo Michael,

im Datenblatt http://www.amsys.de/sheets/amsys.de.htu21d.pdf auf S.10/22 
findest Du unter der Überschrift "HTU21D(F) SENSOR LIST OF COMMANDS AND 
REGISTER ADRESSES" einen Abschnitt "Sending a command". Dort steht:

1
After sending the start condition, the subsequent I²C header consist 
2
of a 7-bit I²C device address 0x40 and a DATA direction bit (‘0’ for 
3
Write access : 0x80). The HTU21D(F) sensor indicates the proper 
4
reception of a byte by pulling the DATA pin low (ACK bit) after 
5
the falling edge of the 8th SCK clock.

Laut Oszi-Bild sendest Du "01000000" an den Sensor.

Im Datenblatt steht jedoch "7-bit I2C device address 0x40".
Deine Bitfolge sollte sich somit wie folgt zusammensetzen:
"1000000" (=0x40 in 7-bit) + "0/1" (="0" für Schreiben, "1" für Lesen).
In Summe also z.B. "10000000" (=0x80) um einen folgenden Schreib-Befehl 
anzukündigen.

Seite 11/22 dokumentiert ebenfalls nochmals schön die Bitfolgen, die Du 
senden mußt.

Viele Grüße

Josef2

von Michael (Gast)


Lesenswert?

Vielen Dank auch zwei!!
Die Adresse scheint tatsächlich falsch zu sein. Ich habe den ersten Puls 
als Starbedingung interpretiert, weshalb ich davon ausging, dass das 
erste Bit 1 ist.
In einem anderen Thread hier, hat ein Mitglied auch seine 
Datenkommunikation gepostet 
(https://www.mikrocontroller.net/attachment/286536/atmega_htu21d.png). 
Diese hatte sein Rigol auch mit 0x40 dekodiert, weshalb ich intuitiv 
davon ausgegangen bin, dass es bei mir richtig sei. Allerdings hat er 
wahrscheinlich im Dekoder eine andere Adressbreite angegeben, was auf 
den Screenshots nicht zu sehen ist.

Ich werde es heute Abend gleich ausprobieren, bedanke mich aber schon 
einmal recht herzlich für die Mühe!

Michael

von Josef S. (josef2)


Lesenswert?

> Ich werde es heute Abend gleich ausprobieren

Und?

von Michael (Gast)


Lesenswert?

Vielen Dank für den Tipp - das war's! - Funktioniert nun alles :)

Michael

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.