MPSL ESB and BLE timer problem.

I have installed NCS V3.0.0, nrf54L05

I'm currently working on the ESB and BLE coexistence feature, but I've run into some issues.

In ,config file
#
# Hardware selection (alter with care)
#
CONFIG_ESB_SYS_TIMER10=y
CONFIG_ESB_SYS_TIMER_INSTANCE=10
# end of Hardware selection (alter with care)
 I find that  TIMER10 is used by MPSL_TIMER0 and esb function simultaneously.
And in mpsl_timeslot_callback (    mpsl_timeslot_session_id_t session_id, uint32_t signal_type) funtion,
MPSL_TIMESLOT_SIGNAL_TIMER0 if happened only once, When i call app_esb_stop in MPSL_TIMESLOT_SIGNAL_TIMER0  to release MPSl_TIMER0.
 case MPSL_TIMESLOT_SIGNAL_TIMER0:
        if(1){//(radio_isr_remain_cnt > 0) {
            /* Request new timeslot when callback returns */
			signal_callback_return_param.params.request.p_next = &timeslot_request_normal;
			signal_callback_return_param.callback_action = MPSL_TIMESLOT_SIGNAL_ACTION_REQUEST;
            app_esb_stop();
        }else {
            signal_callback_return_param.callback_action = MPSL_TIMESLOT_SIGNAL_ACTION_END;
        }
        
        p_ret_val = &signal_callback_return_param;
And if Comment out app_esb_stop, esb fountion is ok,  but only run several seconds, and could receive event,And assert failed mpsl_init...  2, 62
MPSL_TIMESLOT_SIGNAL_TIMER0.
When I tried to change the ESB timer to timer020, the compilation succeeded, but the .config file still shows:
CONFIG_ESB_SYS_TIMER10=y
CONFIG_ESB_SYS_TIMER_INSTANCE=10.
I believe that after resolving the issue where both ESB and MPSL were using Timer10, MPSL will be able to trigger events MPSL_TIMESLOT_SIGNAL_TIMER0, and ESB functionality will also work properly.
  • Hi,

     

    I am so sorry, I was supposed to edit out this comment:

    Håkon Alseth said:
    I would recommend using the default timer for ESB, and then rather use another timer for the timeslot.

    This is not ideal either, due to the facts that you share.

    My observation here is based on checking the current DPPI API vs GPPI API for the nRF54L-series device specifically:

    Håkon Alseth said:
    GPPI does not handle groups, so you will hit another issue with using the nrfx_gppi implementation, unfortunately.

    There's a lack of certain APIs, mostly towards how groups are done. A workaround could be to loop over channels instead, but again; we're still in a discussion state, as we do not have proper support for this scenario.

    I fully understand your considerations here:

    Alex said:
    Because not every MPSL function is accompanied by source code, we’re afraid that any misunderstanding on our part could lead to further headaches. Could you please spell out, step by step, how to replace the MPSL timer?

    The main problem is that we currently do not support esb + timeslot at this time, so the path-of-least-resistance does point towards your original thought, ie. add another timer instance to ESB, and setup DPPI/PPIB.

     

    Kind regards,

    Håkon

Related