pru gpio jitter when streaming from DDR


did anybody eperience a gpio jitter when PRU1 outputs to PRU1_0 - PRU1_11 by writing to R30 ?
The jitter seems to happen only when reading from DDR at the same time on PRU0 via LBBO instruction.
So the the code on PRU1 outputs (reading data from local pru memory) on GPIO while the code on PRU0 reads
(streams) from DDR and writes to local pru memory (prepares data for PRU1). If you are wondering
why PRU1 doesn’t read DDR itself, the reson is DDR reading takes far too many cycles (around 46 in my case)
and I need exact timing of 30 cycles for the gpio output.

When I replaced my streaming routine (reading data from DDR) by programatic generation of data (I also
simulated delay of 46 cycles that the DDR reading takes) on PRU0 , then there was no jitter on gpio driven by PRU1. The code
on PRU1 is the same in both cases (DDR data vs generated data), so I don’t expect the code running on PRU1
causes the jitter. It really seems the only condition affecting the jitter is DDR reading.

Anybody has similar experience ? Is there a way how to reduce / eliminate the jitter while still accessing


Did you ever solve the jitter issue? I too am experiencing jitter but my I am reading GPIO data rather than writing it. I am using PRU1 to toggle a few GPIO lines (clock, chip select, etc.) and then reading several other GPIO lines into the 12kB shared PRU memory. PRU1 then sends an event to PRU0 which copies the data from the shared PRU memory into DDR and then sends an event to the ARM.

All the GPIO manipulation is handled by PRU1. However, I found that if I comment out PRU0’s reads of the shared PRU memory, then my jitter goes away, so the jitter is definitely caused by these memory accesses. PRU0 and PRU1 are never accessing the same addresses (PRU0 reads from one address range within the shared buffer while PRU1 writes to another) so it appears as though there is contention for the bus.