I have a board where I'm playing audio at 22khz and I'd like to also update a short string of Neopixels (less than 10). I've only got 45 microseconds between each sample, and I have to transmit 16 bits to my DAC every time, so I may not even have the 30 microseconds between each sample required to send one full pixel's worth of data.
I was looking at Adafruit's tutorial here: https://learn.adafruit.com/adafruit-neopixel-uberguide/advanced-coding
And clearly, I can't hold the line low at any point for longer than 50us or the data will latch into the pixels. and the next bit of data I send will go to the first pixel.
However, I'm wondering if perhaps I could hold the line high longer than usual, and what will happen if I do.
For example, is the pixel keying off the length of the low signal after the high signal to decide if a bit is 0 or 1, or is it keying off the length of the high time, and the length of the low after that doesn't matter as long as it's not so long (50us) that it causes the pixel to latch the data? Does it only decide what bit was sent after the low signal goes high again? It seems like it would because otherwise it might load a new bit when the intention was to latch the pixel. I guess I should look at the Arduino lib and see what they do at the end of the data transfer... either they take the signal high like the datasheet shows at the end, then go low for 50ms, or they'd just hold it low after the last bit was transmitted, which would probably mean the high time is how it decides what bit it was.