FastSPI Funktion (setRGBData)

ich habe mittlerweile ziemlich viele ICs durchprobiert. Darunter WS2801/3, TM1804, HL1606, TLC5941, UCS5903/LPD6803 und natürlich den LPD8806.

Der HL1606 ist eine Katastrophe, dass er nicht so viel kann ist nicht mal das Problem, auch elektrisch ist er sehr störanfällig.

Der WS280/3 ist ok, allerdings ist die 500us "Latch"-Pause nervig. Das Tm1804-Protokoll hat sowieso ein vergleichsweise aufwendiges Timing, hat aber durch das 1-Draht Protokoll natürlich Vorteile bei der Verdrahtung. Da man Hardware-SPI eh nicht verwenden kann, kann man jeden Port eines uC nutzen und sogar relativ leicht einige Strips parallel ansprechen.

Der LPD8806 ist jedoch m.E. für den Programmierer das angenehmste IC, denn er ist nahezu unempfindlich gegenüber Timing. Da die PWM-Informationen immer mit einer Startsequenz aus einigen 0-Bytes eingeleitet wird und die Daten angezeigt werden, sobald der Chip alle Informationen hat, kann auf der einen Seite die volle Bitrate des Hardware-SPI reinjagen (bis zu 20MHz hat bei mir problemlos funktioniert), ohne irgendwelche Pausen einbauen zu müssen. Auf der anderen Seite kann man über einen Debugger die PWM-Informationen sogar per Einzelschritt dem Strip übergeben und werden LED für LED angezeigt. Das kann bei machen Animationen durchaus praktisch sein.

Dass die PWM nur 7-Bit sind ist zwar ein kleiner Wermutstropfen, aber wer mehr Stufen braucht kann dank der hohen Datenrate ein paar zusätzliche Bits simulieren.