About a year ago, I ordered a few WS2801-type addressable RGB LED strips, and have been very happy with them since. Today I was curious how much they cost nowadays, and if anything new was out in China. It appears that a lot has changed since the last time I looked. Back then there were a few different chips, but the WS2801 was the only one doing 8-bit PWM, now there’s even a chip doing 12-bit PWM! However, it also appears that the protocol that was used back then (basic two-wire SPI) has been replaced by single-wire protocols requiring precise timing.

Seeing as there’s just too much choice and the information is scattered all over the place, I figured I’d do a summary of all I could find. Unfortunately I haven’t been able to actually get engineering samples of any of these strips, but I’m hoping that I can still compile a summary using only the datasheets. So here goes in alphabetical order!

Disclaimer

At this point I’ve only ever touched a WS2801 strip, and all this information is just collected from diverse forums and datasheets when I could find them. I can not guarantee this information is correct, and you should not take my word for it!

DMX512

While technically it’s not a chip type, there are a lot of strips being marketed as DMX512. Basically this is just a generic chip talking the DMX512 protocol. Summarized this means: UART, but converted to RS485 (need a transceiver chip), 512 channels or 170 pixels max, 256 levels (8-bit) per channel, 250kbaud.

D705

I haven’t actually seen anyone talking about these in the western world, but they seem to pop up at Alibaba.com a lot, and most of the controllers there seem to be able to drive them. From the datasheet I found, they seem to be 5-bit per channel using what appears to be a 1.2MHz PWM. Another peculiar thing: They come in two different types: The D705A is the cheap one marketed towards ads, and the D705G has gamma correction built in and should be used for videos that “request for higher display quality”.

Summarized:

SPI (two-wire)

5-bit per pixel (15bpp)

1 pixel per chip (3 channels)

4.5v to 7.5v operating voltage

D705G has gamma-correction

Datasheet: english

Available at

HL1606

The HL1606 was probably one of the first highly available chips. It’s SPI driven, although the chip-select doesn’t quite function as it should, and as such shouldn’t be too difficult to drive with whatever microcontroller you’re driving it with. There is one major drawback though, it basically only supports on or off on each channel. Yes, it has built-in PWM, but that can only be used to automatically fade between the two on and off states of each channel. If you’re willing to sacrifice a lot of CPU power, you can manually PWM it but it won’t be pretty.

Summarized:

SPI (two-wire)

1-bit per channel (3bpp)

2 pixels per chip (6 channels)

3v to 5.5v operating voltage

No gamma-correction

Datasheet: english

Available at:

LPD6803

The LPD6803 is similar to the D705. It’s also SPI driven, has 5-bit per channel, and has a choice of gamma correction. However, instead of different chips, this chip decides on using gamma-correction or not by pulling a pin low or high. Gamma-correction thus doesn’t depend on which chip used, but on the circuit of the LED-strip. Another thing to note is that these chips do not have an onboard oscillator, and the PWM runs off the SPI clock, so you’ll have to keep that running to actually use PWM.

Summarized:

SPI (two-wire)

5-bit per channel (15bpp), but needs SPI clock to stay active

3v to 5.5v operating voltage

Gamma-correction, but depends on LED-strip circuit

Datasheet: english

LPD8806

The LPD8806 is another chip with a high bit-per-channel, coming in just under the WS2801 with 7-bit per channel PWM. It’s also capable of driving two pixels instead of just one seeing as it has 6 channels. A bit of a downside is that there is no publicly available datasheet, so the entire chip is shrouded in mystery.

Summarized:

SPI (two-wire, reversed by adafruit)

7-bit per channel (21bpp)

Unknown operating voltage

Unknown gamma-correction

Datasheet: unavailable

Available at:

TM1803

This appears to be the first chip that actually has an english webpage with information. It’s 3 channels (1 pixel) per chip, 8-bit per channel, PWM frequency of at least 400hz (probably 400 full-cycles per second), but there’s one downside. It’s the first in this list not to use SPI, it’s on one wire, and it’s quite strict on timing. Each bit takes exactly 2.04us, and is split into three pieces of 0.68us where the first is always high, last always low, and the middle the actual bit to be sent. In some LED strips with high-speed mode set, this is even slashed in half!

With the timing of 0,68us, you’d need something with a multiple of 1.47MHz to be able to drive it. A 11,76MHz clock would only be able to execute 8 clock cycles inbetween each signal-change. And you’d have to be damned sure no interrupts will be interfering with that timing.

Apparently there’s a bit of leeway, so you could probably get away with a 20MHz frequency too, but it’s still pretty damned strict.

Summarized:

Single-wire, difficult to drive with a microcontroller.

8-bit per channel (24bpp)

5v operating voltage

No gamma-correction

Datasheet: english (webpage)

Available at:

TM1809

The TM1809 seems to be the big brother of the TM1803, having roughly the same specs yet allowing 9 channels per chip. The one-wire interface is similar, but the timing is slightly different, being 0.6us (600ns) per signal change and thus needing a microcontroller running at a (high) multiplier of 1.667Mhz (16,8MHz maybe?). Apart from that it’s roughly the same.

Summarized:

Single-wire, difficult to drive with a microcontroller.

8-bit per channel (24bpp)

3 pixels per chip

5v operating voltage

No gamma-correction

Datasheet: english (webpage)

Available at:

TLS3001

The TLS3001 is another chip shrouded in mystery. I was only able to find a chinese datasheet at first, but luckily skip @ diyblinky.com has reverse engineered the protocol. It appears to have at least 12-bits/channel, making it a clear winner in that department. The protocol is single-wire serial, but it seems to feature an adjustable baud-rate. Basically this should mean that it’ll still be difficult with interrupts and the like, but you should be able to drive it regardless of the frequency of your microcontroller.

Summarized:

Single-wire, easier (not easy) to drive than other implementations

12-bit per channel

1 pixel per chip (3 channels)

operating voltage: 5v to 17v (?)

No gamma-correction (but do you really need that with 12 bits per channel)

Datasheet: english / chinese, and protocol reversed

Available at

WS2801

The WS2801 was apparently the best buy about a year ago, seeing as I’d actually bought three reels of that stuff back then. Looking at the other chips I only see it being surpassed by the TLS3001’s 12-bit-per-channel, but with a price. Either way, it’s a basic two-wire SPI protocol, 8-bit per channel, 3 channels/1 pixel per chip. There’s no gamma-correction, which means that the jump from 0/256 (off) to 1/256 duty cycle, or even 1256 to 2/256 duty cycle is pretty noticeable. But seeing as LPD6803, for example, gamma corrects a 5-bit value to 8-bit, I doubt anything lower than 8-bit/channel would be different even with gamma-correction.

Summarized:

SPI (two-wire), just raw data, latching is done by not sending anything for a specific time.

8-bit per channel

1 pixel per chip (3 channels)

operating voltage: 3.3v to 5.5v

No gamma-correction

Datasheet: english

Available at:

Conclusion

If you don’t look at the price, the WS2801 still seems to be the winner in my eyes. It’s one of the easier to drive, yet features a full 8-bit PWM. If you need (or just fancy) the 12-bit PWM, the TLS3001 is the only way to go, but it’s risky seeing as the documentation is scarce.

Please let me know (comment on this post) if any of this information is incorrect, or if you’d like to add anything.

Also I’m in the process of trying to order some engineering samples of these, so there’s a chance this will all be updated in the near future.

Updates