The TLC5973 is similar in concept to the WS2811, but better in a number of ways - it has 12 bit resolution, which is essential for monochrome to get a decent greyscale, the protocol works over a range of clock frequencies, and with some sneaky tricks can be driven from an SPI port.
Hi Mike, I'm a long-time fan. I happened upon this thread while searching for discussion on the TLC5973, since I'm planning on using it in a project. Rather than bit-banging the data line, I like your idea of using an SPI port to talk to it. Does your sneaky trick involve using each byte out of the SPI to transmit two bits to the TLC5973? It looks like you could send a zero as "1000" (assuming MSB first) and a one as "1010". Am I close?
Thanks,
Aaron T.
More efficient than that - you AND the data out and the clock, so you have 2 SPI bit times per TLC5973 bit. Using a 74HCT08 also gives you a 3.3v to 5V level translator.
There is an additional fiddle to get a whole number of TLC5973 words, including the latch gaps, into a whole number of 32 bit SPI words, making use of the fairly wide timing tolerance (adding occasional SPI 'idle' bits) and a big lookup table.
If you're not too concerned about speed then you can use a significantly simpler scheme.
Some fiddliness using SPI comes from having to have the 3.5 to 5.5 Tcycle end-of-sequence gap, as it's a pain if this is can't be aligned with SPI words.