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!

Parents
  • 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.

Reply
  • 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.

Children
No Data
Related