Rpi SPI does not seem to Work Correctly With WS2812 #1794
Unanswered
jliriano2000
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Is this a known error?
I can't set all the LED's to Red, Blue or Green solidly. When I set Red, it becomes Yellow, Blue -> Cyan, Green -> Magenta.
Looking at LedDeviceWs2812SPI.cpp under dev_spi, it looks like it is a copy of the same code that is under dev_ftdi. Further, the byte order seems off for WS2812:
uint32_t colorBits = ((unsigned int)color.red << 16)
| ((unsigned int)color.green << 8)
| color.blue;
When packing colors together, green goes into the higher byte, then red, then blue.
Then it does not look like the amount of buffer space is correct:
_ledBuffer.resize(_ledRGBCount * SPI_BYTES_PER_COLOUR + SPI_FRAME_END_LATCH_BYTES, 0x00);
SPI_BYTES_PER_COLOUR = 4. But this should be:
_ledBuffer.resize((_ledRGBCount * SPI_BYTES_PER_COLOUR * 3) + SPI_FRAME_END_LATCH_BYTES, 0x00);
Beta Was this translation helpful? Give feedback.
All reactions