DPPI Radio events on nRF54L15

Hello!

I am porting a nRF Connect v2.9.0 application from a nRF52 to the nRF54L15.

We are using PPI/EGU to get exact measurements for some BLE radio events for some optimizations. At the moment the Zephyr BLE driver/split device is used. I already have everything working with GPPI on the nRF52:

        uint8_t gppi_radio_ready;
        nrfx_err = nrfx_gppi_channel_alloc(&gppi_radio_ready);
        LOG_DBG("gppi_radio_ready channel num: 0x%x", gppi_radio_ready);
        NRFX_ASSERT(nrfx_err == NRFX_SUCCESS);
        nrfx_gppi_channel_endpoints_setup(gppi_radio_ready,
            nrf_radio_event_address_get(NRF_RADIO, NRF_RADIO_EVENT_READY),
            nrfx_egu_task_address_get(&egu_inst, RADIO_READY_EGU_TASK));
        gppi_channel_mask |= BIT(gppi_radio_ready);

When I do the same on a nRF54L15, that event will not arrive during connections, however.

If I register NRF_RADIO_EVENT_TXREADY instead, that event arrives at my EGU handler without any problems.

At the moment, I have two theories for what might cause this:

- nRF54L15 uses DPPI, and since it only permits connections to one channel each, the Zephyr BLE driver overwrites my radio event connection.

- Since NRF_RADIO_EVENT_TXREADY is undefined for the nRF52, the semantics of NRF_RADIO_EVENT_READY may have changed, and I should use TXREADY and RXREADY on the nRF54L15.

That leads me to two questions:

- Is there a way to register to events used by other subsystems with GPPI/DPPI? The channel publish/subscribe system should allow that, but I see no way to query existing assignments (e.g. device tree).

- Has the NRF_RADIO_EVENT_READY event been split into TXREADY and RXREADY and those should be used instead?

Best Regards,

   Julius

Parents Reply Children
No Data
Related