Possible to modify OctoWS2811 to work with SK9822 LED Strip?

Flanigan2004

New member
I am trying to build a very large POV(persistance of vision) display and have, as someone who is pretty new to Teensy and Arduino generally, I seem to have bitten off more than I can chew, or at least more than I planned on chewing. Anyways, I have calculated that I need to refresh my 4 118-led-long strips 3280 times per second :D. You can probably already see the problem here, as that would require a bitrate of over 12mb/s per strip, while the WS28XX can only do 800kb/s. Also, hypothetically, if one were dumb enough to buy 4 ws2812B strips and install them on the giant spinning globe of death they already built, the low pwm rate would look funky in motion (don't ask me how I know :p)

So, I'm planning to buy some SK9822 led strips(offbrand Adafruit dotstars) and use those as the datarate of 30mb/s is plenty and the pwm frequency is higher. But, I need to drive 4 of them at once and the best solution would seem to be getting them going on a single Teensy 4.0, as then I could potentially use movie2serial to show images on the display, although right now I'm just trying to draw a vertical line. But, simply using FastLED won't work because it's too slow when doing 4 at once. So, what would it entail to modify octoWS2811 to work with SK9822 strips at a higher datarate, and would the Teensy be able to handle the computational load that would generate?

Also, if you have any further comments on my dilemma or a potentially better way of getting this working please let me know.
 
FlexSPI can probably do it, though writing a custom FlexSPI driver is not for the faint of heart.

Easiest option would probably look like using 4 Teensy 4.0 boards with SPI, or 2 boards using SPI & SPI1. I'm sure you wish to use only 1 board. But unless you're planning to mass produce this as a product, just throwing extra hardware at the problem may be the most time effective way to build it.

SPI can do 30 MHz. But whether your LEDs are really 30 MHz capable when you have a long strip is a question you should consider before you go far down the path of fabricating a lot of physical hardware. Here's an article I wrote years ago, when Adafruit & others where claiming APA102 was superior and capable of extreme speeds, and FastLED had a 24 MHz default on Teensy (it's since been changed to 12 MHz default).

https://www.pjrc.com/why-apa102-leds-have-trouble-at-24-mhz/

I highly recommend testing those SK9822 at the actual strip length you will use. If the project will be run outdoors, best to test at the hot & cold extremes.

Modifying OctoWS2811 for this use probably isn't practical. Probably could be done for several MHz per pin, but unlikely to work in the 20-30 MHz range.

SAI might be able to do it, as the first SAI port has 4 output pins. I believe the max SAI bitrate is 25 MHz. The challenge with SAI is it's designed for the bit clock to run continuously because it's meant for audio. How you'd shut it off right at the end of your data pattern, I'm not sure.

Teensy 4 is probably plenty fast enough to handle the computational load. Of course, there is the caveat you've not mentioned the specific graphics you want. Playing fixed patterns from memory involves almost no CPU load at all. If you do something like several trig functions per pixel, keeping up with 1.47 million pixels/sec could be a challenge and might need to be done with table lookups or lower accuracy polynomials.
 
Thank you so much for the quick reply. It's really amazing everything you do with Teensy and then being so willing to help out. I might take a stab at the Flexio approach to see if I can get it going on one Teensy 4.0. I don't really know what I'm gonna do but I'll post on here whenever I get it figured out.

Fortunately 12mhz or slightly more should be sufficient although I have concerns about that too as my current setup involves the signal going through a slip ring and about 6 feet of cat-6, although it could potentially be moved closer.
 
Back
Top