Hallo! :) Ich betreibe auf einer Platinen einen AVR ATxmega16D4, welcher den LED Treiber TLC5940 von Texas Instruments via SPI anspricht. Der XMEGA läuft mit seinem internen 32 MHz Takt und bei 3.3 Volt. Das SPI zum TLC5940 taktet mit 16 MHz. Der 32 MHz Takt des XMEGAs wird direkt an einem Pin ausgegeben und als Takt für die PWM Steuerung des LED Treibers verwendet (GSCLK). Damit werden die Schieberegister im LED Treiber angesteuert und mitunter auch die Taktung des PWMs für die LEDs vorgegeben. Genau mit dieser 32 MHz Taktleitung gab es ein Problem ! Sporadisch trat der Fall auf, dass die LEDs deutlich zu flackern begonnen haben. Mitunter häufiger wenn der TLC5940 sehr heiß geworden ist bzw. er gerade sehr viele LEDs auf maximalster Helligkeit treibte. Mehr oder weniger durch Zufall bin ich drauf gekommen, dass das Problem an der 32 MHz Taktleitung GSCLK liegt. Sobald ich meinen Oszilloskoptastkopf an diese Leitung setzte funktioniert alles wieder wunderbar! In Folge habe ich dann an die Leitung einfach mal einen 15 pF Kondensator angehängt - genau diesen Wert hat nämlich mein Tastkopf! Wunderbar, Problem gelöst ! :D Obwohl ich mit diesem Kondensator zwar die Symptome des Problems bekämpft habe, wüsste ich doch schon gerne was den die Ursache dafür war/ist. Ich habe sehr viel schon im Internet recherchiert und bin zum Thema "clock termination" auf sehr viele Beiträge u. Artikel gestoßen. Letztendlich fand ich eine AC termination am passendsten, weil ich diese auch auf einer Platine im Nachhinein leicht nachbestücken kann (R + C von der Leitung auf GND schalten). Folglich habe ich dann für meine Leitung die passenden Widerstands- und Kondensatorwerte errechnet - wie in diesem Artikel beschrieben (http://www.bitechnologies.com/pdfs/acterm.pdf) Einige Details zu dieser 32 MHz Leitung auf meiner Platine: Höhe: 35 µm Länge: 45 mm Dicke: 20 mil (0.5 mm) PCB Dicke (Substrat): 1.6 mm (63 mil) IMPEDANZ Z folglich ~ 115 Ω (http://www.eeweb.com/toolbox/microstrip-impedance/) Da der gewählte Widerstand R bei der AC termination ja kleiner sein soll als die Impedanz der Leiterbahn setzte ich dafür mal einen 100 Ω Widerstand fest. Wie im verlinkten Artikel oben beschrieben (S. 2, rechts) folgt dann die Berechnung des Kondensators nach ...
Ich hab dann auch gleich mal auf meiner Platine diese ganzen Werte ausprobiert und gemessen: (mit RIGOL DS1102E - 100 MHz - 1 GSa/s) GSCLK - 32 MHz normal - m. 22pF + 100 Ω - m. 100pF + 100 Ω SCLK - 16 MHz normal - m. 22pF + 100 Ω - m. 100pF + 100 Ω ERGEBNIS: Nur mit 22 pF + 100 Ω Beschaltung läuft der LED Treiber ohne Probleme. Mit zu wenig (0) oder zuviel (100 pF) Kapazität fängt das herumflackern wieder an. --- Zu meiner Frage. Ist diese Vorgehensweise eigentlich wirklich richtig? Macht es Sinn eine 45 mm lange Leitung zu terminieren ??? Normalerweise macht man dass doch nur bei Leitungen ab 10-20 cm und noch höheren Takten. Ich bin mir einfach nicht sicher ob ich hier an der falschen Ecke die Schaltung optimiere :/ Das bringt mir bis jetzt Kopfzerbrechen, darum wollte ich mal hier fragen. :) Desweiteren frage ich mich ob mein 32 MHz Signal vom XMEGA wirklich so grotig - beinahe sinusförmig aussieht -, oder mein Oszi die notwendigen Oberschwingungen nicht mehr messen kann. Viele Grüße aus Österreich, Mario