Probleme beim Ansteuern von LEDs mit dem MM5450

Zuerst, was ist mein Endziel: 24 RGB-LEDs mit einem Mikrocontroller anzusteuern, der seriell mit einem Micrel MM5450 LED-Treiber verbunden ist . Es wäre schön, alle einzeln ansteuern zu können (72 LEDs), aber ich werde mich (wie ich es getan habe) mit dem Multiplexen begnügen und nur jeweils eine Farbe ansteuern. Im Fall des MM5450 verwende ich 3 Ausgänge, um 3 Transistoren anzusteuern, einen für jede Farbe.

Hier ist nun das Problem, das ich habe.

Ich verwende das PLCC44-Paket, das anscheinend einige Unterschiede zum Standardtext im Datenblatt aufweist. Beispielsweise bezieht sich das Datenblatt auf 35 Datenbits, aber der PLCC hat nur 34 Ausgangspins statt 35 im DIP.

Nur um meine Füße nass zu machen, habe ich 4 LEDs an die Ausgangspins 1 bis 4 angeschlossen und den Rest getrennt gelassen. Ich habe VDD und VSS (keine Entkopplungskondensatoren) verdrahtet, einen 100K-Pot auf Pin 21 (Helligkeitssteuerung) und einen 1nF auf denselben Pin gelegt, wie das Datenblatt vorschlägt.

Ich habe versucht, DATAENABLE mit GND, mit VCC und mit einem Pulldown-Widerstand zu verdrahten, aber es hat auch nicht funktioniert.

Die Symptome sind, dass ich seltsame Ergebnisse erhalte, nachdem ich Daten mit dem im Datenblatt angegebenen Timing gesendet habe. Wenn ich zum Beispiel alle Bits Null sende, leuchten beim Einschalten nur die LEDs 1, 3 und 4 auf. Setzen Sie die UC zurück und dann leuchten die LEDs 2, 3 und 4 auf. Wenn ich nur ein Bit hoch sende, leuchten die LEDs 1 und 4, und wenn ich dann die UC-LEDs 3 und 4 zurücksetze, leuchten sie auf. Nur zur Verdeutlichung, wenn ich Reset sage, bedeutet dies, dass ich die Reset-Leitung des Mikrocontrollers aktiviere, der mein Programm erneut startet (und einen Bitstream an den LED-Treiber sendet).

Ich kann kein klares Muster dessen erkennen, was hier passiert. Kann mir jemand mit mehr Erfahrung mit diesem Chip (oder einem Vorschlag für einen völlig anderen Chip, der meine Ziele erreichen wird) helfen?

Beifall

Bearbeiten:

Ok, habe noch ein paar Tests gemacht und einen Speicherbereich an Daten und Uhr angeschlossen. Hier sind meine Erkenntnisse:

Uhr und Daten tun genau das, was ich ihnen sage. Wie vorgeschlagen, habe ich Uhr und Daten auf meinem PORTB und die Datenfreigabe auf meinem PORTC platziert, falls das wichtig ist.

Meine Datensequenz sieht so aus: Daten: Startet niedrig Datenfreigabe: Startet hoch Datensequenz: 0 - [Datenfreigabe niedrig] - 1 - 34 Datenbits - 0 - 0 - [Datenfreigabe hoch]

Im Moment arbeite ich in den 10-ms-Impulsen. Da ich ein Steckbrett verwende, das über lange Klemmdrähte mit meinem Devboard verbunden ist, habe ich die Form der Takt- und Datensignale auf Klingeln und Signal ziemlich gut analysiert.

Aus den Symptomen geht hervor, dass mein Bitstream nicht mit dem Chip synchron ist ... Mir gehen die Ideen aus

Antworten (3)

Ich vermute, das Problem besteht darin, dass Sie die Datenaktivierungsleitung mit dem Mikrocontroller steuern müssen. Stellen Sie es beim Zurücksetzen auf hoch. Stellen Sie es dann kurz vor (mehr als 100 ns) niedrig ein, bevor Sie mit der Datenübertragung beginnen. Bringen Sie es nach den 35 Bits wieder hoch.

Außerdem erklärt das Datenblatt den fehlenden 35. Pin, über den Sie sich in Anmerkung 1 auf Seite 1 gewundert haben. Im MM5450 wird er durch die Datenaktivierungsleitung ersetzt.

Das war auch mein Gedanke. Siehe Abbildung 5 im Datenblatt für das Zeitdiagramm. Es sieht so aus, als würde es einen Mode 0 SPI-Bus verwenden (SPI Chip select = MM5450 data enable, Clock = clock, MOSI = data und MISO = NC), also könnten Sie versuchen, ein SPI-Peripheriegerät zu verwenden, um einfacher mit ihm zu kommunizieren.
Das habe ich versucht. Das Problem ist, dass wenn ich DE an einen Ausgangspin meines uc anschließe, es von der Datenleitung angesteuert wird. Wenn ich zum Beispiel DATA hoch setze, spielt es keine Rolle, ob ich DE hoch oder niedrig setze, es folgt DATA. Aus dem Datenblatt geht hervor, dass DE die Schiene eines internen Operationsverstärkers ist, der DATA als Eingang hat? Werde ich verrückt?
Übrigens habe ich das Obige sowohl mit einem Pullup als auch mit einem Pulldown an meinem Ausgangspin versucht.
Obwohl das Symbol für einen Operationsverstärker tatsächlich ein Dreieck ist, würde ich vermuten, dass das Dreieck im Datenblatt einen Eingangspuffer darstellt und die Linie, die oben kommt, eine Linie darstellt, die diesen Puffer aktiviert. Da DE und DATA beide Eingänge des MM5450 sind, würde ich vermuten, dass Ihr Problem auf der Seite des Mikrocontrollers liegt. Ich würde versuchen, zwei Ausgänge unabhängig voneinander am Mikro arbeiten zu lassen, und dann überprüfen, ob sie immer noch unabhängig voneinander funktionieren, wenn Sie sie an den MM5450 anschließen. Sie sind wahrscheinlich nah dran – bleiben Sie dran.
Übrigens, welches Mikro verwendest du?
Es ist ein pic18f4550 auf einem Entwicklungsboard von Mikroe

Ein paar Dinge über die Verwendung des MM5540 zum Multiplexen von LEDs ... Die Datenaktivierungsleitung benötigt wirklich einen Pulldown-Widerstand. Wenn ich den Chip von einem Arduino aus mit Strom versorge, habe ich mehr Glück, wenn ich ihn entweder niedrig binde oder an einen digitalen Ausgang anschließe und einen Widerstand (1k) an Masse anschließe.

Der Rest des Chips ist darauf ausgelegt, Strom zu SENKEN, nicht Spannung zu liefern. Wenn man sich das Datenblatt genau ansieht, setzt OFF die Ausgänge auf 3V. Die positive Seite der Diode sollte also hoch sein, 3 V reichen aus, und die Anode sollte sich an einem der Ausgangsstifte befinden, wo die Spannung abfällt, um den durch die Diode fließenden Strom zu senken.

Schließlich ist die Helligkeitsregelung auch eine Stromsenke. In meinen Händen, wenn ich das obere Ende des Helligkeitssteuerwiderstands an 5 V binde, 2 kOhm Quellen etwa 600 Mikroampere, sodass der Chip 12 mA / Diode sinken kann, was ungefähr dem entspricht, was ich normalerweise will.

Sie müssen die Datenfreigabe verwenden. Beim Übergang wird der Seriell-zu-Parallel-Puffer zurückgesetzt. Die nächsten 35 Taktbits laden Daten in den Puffer. Der 35. überträgt dann den Puffer zu den Ausgängen.

Wenn Sie die Datenaktivierung nicht verwenden, ist es möglich, dass die Synchronisierung verloren geht.

Beachten Sie auch die maximale Betriebsdrehzahl. Klingt so, als wären Sie damit fertig.