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