In the case of flip it should be reasonably easy - make it run in the background, but block if another SPI.send was in progress. That way you could just put a SPI.send([]) at the end to force it to wait for all the active sends to finish before returning.
In terms of STM32 support, I'd look at the tv library - that uses DMA SPI for the TV output. However it's potentially a bit tricky choosing the correct DMA device in a way that works across all versions of STM32.
Then there's nRF52 (and also STM32LL) as well - I believe there are some drivers that handle DMA'd SPI. Last time I looked there was a bug that meant that 1 byte sends failed, but in the newer SDKs I'm using now that's probably fixed.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
In the case of flip it should be reasonably easy - make it run in the background, but block if another
SPI.send
was in progress. That way you could just put aSPI.send([])
at the end to force it to wait for all the active sends to finish before returning.In terms of STM32 support, I'd look at the
tv
library - that uses DMA SPI for the TV output. However it's potentially a bit tricky choosing the correct DMA device in a way that works across all versions of STM32.Then there's nRF52 (and also STM32LL) as well - I believe there are some drivers that handle DMA'd SPI. Last time I looked there was a bug that meant that 1 byte sends failed, but in the newer SDKs I'm using now that's probably fixed.