]>
Commit | Line | Data |
---|---|---|
81517080 MR |
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 | |
bd6d6407 | 11 | - PRU WS28xx firmware: https://github.com/mranostay/ws28xx-lighting-pru |
81517080 MR |
12 | - WS2812B datasheet: http://www.adafruit.com/datasheets/WS2812.pdf |
13 | ||
14 | ||
15 | WS2812B protocol overview | |
16 | ------------------------- | |
17 | ||
bd6d6407 UH |
18 | All values have a +/- tolerance of 150 nanoseconds so the PRU firmware uses |
19 | the slightly different timing values below to sync the high/low transitions. | |
81517080 MR |
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 | ||
bd6d6407 | 25 | Each LED receives and then stores the first 24-bits of GRB ordered data then |
81517080 MR |
26 | passes any more out the Data Output pin to the next LED in the chain. |
27 | ||
bd6d6407 UH |
28 | This functions as a "reverse" shift register and allows the strip length not |
29 | to be defined in the protocol. | |
81517080 MR |
30 | |
31 | ||
32 | Logic analyzer setup | |
33 | -------------------- | |
34 | ||
bd6d6407 | 35 | The logic analyzer used was a Saleae Logic16 (at 5MHz): |
81517080 MR |
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 | |
bd6d6407 | 54 |