nRF52833 SPIS easyDMA list

Hi Team

I have some questions about the EasyDMA list feature in SPIS mode. 

  • Does the SPIS in nRF52833 support the EasyDMA list?
  • if the answer is YES. After SPIS get RXD.MAXCNT, how to start next transfer and make the RXD.PTR load new value?

Regards

Victor

Parents
  • Does the SPIS in nRF52833 support the EasyDMA list?

    Yes, but the list will only have an effect to update RXD/TXD buffers for each time CSN go low, it will not have an effect while CSN is low.

    After SPIS get RXD.MAXCNT, how to start next transfer and make the RXD.PTR load new value?

    The MAXCNT can be up to 65,535bytes, so maybe this is not a problem?

    Kenneth

Reply
  • Does the SPIS in nRF52833 support the EasyDMA list?

    Yes, but the list will only have an effect to update RXD/TXD buffers for each time CSN go low, it will not have an effect while CSN is low.

    After SPIS get RXD.MAXCNT, how to start next transfer and make the RXD.PTR load new value?

    The MAXCNT can be up to 65,535bytes, so maybe this is not a problem?

    Kenneth

Children
  • Hi kenneth:

    we are using dmalist as spis rx buf as follows,

    #define AP_SPIS_MAX_DATA_LENGTH     104
    #define MAX_AP_SPIS_RX_BUF_COUNT 3
    struct spis_rx_arrayList
    {
        uint8_t buf[AP_SPIS_MAX_DATA_LENGTH];
    };
    struct spis_rx_arrayList spis_readerList[MAX_AP_SPIS_RX_BUF_COUNT];
    int main()
    {
        ap_spis.p_reg->RXD.PTR = (uint32_t )spis_readerList;
        ap_spis.p_reg->RXD.MAXCNT = AP_SPIS_MAX_DATA_LENGTH;
        ap_spis.p_reg->RXD.LIST = SPIS_RXD_LIST_LIST_ArrayList;
        APP_ERROR_CHECK(nrf_drv_spis_init(&ap_spis, &spis_config, spis_event_handler));
    }
    void spis_event_handler(nrf_drv_spis_event_t event)
    {
    //do work at this, costing about 4ms
    }
    My Question:
    Do we need to explicitly call “nrf_spis_task_trigger(p_spis, NRF_SPIS_TASK_RELEASE) ”at the beginning of the interrupt service function to triger next transmission ?
    If we are not tigger release task, during the processing of the interrupt service function, if an spis operation occurs again, will the interrupt be triggered again after cs goes high?
    Thanks
    leo
  • liubo said:
    Do we need to explicitly call “nrf_spis_task_trigger(p_spis, NRF_SPIS_TASK_RELEASE) ”at the beginning of the interrupt service function to triger next transmission ?

    Should be no need for that, it's only if you have aquired that you need to call release.

    Kenneth

Related