I2C funktioniert nicht - Pegel?

Gast #4816115
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
Angehängte Dateien:
#4816125
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.
Gast #4816136
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
Gast #4816185
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
Angehängte Dateien:
#4816204
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.
Gast #4816209
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.
Gast #4816219
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren