spim dma array list

HI,

The current SDK version I'm using is 3.0.0 for nrf54L15. I want to control the SPIM30 using DPPI, so I'm using the nrfx library to operate the SPIM30. The specific code is as follows.

 ,

spim30 The array list of the DMA that I used was set up. After that, I call  "nrfy_spim_task_trigger(spim30_inst.p_reg,NRF_SPIM_TASK_START); " ,Force SPIM to trigger for transmission, but no waveform was collected using the logic analyzer. What could be the problem in the code?

Thanks!

  • Hi,

    I would recommend calling nrfx_spim_xfer() instead of doing this yourself as it is easy to miss things. You can pass NRFX_SPIM_FLAG_HOLD_XFER to signall that the transaction is started later via DPPI and use NRFX_SPIM_FLAG_TX_POSTINC / NRFX_SPIM_FLAG_RX_POSTINC to use array list. This also includes important errata workarounds such as for erratum 8.

    That said, it is of course possible to use the HW directly without a driver, but it is easy to miss things then. I do not see that you write to the enable register here? Referring to the driver as a reference, that does it here.

Related