Forum: Mikrocontroller und Digitale Elektronik I2C funktioniert nicht - Pegel?


von Niine (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich verwende zur Sensorabfrage den I2C-Bus. Master ist ein Atmega328 auf 
5V, die Sensoren (1x MPU6050, 2x SI1133) haben 3.3V. Level Shifter ist 
ein PCA9515A, welcher auch funktioniert. Pull-Up ist je ein 10k 
Widerstand (Fehlerquelle?).

Allerdings kann ich keine Adresse der Sensoren erreichen. Und langsam 
verzweifle ich.
Eine Idee habe ich noch. Die angehängten Verläufe sind je SDA und SCL 
des I2C nach dem PCA9515A, also 3.3V high.
Aber ist es normal das sie so abgerundet aussehen? Könnte das vielleicht 
mein Problem sein?
Es wirkt irgendwie als würde da ein Kondensator was glätten oder so. 
Oder liegt es an den Widerständen?

Danke für eure Hilfe.

Grüße,
Niine

von Jim M. (turboj)


Lesenswert?

Niine schrieb:
> Aber ist es normal das sie so abgerundet aussehen? Könnte das vielleicht
> mein Problem sein?

Das kommt durch die 10k Widerstände. Der "glättende Kondensator" ist die 
Summe der Pin-Kapazitäten der Chips. Wenn es so rund aussieht, sollte 
man mit der Frequenz deutlich runtergehen.

Der Masse Kontakt des Scopes ist Mist, die Überschwinger werden viel zu 
stark angezeigt.

Den level Shifter hättest Du Dir schenken können - einfach die 
Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den 
Mega - funktioniert aber.

von (prx) A. K. (prx)


Lesenswert?

Niine schrieb:
> Pull-Up ist je ein 10k Widerstand (Fehlerquelle?).

Zu viel. Wie lang ist die Leitung?

von (prx) A. K. (prx)


Lesenswert?

Jim M. schrieb:
> Den level Shifter hättest Du Dir schenken können - einfach die
> Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den
> Mega - funktioniert aber.

Es verschärft aber die Situation bei relativ hoher Buskapazität 
erheblivh.

von Niine (Gast)


Lesenswert?

A. K. schrieb:
> Zu viel. Wie lang ist die Leitung?
Auf zwei kleine Platinen verteilt. Ich würde insgesamt vll so 10-15 cm 
schätzen.

Jim M. schrieb:
> Das kommt durch die 10k Widerstände. Der "glättende Kondensator" ist die
> Summe der Pin-Kapazitäten der Chips. Wenn es so rund aussieht, sollte
> man mit der Frequenz deutlich runtergehen.
Also tausche ich auf 4k7 Widerstände und reduzier die Frequenz zum 
Testen erstmal auf 10kHz?

> Den level Shifter hättest Du Dir schenken können - einfach die
> Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den
> Mega - funktioniert aber.
Das wäre dann meine letzte Option, wenn es nie geht :-)

Viele Grüße,
Niine

von Niine (Gast)


Angehängte Dateien:

Lesenswert?

Also ich habe jetzt die Widerstände durch 4k3 getauscht und bekomme 
jetzt bei 100kHz diese Kurven (siehe Anhang).
Aber es gibt immernoch kein Sensor sein Acknowledge.
Ist die Qualität so ausreichend der Pegel, oder ist das immernoch der 
Grund?

Vielen Dank!
Niine

von (prx) A. K. (prx)


Lesenswert?

Sieht nun ok aus.

von (prx) A. K. (prx)


Lesenswert?

Um etwas zum Protokoll zu sagen müsste man allerdings beide Signale 
synchron auf einem Bild sehen. Und um etwas zum Code zu sagen, müsste 
man den Code sehen.

Schuss ins Blaue: Die I2C-Adresse besteht aus den oberen 7 Bits des 
Adressbytes. Die Verschiebung um 1 Bit führt gelegentlich zu Verwirrung, 
weil das Adressbyte 0x40/0x41 für die I2C-Adresse 0x20 steht. Mancher 
I2C-Code will diese Adresse als dann 0x20 haben, mancher als 0x40, je 
nach Laune des Entwicklers.

von HildeK (Gast)


Lesenswert?

Niine schrieb:
> Ist die Qualität so ausreichend der Pegel, oder ist das immernoch der
> Grund?

Nein, muss so gehen - zumindest auf der 3V3-Seite. Sehen SDA und SCL 
auch auf der 5V-Seite so aus?
Wenn ja, musst du in der SW suchen ...
Tipp: Handling der Adressen, 7Bit links ausgerichtet, das LSB ist R/W.

von Niine (Gast)


Lesenswert?

Ich habe eben endlich eine Antwort (zumindest vom MPU6050) erhalten, was 
dann ja auch die ordentliche Protokollverwendung bestätigt.

Problem war:
Anscheinend war die Lötverbindung nicht optimal. Hab vorsichtig alle 
Seiten nochmal gelötet. Und nun geht es erstmal.
Endlich kann ich weiterarbeiten :-)

Danke an euch alle für eure Hilfe!!
Vor allem die Signalauswertung und die Widerstandsänderung hat mir sehr 
geholfen.

Danke und einen schönen 2. Advent!
Niine

von (prx) A. K. (prx)


Lesenswert?

Niine schrieb:
> Vor allem die Signalauswertung und die Widerstandsänderung hat mir sehr
> geholfen.

Die Frequenzänderung hat mehr dazu beigetragen als die 
Widerstandsänderung.

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.