Forum: Mikrocontroller und Digitale Elektronik I2C Signal beurteilen


von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe gerade das erste mal ein DSO bzw MSO in der Hand. Dies teste 
ich gerade an einer Schaltung bei der ein SSD1306 OLED nicht immer 
zuverlässig initialisiert wird...

Nun ist das Clock Signal relativ abgerundet am Anfang und auf dem Data 
Signal sind auch Störungen(?) vorhanden.

Was sagt euch die Darstellung? Mir fehlt aktuell noch die Erfahrung das 
einzuschätzen

von uff basse (Gast)


Lesenswert?

Tom schrieb:
> Mir fehlt aktuell noch die Erfahrung das einzuschätzen

Mir fehlt aktuell noch die Darstellung wie du genau misst.
Masseprobleme?
Die Pullups des I2C Bus dürften niederohmiger werden.

von Programmierer (Gast)


Lesenswert?

Die runden Flanken sind normal, das sieht bei I2C immer so aus. Die 
Störungen sind schon eher verdächtig.

von uff basse (Gast)


Lesenswert?

Programmierer schrieb:
> das sieht bei I2C immer so aus

Nein! Vielleicht bei deinen mistigen Schaltungen.

von Michael_O (Gast)


Lesenswert?

Oder bei mistigen Ozys derem Grenzfrequenz im Bereich der I2C Frequenz 
liegt und die deshalb aus jedem Rechteck einen Sinus extrahieren ;-)

MfG
Michael

von Elektroprofi (Gast)


Lesenswert?

Michael_O schrieb:
> derem Grenzfrequenz im Bereich der I2C Frequenz

Ganz sicher ist das hier nicht der Fall. Das ist reines Ladeverhalten 
der Kapazitäten in der Schaltung. Die Einbrüche, die man sieht, sind 
Takteffekt, die von nicht ausreichend entkoppelten Treiberchips 
herrühren (können).

von Wolfgang (Gast)


Lesenswert?

Tom schrieb:
> Was sagt euch die Darstellung? Mir fehlt aktuell noch die Erfahrung das
> einzuschätzen

In die SDA-Leitung könntest du versuchsweise mal einen kleinen 
Widerstand (Wert 10..15% vom Pullup) hängen, damit du sehen kannst, 
welche L-Pegel vom Master und welche vom Slave kommen.

von Bauform B. (bauformb)


Lesenswert?

Tom schrieb:
> [eine] Schaltung bei der ein SSD1306 OLED nicht immer
> zuverlässig initialisiert wird

aber wenn die Initialisierung mal funktioniert hat, läuft es lange Zeit 
fehlerfrei? Dieser Chip braucht eine relativ komplizierte 
Einschaltsequenz mit 2 Spannungen und einem langen Reset-Impuls. Und 
dann dauert es immer noch 100ms, bis er wirklich läuft.

Falls das alles intern auf dem Modul gemacht wird, muss evt. die 
Versorgungsspannung vor dem Einschalten wirklich Null sein. So ähnlich 
wie beim PC: auschalten, 10 Sekunden warten, einschalten.

Noch was eher unwahrscheinliches: Laut I2C-Manual UM10204 muss der Chip 
intern für eine Data Hold Time von 300ns sorgen, SDA darf sich 0ns nach 
SCL ändern. Im SSD1306-Datenblatt sieht es so aus, als ob man die 300ns 
extern einhalten muss. Auf dem Bild ist die Zeit kürzer (grob 
geschätzt).

: Bearbeitet durch User
von AtariST (Gast)


Lesenswert?

Ich sehe die Störungen als Übersprechen zwischen SDA und SCL. Vielleicht 
ist der Leiterbahnabstand zu gering.

von Tom (Gast)


Lesenswert?

Hallo,
Vielen Dank schonmal für eure wirklich guten Antworten. Das ist sehr 
interessant für mich und ein gutes Testobjekt. Mit einem Oszi sieht man 
das ja erst überhaupt noch aus einem ganz anderen Blickwinkel.
Mir ging es erst einmal ja darum, ob das Signal typisch ist oder 
fehlerbehaftet.
Das Display hängt an einem SAMD21, auf dem Bus hängt noch eine RTC 
AB1805, dort in der Nähe sind auch die Pull-ups, in meinem Plan hatte 
ich 2k2 eingezeichnet, müsste aber nochmal nachmessen um das zu 
bestätigen. Ich meine die RTC brauchte solch niedrige. Die Platine lag 
jetzt eine Weile in der Ecke.
Das Display meine ich ging anfangs zuverlässiger. Mal gehts an, mal 
nicht, mal zeigt das Display auch teils kryptischer Mist. Wenn man die 
Tastköpfe angeklemmt hat, scheint es immer anzugehen.  Mein Verdacht 
wäre ein Lötfehler oder etwas mit den Pull-ups. SMD ist alles 
handgelötet mit Heißluft und 0603 als Standard. Die Abstände von Data 
und Clock müsste ich nochmal nachschauen. Ich dachte dass das bei i2c 
nicht so kritisch wäre!?

Die Tastköpfe sind direkt am Display angeklemmt und die Masse beziehe 
ich auch direkt vom Board. Die Tastköpfe stehen auf 10x

„welche L-Pegel vom Master und welche vom Slave kommen.„
Das verstehe ich nicht wie das gemeint ist?

Vielen Dank

von Tom (Gast)


Lesenswert?

Elektroprofi schrieb:
> die von nicht ausreichend entkoppelten Treiberchips herrühren (können).

Ah da wollte ich auch noch nachfragen was entkoppelt in diesem 
Zusammenhang bedeutet?

von Erich (Gast)


Lesenswert?

Tom schrieb:
> was entkoppelt in diesem
> Zusammenhang bedeutet

Bei jedem IC auf deiner Platine sollte (mind.) ein Keramik-Kondensator 
100 nF sein, immer möglichst kurz und direkt zwischen Gnd und Vcc des 
jeweiligen Bauteils. Bei ICs mit mehreren Gnd/Vcc (grösser 44 Pin ect.) 
jeweils einer.
Zusätzlich am Spannungseingang der Platine ein Elektrolyt- oder 
Tantal-Kondensator >= 100 uF.
Verbindungen zum Display möglichst kurz. Falls am Display kein 
Elektrolyt- oder Tantal-Kondensator sitzt, unmittelbar am Displaystecker 
nochmals solch einen positionieren.
Alle Gnd und Vcc Verbindungen mit möglichst breiteren Leiterbahnen.
Lötaufbau statt Steckbrett, sollte klar sein.

Gruss

von uff basse (Gast)


Lesenswert?

Erich schrieb:
> Bei jedem IC auf deiner Platine sollte

Endlich mal wieder jemand der sich des Themas Kondensatoren
ausreichend annimmt.

Tom schrieb:
> in meinem Plan hatte
> ich 2k2 eingezeichnet, müsste aber nochmal nachmessen um das zu
> bestätigen.

Egal was jetzt drin ist, es ist zu hochohmig. Da Clock und Daten
gleiche Qualität aufweisen ist es auch kein Lötfehler. Ich vermute
dass Display und Clock IC jeweils schon auf dem Breakout-Board
10K Pullups haben, und da sind die resultierenden 5K für 400KHz
Clock ein bisschen knapp. Ich habe aber solche Konstellationen
auch schon problemlos mit 400KHz betrieben.

von Peter D. (peda)


Lesenswert?

Tom schrieb:
> Was sagt euch die Darstellung?

Die ist einwandfrei, die Pullups sind schön zu erkennen.
2,2k ist ein guter Wert, der die max 3mA des I2C-Standards einhält. Es 
bringt nichts, den Pullup kleiner zu wählen.
Nur mit Bus-Extender (P82B715) darf man kleiner werden.

Das leichte Übersprechen dürfte vom gemeinsamen GND zum Oszi herrühren, 
ist also nur ein Meßfehler.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Ok ich dachte mit "die von nicht ausreichend entkoppelten Treiberchips" 
wäre was an den Signalleitungen gemeint. Die Spannungsanschlüsse an den 
ICs haben jeweils 100n Kondensatoren.
Elkos habe ich nicht auf der Platine, da die so große Leckströme bei 
meinem batteriebetriebenem Gerät hatten, dafür zwei größere MLCCs.

Ich habe nochmal versucht genau die Anfangssequenz abzupassen und es 
scheint, als ob die Datenleitung etwas einbricht (viel ist es nicht von 
3.3V auf ca 3V), aber daraufhin habe ich das Kabel vom Netzteil zur 
Platine getauscht und es scheint jetzt zuverlässig anzugehen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

AtariST schrieb:
> Ich sehe die Störungen als Übersprechen zwischen SDA und SCL. Vielleicht
> ist der Leiterbahnabstand zu gering.
Oder es ist nur 1 der beiden Masseklemmen irgendwo an GND angeschlossen. 
Oder die Masse ist ungünstig geführt. Oder sonst was...

> und es scheint jetzt zuverlässig anzugehen
Wenn irgendwas "scheint", dann bestenfalls die Sonne. Aber eine 
elektronische Schaltung sollte nicht nur "scheinbar zuverlässig" sein.

Tom schrieb:
> Mit einem Oszi sieht man das ja erst überhaupt noch aus einem ganz
> anderen Blickwinkel.
Ganz meine Worte. Und dann ist es wichtig, den Tastkopf richtig zu 
verwenden. Eine Massefeder am Tastkopf (Stichwort für Google) wäre 
ideal. Alles, was davon abweicht, macht die Sache schlechter.

Und mein Geheimtipp, wo auch viele große Augen machen: miss Masse gegen 
Masse. Ja, genau: die Masseklemme links unten an die Masse und die 
Tastkopfspitze rechts oben an die Masse. Was siehst du?
Ein Rauschen um +-0mV? Gut!
Oder hektische Aktivität im 500mV Bereich? Übel!

: Bearbeitet durch Moderator
von Tom (Gast)


Lesenswert?

Hallo beide Masseklemmen direkt vorne am Tastkopf waren direkt mit der 
Platine am gleichen Punkt verbunden

von c-hater (Gast)


Lesenswert?

Tom schrieb:

> ich habe gerade das erste mal ein DSO bzw MSO in der Hand. Dies teste
> ich gerade an einer Schaltung bei der ein SSD1306 OLED nicht immer
> zuverlässig initialisiert wird...

Naja, man misst nicht mit 1:10-Tastkopf, wenn es nicht nötig ist. Und 
wenn doch, sagt man dem Oszi wenigstens, dass man einen solchen Tastkopf 
dran hat, damit die Darstellung der Pegel der Realität entspricht.

> Nun ist das Clock Signal relativ abgerundet am Anfang und auf dem Data
> Signal sind auch Störungen(?) vorhanden.

Wenn man mal die Pegel mit 10 multpliziert, sind das für I2C sehr gute 
Signale. Die leichte Rundung an der steigenden Flanke ist völlig normal 
für OpenDrain. Die paar lächerlichen Störungen sind durch Übersprechen 
zwischen den beiden Signalen problemlos erklärbar und so gering, dass 
sie keine Rolle spielen sollten.

> einer Schaltung bei der ein SSD1306 OLED nicht immer
> zuverlässig initialisiert wird

Software-Problem. Sehr wahrscheinlich irgendwelche Timing-Constraints 
verdaddelt. Wetten?

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.