Skip to content

nRF54L

Review MiraMesh hardware requirements here and here.

Defines

MIRAMESH_SYS_NUM_10_DPPIS_USED

#define MIRAMESH_SYS_NUM_10_DPPIS_USED

How many DPPIs in PD 10 that are used by MiraMesh

MIRAMESH_SYS_NUM_20_DPPIS_USED

#define MIRAMESH_SYS_NUM_20_DPPIS_USED

How many DPPIs in PD 20 that are used by MiraMesh

MIRAMESH_SYS_NUM_10_DPPI_GROUPS_USED

#define MIRAMESH_SYS_NUM_10_DPPI_GROUPS_USED

How many PPI groups in PD 10 that are used by MiraMesh

MIRAMESH_SYS_NUM_11_21_PPIB_CHANNELS_USED

#define MIRAMESH_SYS_NUM_11_21_PPIB_CHANNELS_USED

How many PPIB channels between PD 10 and PD 20 that are used by MiraMesh

MIRAMESH_SYS_NUM_GRTC_CHANNELS_USED

#define MIRAMESH_SYS_NUM_GRTC_CHANNELS_USED

How many GRTC channels that are used by MiraMesh

Types

miramesh_hardware_cfg_t

typedef struct miramesh_hardware_cfg_nrf54l miramesh_hardware_cfg_t;

Hardware configuration for miramesh_sys_init argument.

miramesh_platform_specific_callback_cfg_t

typedef struct miramesh_platform_specific_callback_cfg_nrf54l miramesh_platform_specific_callback_cfg_t;

Structs

miramesh_hardware_cfg_nrf54l

Hardware configuration for miramesh_sys_init argument.

Name Type Description
dppi_10_idx uint8_t[MIRAMESH_SYS_NUM_10_DPPIS_USED] The DPPI channels in PD 10
dppi_20_idx uint8_t[MIRAMESH_SYS_NUM_20_DPPIS_USED] The DPPI channels in PD 20
dppi_group_10_idx uint8_t[MIRAMESH_SYS_NUM_10_DPPI_GROUPS_USED] The DPPI groups used in PD 10
ppib_11_21_idx uint8_t[MIRAMESH_SYS_NUM_11_21_PPIB_CHANNELS_USED] The PPIB channels used between PPU Bridge 11 and 21
grtc_cc_reg_idx uint8_t[MIRAMESH_SYS_NUM_GRTC_CHANNELS_USED] The GRTC CC registers to use
grtc_irq uint8_t The GRTC IRQ to use for miramesh_grtc_irq_handler
grtc_irq_prio uint8_t The GRTC IRQ priority to use
egu_event uint8_t The EGU10 event to use
egu_irq_prio uint8_t The EGU10 IRQ priority to use

miramesh_platform_specific_callback_cfg_nrf54l

Name Type Description
miramesh_mpsl_timeslot_request_callback void(*)(void) Only used for nrf54l-net and nrf528**sdc-net builds.

This callback is called from IRQ context. The callback should notify a cooperatively scheduled thread that will call the miramesh_request_timeslot() function everytime the callback is called.

!!! note

It is important that the thread gets to run as quick as possible.

Functions

miramesh_egu_irq_handler

void miramesh_egu_irq_handler(void);

The IRQ handler for EGU10 events.

This function should be called from the EGU10_IRQHandler when the configured EGU channel raises an IRQ, or put it in the isr_vector directly.

miramesh_grtc_irq_handler

void miramesh_grtc_irq_handler(void);

The IRQ handler for GRTC events.

This function should be called from the GRTC_x_IRQHandler, where x is the configured grtc_irq.

miramesh_handle_mpsl_timeslot_request

void miramesh_handle_mpsl_timeslot_request(void);

Request a timeslot.

This function should be called everytime the time call_for_timeslot_callback is called. !!! note This function has to be called from a cooperatively scheduled thread. Zephyr example:

void miramesh_timeslot_thread(
    void)
{
    do {
        k_thread_suspend(timeslot_thread_id);
        miramesh_handle_mpsl_timeslot_request();
    } while(true)
}
// The callback function
void timeslot_callback(
void)
{
    k_thread_resume(timeslot_thread_id);
}

Back to top