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
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.
Oder bei mistigen Ozys derem Grenzfrequenz im Bereich der I2C Frequenz
liegt und die deshalb aus jedem Rechteck einen Sinus extrahieren ;-)
MfG
Michael
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).
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.
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).
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
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?
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
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.
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.
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
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!
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?