Forum: Mikrocontroller und Digitale Elektronik Finde I2C Slave nicht.


von Simon K. (simon1516)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe gerade das Problem, dass ich einen I2C Slave als IC auf einer 
Platine nicht finden kann. Es befinden sich zwei I2C Slaves auf auf dem 
Schaltplan. Der Sensor (ICM20948) wird mittels Nordics "nRF TWI/I2C 
Scanner" (SDK example) gefunden. Der IC um den es geht (LTC2941) aber 
nicht.

Da die Software funktioniert und den anderen IC findet (Sensor), vermute 
ich einen Hardwarefehler auf meiner Platine.

Verstehe ich folgendes richtig? Ich betreibe den IC mit einer Lipo (ca. 
3-4,2V). Das ist laut Datenblatt 
(https://www.analog.com/media/en/technical-documentation/data-sheets/LTC2941.pdf) 
in dem Bereich auch zulässig. Der I2C Bus wird mit einer anderen 
Spannung VDD (1,8V) betrieben. Auch das ist laut Datenblatt zulässig 
(0,3*Betriebsspannung ist Minimum und 0,7*Betriebsspannung ist Maximum, 
Datenblatt S. 3).

Schaltplan ist anbei. Vielleicht seht ihr ja noch ein NoGo :-)

Danke und Gruß

Simon

von Schlaumaier (Gast)


Lesenswert?

Hast du im Code die richtige Adresse angegeben. ?? Das ist 
Standard-Fehler No. 1

von A. S. (Gast)


Lesenswert?

das IC hat eine andere Spannung als der I2C-Bus? sogar doppelt so hoch? 
Dann brauchst Du vermutlich die FET-Schaltung für Clock und Daten.

von Schlaumaier (Gast)


Lesenswert?

Ich verstehe aber deine Stromprobleme nicht.

Lt. Datenblatt Seite 2 oben kann/braucht das Teil zwischen 0.3 - 6 Volt. 
Was für mich bedeutet, das Teil würde ich ganz normal an die 5 V meines 
Arduino hängen.

von Hmmm (Gast)


Lesenswert?

Simon K. schrieb:
> Der I2C Bus wird mit einer anderen
> Spannung VDD (1,8V) betrieben. Auch das ist laut Datenblatt zulässig
> (0,3*Betriebsspannung ist Minimum und 0,7*Betriebsspannung ist Maximum,
> Datenblatt S. 3).

Threshold ist nicht die I2C-Betriebsspannung, sondern die Schwelle 
zwischen High- und Low-Pegel. Im Worst Case also 4.2V*0.7=2.94V, und 
dann sind die 1.8V I2C-High-Pegel für das IC ein sehr eindeutiger 
Low-Pegel.

von Simon K. (simon1516)


Lesenswert?

Schlaumaier schrieb:
> Hast du im Code die richtige Adresse angegeben. ?? Das ist
> Standard-Fehler No. 1

Das SDK example durchforstet alle mögliche  I2C Adressen und zeigt alle 
erreichbaren Teilnehmer an.

A. S. schrieb:
> das IC hat eine andere Spannung als der I2C-Bus?

Ja.

>sogar doppelt so hoch?
> Dann brauchst Du vermutlich die FET-Schaltung für Clock und Daten.

Warum sollte ich die brauchen? Diese Regel ist mir nicht bekannt. I2C 
sollte auch mit anderen Spannungen als der Betriebsspannung 
irgendwelcher IC´s funktionieren. Kannst du ein Beispiel zeigen, wo das 
so gemacht ist?

Schlaumaier schrieb:
> Ich verstehe aber deine Stromprobleme nicht.
>
> Lt. Datenblatt Seite 2 oben kann/braucht das Teil zwischen 0.3 - 6 Volt.
> Was für mich bedeutet, das Teil würde ich ganz normal an die 5 V meines
> Arduino hängen.

Korrekt. Die Spannungsversorgung, die in diesem Bereich liegt, 
beschränkt aber mit ihrem konkreten Wert folglich den Bereich für die 
I2C Pegel. Und das ist wohl das Problem.

Hmmm schrieb:
> Threshold ist nicht die I2C-Betriebsspannung, sondern die Schwelle
> zwischen High- und Low-Pegel. Im Worst Case also 4.2V*0.7=2.94V, und
> dann sind die 1.8V I2C-High-Pegel für das IC ein sehr eindeutiger
> Low-Pegel.

Hört sich plausibel an. Mist. Ich werde morgen mal versuchen, die 
Versorgunggspannung auf 2,5V zu legen. Dann hätte ich 2,5V*0,7, dann ist 
es unter 1,8V...in der Hoffnung, dass dies funktioniert :-/

von PittyJ (Gast)


Lesenswert?

Ich schliesse dann meistens das Oszi an, und schaue, was auf den 
Leitungen wirklich los ist.

von Peter D. (peda)


Lesenswert?

Simon K. schrieb:
> Der I2C Bus wird mit einer anderen
> Spannung VDD (1,8V) betrieben.

Ich schreib die Spannungen immer in Klartext in den Schaltplan. Das 
vermeidet Rätselraten und Fehler.

Warum benutzt Du verschiedene Spannungen?
Natürlich braucht man dann auch Pegelwandler:
https://www.nxp.com/docs/en/application-note/AN10441.pdf

Für 1,8V geht aber nicht jeder FET.

von Simon K. (simon1516)


Lesenswert?

Hallo zusammen,

danke für eure Antworten.

Da am I2C Bus auch andere IC´s hängen, möchte ich an den Parametern von 
I2C nichts ändern. Bedeutet gleichzeitig, dass der I2C Slave der nicht 
funktioniert (Battery Gas Gauge) rausgeschmissen und ersetzt wird. Was 
haltet ihr von folgendem IC?

https://www.mouser.de/datasheet/2/256/MAX17055-1097125.pdf

Für mich interessant, da:

- lötbar im TDFN package
- relativ niedriger Ruhestrom
- die I2C Signale müssen unter 0,5V sein um als Low zu gelten und über 
1,5V um als high zu gelten 
(https://www.mouser.de/datasheet/2/256/MAX17055-1097125.pdf, S.4, VIH 
und VIL). Da ich I2C mit 1,8V betreibe, passt das. Und das ohne 
Pegelwandler. Den IC kann ich unabhängig davon mit der Batteriespannung 
(3V-4,2V betreiben). Stimmt ihr damit überein?

Freundliche Grüße

Simon

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.