Hello,
I am optimizing throughput on the mibspi peripheral and have found that MIBSPI with a transfer group size of 128 to be the most performant. The peripheral returns complete after every transfer and decrements ICOUNT, until ICOUNT is 0 at which point I know that my transfer is completed.
I also have experimented with NOBRK mode which will use a BUFID and invoke a DMA operation and increment ICOUNT automatically and the transfer will not return until ICOUNT is 0. This is great because I dont have to service the peripheral until everything is transferred, but I have only had access doing 1 word at a time because NOBRK only operates on a single buffer. This ends up having much less throughput than the 128 word dma transfers + servicing.
My question is, is there anyway to combine the two? I have tried to set up the two in combination but what ends up happening is that when BUFID is reached the sequencer invokes DMA and the memory is filled properly and ICOUNT decremented as expected but BUFID is not reset to send the previous, now filled with fresh data, transfer buffers.
Example:
Data = {1,2,3,4,5,6,7,8,9,0}
TG Size 2, DMA size, 2, BUFID, 1, ICOUNT 5
Output: {1, 2, -, 4, -, 6, -, 8, -, 0}
Final MIBSPIRAM.TX = {9, 0}
Once tx[1] is reached, the sequencer stays at tx[1]. I am wondering if there is a mode or option that will reset the sequencers to tx[0] when ICOUNT is decremented.
Thanks!