I've now been able to record a fairly long segment of data (25 million samples, covering a few hundred thousand BCLK cycles) and analyse the glitches.
Every point on this graph is the duration of one BCLK cycle, as produced by the RP2040 PIO side-set code above. The duration of the pulses looks like the following:
![Image]()
So, roughly every 113us, there's a characteristic double glitch to the pulse duration. Zooming into a single one of these glitches, we see it's actually made up of several disturbances to the pulse duration (I've seen between 1 and 4), each of which lasts for about ten BCLK cycles (10 points on this graph):
![Image]()
As reported in my first post, initially the PIO speeds up by about 15-20%, then slows down, overshoots, and returns to its original steady frequency.
The DMA IRQ is called to replenish the about every 330us, so that doesn't seem to be directly related to the glitch timing. Clearly something in my system is happening at roughly 113us intervals, and is somehow managing to speed up the PIO frequency (temporarily).
Every point on this graph is the duration of one BCLK cycle, as produced by the RP2040 PIO side-set code above. The duration of the pulses looks like the following:

So, roughly every 113us, there's a characteristic double glitch to the pulse duration. Zooming into a single one of these glitches, we see it's actually made up of several disturbances to the pulse duration (I've seen between 1 and 4), each of which lasts for about ten BCLK cycles (10 points on this graph):

As reported in my first post, initially the PIO speeds up by about 15-20%, then slows down, overshoots, and returns to its original steady frequency.
The DMA IRQ is called to replenish the about every 330us, so that doesn't seem to be directly related to the glitch timing. Clearly something in my system is happening at roughly 113us intervals, and is somehow managing to speed up the PIO frequency (temporarily).
Statistics: Posted by cgj — Fri Aug 30, 2024 9:43 pm