I have some RGB LEDs that are driven by the popular WS2811 chip made by World Semi. Datasheet is here.
I find the following to be true:
- The datasheet says that the chip includes an oscillator running at 800 Khz.
- The datasheet specifies that to transmit a single data bit to the chip (either a
1), you need to hold the data line high for a specified time, followed by holding it low for a specified time.
- The time taken to transmit a single bit is roughly 1.25 microseconds (usec) (roughly).
- One bit per 2.5 usec gives you a data rate of 800 Khz.
So, whether you are transmitting a
0 or a
1 makes no difference for my question, only suffice it to say you need to "measure" how long the data line is held high. But the oscillator runs at 800 Khz. So, I'm confused: how can the chip determine the length of time you hold the data line high, in order to determine whether you communicated a
0 or a
1, while the oscillator is only running fast enough to read the line once per clock cycle? Seems like the clock needs to run at least double speed to just read the data line twice per data bit, yet even faster than that to read whether the high voltage time is either short or long!
Simply put, how does the chip read bits from the data line at 800 Khz (while the data line needs to be held high and held low) yet the clock only runs at 800 Khz?