Forum: Mikrocontroller und Digitale Elektronik Ansteuerung eines TM1812 mit STM32 o.ä.


von J.K. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich suche nach einer Möglichkeit einen TM1812 LED Treiber des 
Herstellers Titan Micro anzusteuern.
An diesen lassen sich vier RGB LEDs anschließen, die sich dann digital 
in Farbe und Helligkeit regeln lassen.
Für die Datenübertragung zum Treiber wird nur eine Datenleitung 
benötigt, allerdings ist die Bitrate so hoch, dass ich mit meinem ARM 
STM32F107 Mikrocontroller an meine Grenzen stoße! (72MHz)
Ich habe mal einen Auszug aus dem Datenblatt des Treiber-ICs 
hochgeladen. Das ist zwar auf chinesisch, das Timing des Protokolls kann 
man aber gut erkennen.
Für eine logische '0' oder '1' beträgt die Periode immer 1,25us. Soll 
eine '0' gesendet werden, muss für 400ns High-Pegel gesetzt werden, soll 
eine '1' gesendet werden, so ist ein High-Pegel für 850ns erforderlich.
Mein erster grober Gedanke war, alle 1,25us einen Timer-Interrupt zu 
erzeugen, der einen High-Pegel auf die Leitung setzt und dann zu 
überprüfen, ob eine '0' oder '1' gesendet werden soll. Dafür ist der 
STM32 aber zu langsam. Die schnellste Schaltgeschwindigkeit, die ich am 
Ausgang erzielen konnte waren 100ns. Wenn ich dann erst noch 
irgendwelche Abfragen machen muss, komme ich mit dem Timing nicht hin.

Hat jemand eine Idee, wie ich am besten Daten zu dem Treiber-IC senden 
könnte? Andere Hardwarevorschläge gehen natürlich auch!

Datenblatt des Herstellers:
http://titanmec.com/docc/product-downloads-149.html

Danke im Voraus!

Gruß J.K.

von Karl A. (karlauer)


Lesenswert?

Hi,

schon mal überlegt das SPI-Interface dafür zu nutzen?

Ich hatte mir das mal für die Ansteuerung eines TM1809 überlegt. Da es 
dafür Routinen (FastSPI) für 8MHz AVRs gibt, sollte das mit einem 72MHZ 
STM32 locker zu schaffen sein.

Die TMs nehmen es nicht sehr genau beim Timing, das Wichtigste ist, dass 
der Chip die Länge des Startimpuls (0 kurz, 1 lang) unterscheiden kann.

Man könnte z.B. die Bitrate auf 5 MHz setzen. Dann hat ein Bit 200ns und 
8 Bit 1.6us. Will man nun dem Chip eine 1 senden, sendet man 11110000 
über den SPI, will man eine 0 Senden sendet man 11000000.

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.