Thanks! Both of those sound like it would work. I'd like the PIO to just keep refreshing the displays, updating the framebuffer data whenever I need to. I could easily expand the data to make it fit into 256 bytes, skipping over the empty blocks.DMA does have a circular mode, but that only works with power-of-2 sized buffers; the solution for this case is to use a pair of DMA channels, with one channel doing a 175-byte transfer to the PIO and then chaining to the second channel; the second channel then just reloads the first one to do it again.
The clock rate that the bits output are based on the divider for the state machine the code runs on?
If I have a cyclic buffer, can I write new data to it from MicroPython? Or do I have to signal the PIO with an IRQ to stop and start it again with new data? Lots of moving parts to this to try and wrap my head around.
I'll have to wire that up and try it out, looks very cool. One difference is I need to send bits through a clock/data line as well as light up one of 5 column pins.I have just created a driver for a 4-digit, 7-segment multiplexed display using PIO+DMA. Will probably be easily modified to handle your VFD.
https://github.com/fdufnews/pico_exampl ... s/essaiPIO
The hardest part about new hardware and software is just trying to figure out the syntax. Examples help a lot, thanks.
Statistics: Posted by iansmith6 — Fri Apr 05, 2024 4:56 pm