DMA works in continuous mode only, it doesn't stop after the i2s transfer completion.
Hi,
I don't see any code attached.
Best regards,
Marjeris
Hi Marjeris,
Sorry I forgot to attach the code.
These are my observation made while implemented I2S with Easy DMA.
1)Easy DMA is starting over again even after NRF_I2S->TXD.MAXCNT bytes data is finished.
2)Easy DMA is transmitting continuously until I2S-> TASKS_STOP is set to 1.
4)Easy DMA in I2S can not be configured to single, block, or burst transfer mode.
5)Easy DMA can not be configured to circular or linear.
Please correct if my understandings are wrong. Please provide a solution to the below queries.
1)1)Can I configure Easy DMA in such a way that DMA transfer is stopped when NRF_I2S->TXD.MAXCNT bytes of data transmission is completed?
2)Are there any interrupts generated at the completion of Easy DMA transfer? can we configure this?
3)Is there any generic DMA that can be used along with I2S?
Please provide an example code if available.
Best Regards,
Jesse Wilson
Software Engineer
Hi,
Sorry for late reply.
jesse wilson said:1)Can I configure Easy DMA in such a way that DMA transfer is stopped when NRF_I2S->TXD.MAXCNT bytes of data transmission is completed?
Yes, you can use PPI to connect the EVENTS_TXPTRUPD event (which will be generated for every RXTXD.MAXNT words that are sent on the SDOUT pin) with TASKS_STOP on the I2S peripheral. Usually you need to trigger the TASKS_START again afterwards.
jesse wilson said:2)Are there any interrupts generated at the completion of Easy DMA transfer? can we configure this?
You can use the EVENTS_TXPTRUPD event to set an interrupt.
jesse wilson said:3)Is there any generic DMA that can be used along with I2S?
Don't quite understand this question. I2S supports easyDMA and easyDMA is the only DMA module support in Nordic chips.
BR,
Marjeris
Hi,
Sorry for late reply.
jesse wilson said:1)Can I configure Easy DMA in such a way that DMA transfer is stopped when NRF_I2S->TXD.MAXCNT bytes of data transmission is completed?
Yes, you can use PPI to connect the EVENTS_TXPTRUPD event (which will be generated for every RXTXD.MAXNT words that are sent on the SDOUT pin) with TASKS_STOP on the I2S peripheral. Usually you need to trigger the TASKS_START again afterwards.
jesse wilson said:2)Are there any interrupts generated at the completion of Easy DMA transfer? can we configure this?
You can use the EVENTS_TXPTRUPD event to set an interrupt.
jesse wilson said:3)Is there any generic DMA that can be used along with I2S?
Don't quite understand this question. I2S supports easyDMA and easyDMA is the only DMA module support in Nordic chips.
BR,
Marjeris