summaryrefslogtreecommitdiff
path: root/led/ws2801/README
blob: 4c87282653236e6915ac363e150b7cd9d2e00142 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-------------------------------------------------------------------------------
WS2801 LED strip
-------------------------------------------------------------------------------

This is a capture of data output to a LED universe of 50 RGB LEDs.

Every universe at full capacity has a frame size of 768 bytes and can clock
out at roughly 100 frames per second.

Details:
 - Koen Kooi's evil vendor tree: https://github.com/koenkooi/kernel
 - PRU WS28xx firmware: https://github.com/mranostay/ws28xx-lighting-pru
 - WS2801 datasheet: http://www.adafruit.com/datasheets/WS2801.pdf


WS2801 protocol overview
------------------------

Each LED receives and then stores the first 24-bits of RGB ordered data then
passes any more out the Data Output pin to the next LED in the chain.

There is no CS line but latching is done when CLK is held low for >500 uS.

This functions as a "reverse" shift register and allows the strip length not
to be defined in the protocol.


Logic analyzer setup
--------------------

The logic analyzer used was a Saleae Logic16 (at 5MHz):

  Probe       WS2801 LED strip
  ----------------------------
  1 (black)   Universe #1
  2 (brown)   Clock


Data
----

The data contains various RGB values and frames.

The sigrok command line used was:

  sigrok-cli --driver saleae-logic16 --samples 10M --config samplerate=5mhz \
             -p 0=UNI1,1=CLK -o ws2801_2ch_5mhz.sr