Da ich mir ja selbst letztens eine Rolle WS2811-RGB-LEDs zum Rumspielen gekauft hatte und weil in unserem CCCZH (CCC Zürich) Hackerspace noch jemand mit WS2811-Stripes experimentieren wollte (am liebsten mit dem Raspberry Pi), habe ich zur einfachen Ansteuerung solcher LEDs (bzw der WS2811 Chips) über die SPI-Schnittstelle eine kleine Logikschaltung als Umsetzter entwickelt. Dabei war das Ziel, dass die Hardware-SPI-Schnittstelle eines µC direkt verwendet werden kann, ohne Bitbanging und ohne die SPI-Datenworte künstlich zu verbreitern (mehrere SPI-Datenbits entsprechen einem WS2811-Datenbit). Es sollte einfach eine direkte Umsetzung der per SPI gesendeten Datenworte in das WS2811-NRZ-Format erfolgen, und zwar Bit für Bit (also 8 Bit SPI = 8 Bit WS2811-NRZ etc.). Damit sollte es dann auch möglich sein, bei µCs mit integriertem DMA direkt den SPI via DMA anzusteuern, ohne die Pufferspeicher-Grösse durch Datenwortverbreiterung unnötig vergrössern zu müssen. Ausserdem kann man dann auch entsprechend der Datenrate beim WS2811 low speed SPI von 'nur' 400 oder 800 kHz (je nach Speed-Mode) verwenden.
Die hier gezeigte Schaltung verwendet ein Dual Monoflop ( 74HCT4538 ) und ein 4 x 2-Input-XOR ( 74HCT86 ). R1, C1 bestimmen die Pulsdauer bei einem 1-Bit und R2, C2 diejenige bei einem 0-Bit. Im Slow-Mode (bei den meisten WS2811-LEDs implementiert) ist die Pulsdauer für ein 1-Bit ca. 1,2 µs und für ein 0-Bit ca. 0,5 µs, im Fast-Mode jeweils die Hälfte. Die Werte für R und C lassen sich laut NXP-Datenblatt zum 74HCT4538 folgendermassen bestimmen: Pulsdauer(s) = 0,7 x R x C. Die beiden XOR-Gatter U1.1 und U1.2 sind als nichtinvertierende Puffer geschaltet und wären somit rein von der Logik-Funktion her nicht unbedingt nötig. Ich habe sie aber extra mit eingeplant, damit es zu keiner signifikanten Laufzeitverzögerungsdifferenz der SPI-Signale vor den Monoflops kommt. Durch Verwendung von HCT-Logik ist die Ansteuerung (SPI) sowohl mit 5V- als auch mit 3,3V-Pegeln möglich. Natürlich gehören noch 100 nF Entkoppel-Kondis an die Stromversorgungspins beider ICs (nicht im Schaltplan).
Das das jetzt keine grossartige Sache ist, hab ich's mal ins TTT gestellt, aber vielleicht ist's ja für jemanden hier noch nützlich.
Gruss
Neni