]> sigrok.org Git - sigrok-dumps.git/blob - led/ws281x/README
ws281x: Add WS2812B protocol dump
[sigrok-dumps.git] / led / ws281x / README
1 -------------------------------------------------------------------------------
2 WS2812B LED strip
3 -------------------------------------------------------------------------------
4
5 This is a capture of data output to 4 LED universes of 256 RGB LEDs.
6 Every universe has a frame size of 768 bytes and the dumps are clocked at
7 roughly 100 frames per second.
8
9 Details:
10  - Koen Kooi's evil vendor tree: https://github.com/koenkooi/kernel
11  - PRU WS281x firmware: https://github.com/mranostay/ws28xx-lighting-pru
12  - WS2812B datasheet: http://www.adafruit.com/datasheets/WS2812.pdf
13
14
15 WS2812B protocol overview
16 -------------------------
17
18 All values have +/- tolerance of 150 nanoseconds so the PRU firmware uses
19 slightly different timing value below to sync the high/low transitions.
20
21   Logic low  -> high 0.40 uS -> low 0.85 uS (1.25 uS)
22   Logic high -> high 0.80 uS -> low 0.45 uS (1.25 uS)
23   Latch      -> low 50 uS
24
25 Each LED receives and the stores the first 24-bits of GRB ordered data then
26 passes any more out the Data Output pin to the next LED in the chain.
27
28 This functions as a "reverse" shift register and allows the strip length not to
29 be defined in the protocol.
30
31
32 Logic analyzer setup
33 --------------------
34
35 The logic analzyer used was a Saleae Logic16 (at 5MHz).
36
37   Probe       WS2812B LED strip
38   -----------------------------
39   1 (black)   Universe #1
40   2 (brown)   Universe #2
41   3 (red)     Universe #3
42   4 (orange)  Universe #4
43
44
45 Data
46 ----
47
48 The data contains various RGB values and frames.
49
50 The sigrok command line used was:
51
52   sigrok-cli --driver saleae-logic16 --samples 10M --config samplerate=5mhz \
53              -p 0=UNI1,1=UNI2,2=UNI3,3=UNI4 -o ws281x_4ch_5mhz.sr