PRS - Peripheral Reflex System#

Peripheral Reflex System (PRS) Peripheral API.


This module contains functions to control the PRS peripheral of Silicon Labs 32-bit MCUs and SoCs. The PRS allows configurable, fast, and autonomous communication between peripherals on the MCU or SoC.

Example#

This example demonstrates how to configure the Peripheral Reflex System (PRS) to connect a producer (TIMER0 overflow) directly to a consumer (GPIO pin toggle) without CPU intervention.

#include "sl_hal_prs.h"
#include "sl_hal_timer.h"
#include "sl_hal_gpio.h"
#include "sl_clock_manager.h"

void prs_example(void)
{
  // Enable PRS and TIMER0 clocks
  sl_clock_manager_enable_bus_clock(SL_BUS_CLOCK_PRS);
  sl_clock_manager_enable_bus_clock(SL_BUS_CLOCK_TIMER0);

  // Configure GPIO pin as output (e.g., Port D, Pin 1)
  sl_gpio_t gpio;
  gpio.port = SL_GPIO_PORT_D;
  gpio.pin = 1;
  sl_hal_gpio_set_pin_mode(&gpio, SL_GPIO_MODE_PUSH_PULL, 0);

  // Configure TIMER0 (basic up-counting mode, overflow at 0xFFFF)
  sl_hal_timer_init_t timer_init = {0};
  timer_init.count_mode = SL_HAL_TIMER_MODE_UP;
  timer_init.clock_select = SL_HAL_TIMER_CLKSEL_HFPERCLK;
  timer_init.prescaler = SL_HAL_TIMER_PRESCALER_DIV1;
  sl_hal_timer_init(TIMER0, &timer_init);
  sl_hal_timer_enable(TIMER0);
  sl_hal_timer_set_top(TIMER0, 0xFFFF);
  sl_hal_timer_start(TIMER0);

  // Configure PRS channel 0: TIMER0 overflow as async producer
  uint8_t prs_channel = 0;
  sl_hal_prs_async_connect_channel_producer(prs_channel, SL_HAL_PRS_ASYNC_TIMER0_OF);

  // Route PRS output to GPIO pin (Port D, Pin 1)
  sl_hal_prs_pin_output(prs_channel, SL_HAL_PRS_TYPE_ASYNC, SL_GPIO_PORT_D, 1);

  // Now, whenever TIMER0 overflows, PRS will toggle the GPIO pin without CPU intervention
}

Modules#

sl_hal_prs_async_channel_init_t

sl_hal_prs_sync_channel_init_t

Enumerations#

enum
SL_HAL_PRS_TYPE_ASYNC
SL_HAL_PRS_TYPE_SYNC
}

PRS Channel type.

enum
SL_HAL_PRS_LOGIC_ZERO = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ZERO
SL_HAL_PRS_LOGIC_A_NOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NOR_B
SL_HAL_PRS_LOGIC_NOT_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_AND_B
SL_HAL_PRS_LOGIC_NOT_A = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A
SL_HAL_PRS_LOGIC_A_AND_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_NOT_B
SL_HAL_PRS_LOGIC_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_B
SL_HAL_PRS_LOGIC_A_XOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XOR_B
SL_HAL_PRS_LOGIC_A_NAND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NAND_B
SL_HAL_PRS_LOGIC_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_B
SL_HAL_PRS_LOGIC_A_XNOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XNOR_B
SL_HAL_PRS_LOGIC_B = _PRS_ASYNC_CH_CTRL_FNSEL_B
SL_HAL_PRS_LOGIC_NOT_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_OR_B
SL_HAL_PRS_LOGIC_A = _PRS_ASYNC_CH_CTRL_FNSEL_A
SL_HAL_PRS_LOGIC_A_OR_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_NOT_B
SL_HAL_PRS_LOGIC_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_B
SL_HAL_PRS_LOGIC_ONE = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ONE
}

Logic functions that can be used when combining two PRS channels.

enum
SL_HAL_PRS_ASYNC_NONE = 0x0
SL_HAL_PRS_ASYNC_USART0_CS = PRS_ASYNC_USART0_CS
SL_HAL_PRS_ASYNC_USART0_IRTX = PRS_ASYNC_USART0_IRTX
SL_HAL_PRS_ASYNC_USART0_RTS = PRS_ASYNC_USART0_RTS
SL_HAL_PRS_ASYNC_USART0_RXDATA = PRS_ASYNC_USART0_RXDATA
SL_HAL_PRS_ASYNC_USART0_TX = PRS_ASYNC_USART0_TX
SL_HAL_PRS_ASYNC_USART0_TXC = PRS_ASYNC_USART0_TXC
SL_HAL_PRS_ASYNC_TIMER0_UF = PRS_ASYNC_TIMER0_UF
SL_HAL_PRS_ASYNC_TIMER0_OF = PRS_ASYNC_TIMER0_OF
SL_HAL_PRS_ASYNC_TIMER0_CC0 = PRS_ASYNC_TIMER0_CC0
SL_HAL_PRS_ASYNC_TIMER0_CC1 = PRS_ASYNC_TIMER0_CC1
SL_HAL_PRS_ASYNC_TIMER0_CC2 = PRS_ASYNC_TIMER0_CC2
SL_HAL_PRS_ASYNC_TIMER1_UF = PRS_ASYNC_TIMER1_UF
SL_HAL_PRS_ASYNC_TIMER1_OF = PRS_ASYNC_TIMER1_OF
SL_HAL_PRS_ASYNC_TIMER1_CC0 = PRS_ASYNC_TIMER1_CC0
SL_HAL_PRS_ASYNC_TIMER1_CC1 = PRS_ASYNC_TIMER1_CC1
SL_HAL_PRS_ASYNC_TIMER1_CC2 = PRS_ASYNC_TIMER1_CC2
SL_HAL_PRS_ASYNC_IADC0_SCANENTRYDONE = PRS_ASYNC_IADC0_SCANENTRYDONE
SL_HAL_PRS_ASYNC_IADC0_SCANTABLEDONE = PRS_ASYNC_IADC0_SCANTABLEDONE
SL_HAL_PRS_ASYNC_IADC0_SINGLEDONE = PRS_ASYNC_IADC0_SINGLEDONE
SL_HAL_PRS_ASYNC_LETIMER0_CH0 = PRS_ASYNC_LETIMER0_CH0
SL_HAL_PRS_ASYNC_LETIMER0_CH1 = PRS_ASYNC_LETIMER0_CH1
SL_HAL_PRS_ASYNC_BURTC_COMP = PRS_ASYNC_BURTC_COMP
SL_HAL_PRS_ASYNC_BURTC_OVERFLOW = PRS_ASYNC_BURTC_OVERFLOW
SL_HAL_PRS_ASYNC_GPIO_PIN0 = PRS_ASYNC_GPIO_PIN0
SL_HAL_PRS_ASYNC_GPIO_PIN1 = PRS_ASYNC_GPIO_PIN1
SL_HAL_PRS_ASYNC_GPIO_PIN2 = PRS_ASYNC_GPIO_PIN2
SL_HAL_PRS_ASYNC_GPIO_PIN3 = PRS_ASYNC_GPIO_PIN3
SL_HAL_PRS_ASYNC_GPIO_PIN4 = PRS_ASYNC_GPIO_PIN4
SL_HAL_PRS_ASYNC_GPIO_PIN5 = PRS_ASYNC_GPIO_PIN5
SL_HAL_PRS_ASYNC_GPIO_PIN6 = PRS_ASYNC_GPIO_PIN6
SL_HAL_PRS_ASYNC_GPIO_PIN7 = PRS_ASYNC_GPIO_PIN7
SL_HAL_PRS_ASYNC_TIMER2_UF = PRS_ASYNC_TIMER2_UF
SL_HAL_PRS_ASYNC_TIMER2_OF = PRS_ASYNC_TIMER2_OF
SL_HAL_PRS_ASYNC_TIMER2_CC0 = PRS_ASYNC_TIMER2_CC0
SL_HAL_PRS_ASYNC_TIMER2_CC1 = PRS_ASYNC_TIMER2_CC1
SL_HAL_PRS_ASYNC_TIMER2_CC2 = PRS_ASYNC_TIMER2_CC2
SL_HAL_PRS_ASYNC_TIMER3_UF = PRS_ASYNC_TIMER3_UF
SL_HAL_PRS_ASYNC_TIMER3_OF = PRS_ASYNC_TIMER3_OF
SL_HAL_PRS_ASYNC_TIMER3_CC0 = PRS_ASYNC_TIMER3_CC0
SL_HAL_PRS_ASYNC_TIMER3_CC1 = PRS_ASYNC_TIMER3_CC1
SL_HAL_PRS_ASYNC_TIMER3_CC2 = PRS_ASYNC_TIMER3_CC2
SL_HAL_PRS_ASYNC_CORE_CTIOUT0 = PRS_ASYNC_CORE_CTIOUT0
SL_HAL_PRS_ASYNC_CORE_CTIOUT1 = PRS_ASYNC_CORE_CTIOUT1
SL_HAL_PRS_ASYNC_CORE_CTIOUT2 = PRS_ASYNC_CORE_CTIOUT2
SL_HAL_PRS_ASYNC_CORE_CTIOUT3 = PRS_ASYNC_CORE_CTIOUT3
SL_HAL_PRS_ASYNC_CMUL_CLKOUT0 = PRS_ASYNC_CMUL_CLKOUT0
SL_HAL_PRS_ASYNC_CMUL_CLKOUT1 = PRS_ASYNC_CMUL_CLKOUT1
SL_HAL_PRS_ASYNC_CMUL_CLKOUT2 = PRS_ASYNC_CMUL_CLKOUT2
SL_HAL_PRS_ASYNC_PRSL_ASYNCH0 = PRS_ASYNC_PRSL_ASYNCH0
SL_HAL_PRS_ASYNC_PRSL_ASYNCH1 = PRS_ASYNC_PRSL_ASYNCH1
SL_HAL_PRS_ASYNC_PRSL_ASYNCH2 = PRS_ASYNC_PRSL_ASYNCH2
SL_HAL_PRS_ASYNC_PRSL_ASYNCH3 = PRS_ASYNC_PRSL_ASYNCH3
SL_HAL_PRS_ASYNC_PRSL_ASYNCH4 = PRS_ASYNC_PRSL_ASYNCH4
SL_HAL_PRS_ASYNC_PRSL_ASYNCH5 = PRS_ASYNC_PRSL_ASYNCH5
SL_HAL_PRS_ASYNC_PRSL_ASYNCH6 = PRS_ASYNC_PRSL_ASYNCH6
SL_HAL_PRS_ASYNC_PRSL_ASYNCH7 = PRS_ASYNC_PRSL_ASYNCH7
SL_HAL_PRS_ASYNC_PRS_ASYNCH8 = PRS_ASYNC_PRS_ASYNCH8
SL_HAL_PRS_ASYNC_PRS_ASYNCH9 = PRS_ASYNC_PRS_ASYNCH9
SL_HAL_PRS_ASYNC_PRS_ASYNCH10 = PRS_ASYNC_PRS_ASYNCH10
SL_HAL_PRS_ASYNC_PRS_ASYNCH11 = PRS_ASYNC_PRS_ASYNCH11
SL_HAL_PRS_ASYNC_TIMER4_UF = PRS_ASYNC_TIMER4_UF
SL_HAL_PRS_ASYNC_TIMER4_OF = PRS_ASYNC_TIMER4_OF
SL_HAL_PRS_ASYNC_TIMER4_CC0 = PRS_ASYNC_TIMER4_CC0
SL_HAL_PRS_ASYNC_TIMER4_CC1 = PRS_ASYNC_TIMER4_CC1
SL_HAL_PRS_ASYNC_TIMER4_CC2 = PRS_ASYNC_TIMER4_CC2
SL_HAL_PRS_ASYNC_ACMP0_OUT = PRS_ASYNC_ACMP0_OUT
SL_HAL_PRS_ASYNC_EUSART0L_CS = PRS_ASYNC_EUSART0L_CS
SL_HAL_PRS_ASYNC_EUSART0L_IRDATX = PRS_ASYNC_EUSART0L_IRDATX
SL_HAL_PRS_ASYNC_EUSART0L_RTS = PRS_ASYNC_EUSART0L_RTS
SL_HAL_PRS_ASYNC_EUSART0L_RXDATAV = PRS_ASYNC_EUSART0L_RXDATAV
SL_HAL_PRS_ASYNC_EUSART0L_TX = PRS_ASYNC_EUSART0L_TX
SL_HAL_PRS_ASYNC_EUSART0L_TXC = PRS_ASYNC_EUSART0L_TXC
SL_HAL_PRS_ASYNC_EUSART0L_RXFL = PRS_ASYNC_EUSART0L_RXFL
SL_HAL_PRS_ASYNC_EUSART0L_TXFL = PRS_ASYNC_EUSART0L_TXFL
SL_HAL_PRS_ASYNC_ACMP1_OUT = PRS_ASYNC_ACMP1_OUT
SL_HAL_PRS_ASYNC_VDAC0L_CH0WARM = PRS_ASYNC_VDAC0L_CH0WARM
SL_HAL_PRS_ASYNC_VDAC0L_CH1WARM = PRS_ASYNC_VDAC0L_CH1WARM
SL_HAL_PRS_ASYNC_VDAC0L_CH0DONEASYNC = PRS_ASYNC_VDAC0L_CH0DONEASYNC
SL_HAL_PRS_ASYNC_VDAC0L_CH1DONEASYNC = PRS_ASYNC_VDAC0L_CH1DONEASYNC
SL_HAL_PRS_ASYNC_VDAC0L_INTERNALTIMEROF = PRS_ASYNC_VDAC0L_INTERNALTIMEROF
SL_HAL_PRS_ASYNC_VDAC0L_REFRESHTIMEROF = PRS_ASYNC_VDAC0L_REFRESHTIMEROF
SL_HAL_PRS_ASYNC_PCNT0_DIR = PRS_ASYNC_PCNT0_DIR
SL_HAL_PRS_ASYNC_PCNT0_UFOF = PRS_ASYNC_PCNT0_UFOF
SL_HAL_PRS_ASYNC_SYSRTC0_GRP0OUT0 = PRS_ASYNC_SYSRTC0_GRP0OUT0
SL_HAL_PRS_ASYNC_SYSRTC0_GRP0OUT1 = PRS_ASYNC_SYSRTC0_GRP0OUT1
SL_HAL_PRS_ASYNC_SYSRTC0_GRP1OUT0 = PRS_ASYNC_SYSRTC0_GRP1OUT0
SL_HAL_PRS_ASYNC_SYSRTC0_GRP1OUT1 = PRS_ASYNC_SYSRTC0_GRP1OUT1
SL_HAL_PRS_ASYNC_LESENSE_DECOUT0 = PRS_ASYNC_LESENSE_DECOUT0
SL_HAL_PRS_ASYNC_LESENSE_DECOUT1 = PRS_ASYNC_LESENSE_DECOUT1
SL_HAL_PRS_ASYNC_LESENSE_DECOUT2 = PRS_ASYNC_LESENSE_DECOUT2
SL_HAL_PRS_ASYNC_LESENSE_DECCMP = PRS_ASYNC_LESENSE_DECCMP
SL_HAL_PRS_ASYNC_HFXO0L_STATUS = PRS_ASYNC_HFXO0L_STATUS
SL_HAL_PRS_ASYNC_HFXO0L_STATUS1 = PRS_ASYNC_HFXO0L_STATUS1
SL_HAL_PRS_ASYNC_EUSART1L_CS = PRS_ASYNC_EUSART1L_CS
SL_HAL_PRS_ASYNC_EUSART1L_IRDATX = PRS_ASYNC_EUSART1L_IRDATX
SL_HAL_PRS_ASYNC_EUSART1L_RTS = PRS_ASYNC_EUSART1L_RTS
SL_HAL_PRS_ASYNC_EUSART1L_RXDATAV = PRS_ASYNC_EUSART1L_RXDATAV
SL_HAL_PRS_ASYNC_EUSART1L_TX = PRS_ASYNC_EUSART1L_TX
SL_HAL_PRS_ASYNC_EUSART1L_TXC = PRS_ASYNC_EUSART1L_TXC
SL_HAL_PRS_ASYNC_EUSART1L_RXFL = PRS_ASYNC_EUSART1L_RXFL
SL_HAL_PRS_ASYNC_EUSART1L_TXFL = PRS_ASYNC_EUSART1L_TXFL
SL_HAL_PRS_ASYNC_EUSART2L_CS = PRS_ASYNC_EUSART2L_CS
SL_HAL_PRS_ASYNC_EUSART2L_IRDATX = PRS_ASYNC_EUSART2L_IRDATX
SL_HAL_PRS_ASYNC_EUSART2L_RTS = PRS_ASYNC_EUSART2L_RTS
SL_HAL_PRS_ASYNC_EUSART2L_RXDATAV = PRS_ASYNC_EUSART2L_RXDATAV
SL_HAL_PRS_ASYNC_EUSART2L_TX = PRS_ASYNC_EUSART2L_TX
SL_HAL_PRS_ASYNC_EUSART2L_TXC = PRS_ASYNC_EUSART2L_TXC
SL_HAL_PRS_ASYNC_EUSART2L_RXFL = PRS_ASYNC_EUSART2L_RXFL
SL_HAL_PRS_ASYNC_EUSART2L_TXFL = PRS_ASYNC_EUSART2L_TXFL
}

Async PRS Signals.

enum
SL_HAL_PRS_SYNC_NONE = 0x0
SL_HAL_PRS_SYNC_TIMER0_UF = PRS_SYNC_TIMER0_UF
SL_HAL_PRS_SYNC_TIMER0_OF = PRS_SYNC_TIMER0_OF
SL_HAL_PRS_SYNC_TIMER0_CC0 = PRS_SYNC_TIMER0_CC0
SL_HAL_PRS_SYNC_TIMER0_CC1 = PRS_SYNC_TIMER0_CC1
SL_HAL_PRS_SYNC_TIMER0_CC2 = PRS_SYNC_TIMER0_CC2
SL_HAL_PRS_SYNC_TIMER1_UF = PRS_SYNC_TIMER1_UF
SL_HAL_PRS_SYNC_TIMER1_OF = PRS_SYNC_TIMER1_OF
SL_HAL_PRS_SYNC_TIMER1_CC0 = PRS_SYNC_TIMER1_CC0
SL_HAL_PRS_SYNC_TIMER1_CC1 = PRS_SYNC_TIMER1_CC1
SL_HAL_PRS_SYNC_TIMER1_CC2 = PRS_SYNC_TIMER1_CC2
SL_HAL_PRS_SYNC_IADC0_SCANENTRYDONE = PRS_SYNC_IADC0_SCAN_ENTRY_DONE
SL_HAL_PRS_SYNC_IADC0_SCANTABLEDONE = PRS_SYNC_IADC0_SCAN_TABLE_DONE
SL_HAL_PRS_SYNC_IADC0_SINGLEDONE = PRS_SYNC_IADC0_SINGLE_DONE
SL_HAL_PRS_SYNC_TIMER2_UF = PRS_SYNC_TIMER2_UF
SL_HAL_PRS_SYNC_TIMER2_OF = PRS_SYNC_TIMER2_OF
SL_HAL_PRS_SYNC_TIMER2_CC0 = PRS_SYNC_TIMER2_CC0
SL_HAL_PRS_SYNC_TIMER2_CC1 = PRS_SYNC_TIMER2_CC1
SL_HAL_PRS_SYNC_TIMER2_CC2 = PRS_SYNC_TIMER2_CC2
SL_HAL_PRS_SYNC_TIMER3_UF = PRS_SYNC_TIMER3_UF
SL_HAL_PRS_SYNC_TIMER3_OF = PRS_SYNC_TIMER3_OF
SL_HAL_PRS_SYNC_TIMER3_CC0 = PRS_SYNC_TIMER3_CC0
SL_HAL_PRS_SYNC_TIMER3_CC1 = PRS_SYNC_TIMER3_CC1
SL_HAL_PRS_SYNC_TIMER3_CC2 = PRS_SYNC_TIMER3_CC2
SL_HAL_PRS_SYNC_TIMER4_UF = PRS_SYNC_TIMER4_UF
SL_HAL_PRS_SYNC_TIMER4_OF = PRS_SYNC_TIMER4_OF
SL_HAL_PRS_SYNC_TIMER4_CC0 = PRS_SYNC_TIMER4_CC0
SL_HAL_PRS_SYNC_TIMER4_CC1 = PRS_SYNC_TIMER4_CC1
SL_HAL_PRS_SYNC_TIMER4_CC2 = PRS_SYNC_TIMER4_CC2
SL_HAL_PRS_SYNC_VDAC0_CH0DONESYNC = PRS_SYNC_VDAC0_CH0_DONE_SYNC
SL_HAL_PRS_SYNC_VDAC0_CH1DONESYNC = PRS_SYNC_VDAC0_CH1_DONE_SYNC
}

Sync PRS Signals.

enum
SL_HAL_PRS_CONSUMER_NONE = 0x0
SL_HAL_PRS_CONSUMER_CMU_CALDN = offsetof(PRS_TypeDef, CONSUMER_CMU_CALDN)
SL_HAL_PRS_CONSUMER_CMU_CALUP = offsetof(PRS_TypeDef, CONSUMER_CMU_CALUP)
SL_HAL_PRS_CONSUMER_EUSART0_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART0_CLK)
SL_HAL_PRS_CONSUMER_EUSART0_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART0_RX)
SL_HAL_PRS_CONSUMER_EUSART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART0_TRIGGER)
SL_HAL_PRS_CONSUMER_IADC0_SCANTRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SCANTRIGGER)
SL_HAL_PRS_CONSUMER_IADC0_SINGLETRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SINGLETRIGGER)
SL_HAL_PRS_CONSUMER_LDMAXBAR_DMAREQ0 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ0)
SL_HAL_PRS_CONSUMER_LDMAXBAR_DMAREQ1 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ1)
SL_HAL_PRS_CONSUMER_LETIMER0_CLEAR = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_CLEAR)
SL_HAL_PRS_CONSUMER_LETIMER0_START = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_START)
SL_HAL_PRS_CONSUMER_LETIMER0_STOP = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_STOP)
SL_HAL_PRS_CONSUMER_CORE_CTIIN0 = offsetof(PRS_TypeDef, CONSUMER_CORE_CTIIN0)
SL_HAL_PRS_CONSUMER_CORE_CTIIN1 = offsetof(PRS_TypeDef, CONSUMER_CORE_CTIIN1)
SL_HAL_PRS_CONSUMER_CORE_CTIIN2 = offsetof(PRS_TypeDef, CONSUMER_CORE_CTIIN2)
SL_HAL_PRS_CONSUMER_CORE_CTIIN3 = offsetof(PRS_TypeDef, CONSUMER_CORE_CTIIN3)
SL_HAL_PRS_CONSUMER_CORE_M33RXEV = offsetof(PRS_TypeDef, CONSUMER_CORE_M33RXEV)
SL_HAL_PRS_CONSUMER_TIMER0_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC0)
SL_HAL_PRS_CONSUMER_TIMER0_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC1)
SL_HAL_PRS_CONSUMER_TIMER0_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC2)
SL_HAL_PRS_CONSUMER_TIMER0_DTI = offsetof(PRS_TypeDef, CONSUMER_TIMER0_DTI)
SL_HAL_PRS_CONSUMER_TIMER0_DTIFS1 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_DTIFS1)
SL_HAL_PRS_CONSUMER_TIMER0_DTIFS2 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_DTIFS2)
SL_HAL_PRS_CONSUMER_TIMER1_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC0)
SL_HAL_PRS_CONSUMER_TIMER1_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC1)
SL_HAL_PRS_CONSUMER_TIMER1_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC2)
SL_HAL_PRS_CONSUMER_TIMER1_DTI = offsetof(PRS_TypeDef, CONSUMER_TIMER1_DTI)
SL_HAL_PRS_CONSUMER_TIMER1_DTIFS1 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_DTIFS1)
SL_HAL_PRS_CONSUMER_TIMER1_DTIFS2 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_DTIFS2)
SL_HAL_PRS_CONSUMER_TIMER2_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC0)
SL_HAL_PRS_CONSUMER_TIMER2_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC1)
SL_HAL_PRS_CONSUMER_TIMER2_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC2)
SL_HAL_PRS_CONSUMER_TIMER2_DTI = offsetof(PRS_TypeDef, CONSUMER_TIMER2_DTI)
SL_HAL_PRS_CONSUMER_TIMER2_DTIFS1 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_DTIFS1)
SL_HAL_PRS_CONSUMER_TIMER2_DTIFS2 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_DTIFS2)
SL_HAL_PRS_CONSUMER_TIMER3_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC0)
SL_HAL_PRS_CONSUMER_TIMER3_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC1)
SL_HAL_PRS_CONSUMER_TIMER3_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC2)
SL_HAL_PRS_CONSUMER_TIMER3_DTI = offsetof(PRS_TypeDef, CONSUMER_TIMER3_DTI)
SL_HAL_PRS_CONSUMER_TIMER3_DTIFS1 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_DTIFS1)
SL_HAL_PRS_CONSUMER_TIMER3_DTIFS2 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_DTIFS2)
SL_HAL_PRS_CONSUMER_TIMER4_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC0)
SL_HAL_PRS_CONSUMER_TIMER4_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC1)
SL_HAL_PRS_CONSUMER_TIMER4_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC2)
SL_HAL_PRS_CONSUMER_TIMER4_DTI = offsetof(PRS_TypeDef, CONSUMER_TIMER4_DTI)
SL_HAL_PRS_CONSUMER_TIMER4_DTIFS1 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_DTIFS1)
SL_HAL_PRS_CONSUMER_TIMER4_DTIFS2 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_DTIFS2)
SL_HAL_PRS_CONSUMER_USART0_CLK = offsetof(PRS_TypeDef, CONSUMER_USART0_CLK)
SL_HAL_PRS_CONSUMER_USART0_IR = offsetof(PRS_TypeDef, CONSUMER_USART0_IR)
SL_HAL_PRS_CONSUMER_USART0_RX = offsetof(PRS_TypeDef, CONSUMER_USART0_RX)
SL_HAL_PRS_CONSUMER_USART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART0_TRIGGER)
SL_HAL_PRS_CONSUMER_WDOG0_SRC0 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC0)
SL_HAL_PRS_CONSUMER_WDOG0_SRC1 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC1)
SL_HAL_PRS_CONSUMER_EUSART1_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART1_CLK)
SL_HAL_PRS_CONSUMER_EUSART1_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART1_RX)
SL_HAL_PRS_CONSUMER_EUSART1_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART1_TRIGGER)
SL_HAL_PRS_CONSUMER_EUSART2_CLK = offsetof(PRS_TypeDef, CONSUMER_EUSART2_CLK)
SL_HAL_PRS_CONSUMER_EUSART2_RX = offsetof(PRS_TypeDef, CONSUMER_EUSART2_RX)
SL_HAL_PRS_CONSUMER_EUSART2_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUSART2_TRIGGER)
SL_HAL_PRS_CONSUMER_LESENSE_START = offsetof(PRS_TypeDef, CONSUMER_LESENSE_START)
SL_HAL_PRS_CONSUMER_PCNT0_S0IN = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S0IN)
SL_HAL_PRS_CONSUMER_PCNT0_S1IN = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S1IN)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC25 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC25)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC26 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC26)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC27 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC27)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC28 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC28)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC29 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC29)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC30 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC30)
SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC31 = offsetof(PRS_TypeDef, CONSUMER_SETAMPER_TAMPERSRC31)
SL_HAL_PRS_CONSUMER_SYSRTC0_IN0 = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN0)
SL_HAL_PRS_CONSUMER_SYSRTC0_IN1 = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN1)
SL_HAL_PRS_CONSUMER_HFXO0_OSCREQ = offsetof(PRS_TypeDef, CONSUMER_HFXO0_OSCREQ)
SL_HAL_PRS_CONSUMER_HFXO0_TIMEOUT = offsetof(PRS_TypeDef, CONSUMER_HFXO0_TIMEOUT)
SL_HAL_PRS_CONSUMER_VDAC0_ASYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH0)
SL_HAL_PRS_CONSUMER_VDAC0_ASYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH1)
SL_HAL_PRS_CONSUMER_VDAC0_SYNCTRIGCH0 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH0)
SL_HAL_PRS_CONSUMER_VDAC0_SYNCTRIGCH1 = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH1)
SL_HAL_PRS_CONSUMER_WDOG1_SRC0 = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC0)
SL_HAL_PRS_CONSUMER_WDOG1_SRC1 = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC1)
}

PRS Consumers.

Functions#

void
sl_hal_prs_async_init_channel(const sl_hal_prs_async_channel_init_t *init)

Configure Async channel.

void
sl_hal_prs_sync_init_channel(const sl_hal_prs_sync_channel_init_t *init)

Configure Sync channel.

sl_status_t
sl_hal_prs_get_free_channel(uint8_t *channel, sl_hal_prs_channel_type_t channel_type)

Search for the first free PRS channel.

void

Reset all PRS channels.

void
sl_hal_prs_connect_channel_consumer(uint8_t channel, sl_hal_prs_channel_type_t channel_type, sl_hal_prs_consumer_event_t consumer_event)

Connect a peripheral consumer to a PRS channel.

void
sl_hal_prs_pin_output(uint8_t channel, sl_hal_prs_channel_type_t channel_type, sl_gpio_port_t port, uint8_t pin)

Send the output of a PRS channel to a GPIO pin.

void
sl_hal_prs_async_set_channel_swlevel(uint8_t channel, bool level)

Set level control bit for one channel.

bool

Get level control bit for a channel.

bool
sl_hal_prs_get_channel_value(uint8_t channel, sl_hal_prs_channel_type_t channel_type)

Get the PRS channel value for one channel.

void

Trigger a high pulse (one HFPERCLK) for one channel.

void
sl_hal_prs_async_connect_channel_producer(uint8_t channel, sl_hal_prs_async_producer_signal_t producer_signal)

Set PRS signal for an async channel.

void
sl_hal_prs_sync_connect_channel_producer(uint8_t channel, sl_hal_prs_sync_producer_signal_t producer_signal)

Set PRS signal for a sync channel.

void
sl_hal_prs_async_combine_signals(uint8_t channel_a, uint8_t channel_b, sl_hal_prs_logic_t logic)

Combine two PRS channels using a logic function.

Macros#

#define
SL_HAL_PRS_SYNC_CHAN_COUNT PRS_SYNC_CH_NUM

PRS Synchronous channel count.

#define
SL_HAL_PRS_ASYNC_CHAN_COUNT PRS_ASYNC_CH_NUM

PRS Asynchronous channel count.

#define
SL_HAL_PRS_ASYNC_INIT_DEFAULT (channel, producer_signal, consumer_event)

PRS async initializer (No channel combination).

#define
SL_HAL_PRS_SYNC_INIT_DEFAULT (channel, producer_signal, consumer_event)

PRS sync initializer.

Enumeration Documentation#

sl_hal_prs_channel_type_t#

sl_hal_prs_channel_type_t

PRS Channel type.

Enumerator
SL_HAL_PRS_TYPE_ASYNC

Asynchronous channel type.

SL_HAL_PRS_TYPE_SYNC

Synchronous channel type.


sl_hal_prs_logic_t#

sl_hal_prs_logic_t

Logic functions that can be used when combining two PRS channels.

Enumerator
SL_HAL_PRS_LOGIC_ZERO

Logical 0.

SL_HAL_PRS_LOGIC_A_NOR_B

A NOR B.

SL_HAL_PRS_LOGIC_NOT_A_AND_B

(!A) NOR B.

SL_HAL_PRS_LOGIC_NOT_A

!A.

SL_HAL_PRS_LOGIC_A_AND_NOT_B

A AND (!B).

SL_HAL_PRS_LOGIC_NOT_B

!B.

SL_HAL_PRS_LOGIC_A_XOR_B

A XOR B.

SL_HAL_PRS_LOGIC_A_NAND_B

A NAND B.

SL_HAL_PRS_LOGIC_A_AND_B

A AND B.

SL_HAL_PRS_LOGIC_A_XNOR_B

A XNOR B.

SL_HAL_PRS_LOGIC_B

B.

SL_HAL_PRS_LOGIC_NOT_A_OR_B

(!A) OR B.

SL_HAL_PRS_LOGIC_A

A.

SL_HAL_PRS_LOGIC_A_OR_NOT_B

A OR (!B).

SL_HAL_PRS_LOGIC_A_OR_B

A OR B.

SL_HAL_PRS_LOGIC_ONE

Logical 1.


sl_hal_prs_async_producer_signal_t#

sl_hal_prs_async_producer_signal_t

Async PRS Signals.

Enumerator
SL_HAL_PRS_ASYNC_NONE

No Signal.

SL_HAL_PRS_ASYNC_USART0_CS

USART0 CS Signal.

SL_HAL_PRS_ASYNC_USART0_IRTX

USART0 IRTX Signal.

SL_HAL_PRS_ASYNC_USART0_RTS

USART0 RTS Signal.

SL_HAL_PRS_ASYNC_USART0_RXDATA

USART0 RXDATA Signal.

SL_HAL_PRS_ASYNC_USART0_TX

USART0 TX Signal.

SL_HAL_PRS_ASYNC_USART0_TXC

USART0 TXC Signal.

SL_HAL_PRS_ASYNC_TIMER0_UF

TIMER0 UF Signal.

SL_HAL_PRS_ASYNC_TIMER0_OF

TIMER0 OF Signal.

SL_HAL_PRS_ASYNC_TIMER0_CC0

TIMER0 CC0 Signal.

SL_HAL_PRS_ASYNC_TIMER0_CC1

TIMER0 CC1 Signal.

SL_HAL_PRS_ASYNC_TIMER0_CC2

TIMER0 CC2 Signal.

SL_HAL_PRS_ASYNC_TIMER1_UF

TIMER1 UF Signal.

SL_HAL_PRS_ASYNC_TIMER1_OF

TIMER1 OF Signal.

SL_HAL_PRS_ASYNC_TIMER1_CC0

TIMER1 CC0 Signal.

SL_HAL_PRS_ASYNC_TIMER1_CC1

TIMER1 CC1 Signal.

SL_HAL_PRS_ASYNC_TIMER1_CC2

TIMER1 CC2 Signal.

SL_HAL_PRS_ASYNC_IADC0_SCANENTRYDONE

IADC0 SCANENTRYDONE Signal.

SL_HAL_PRS_ASYNC_IADC0_SCANTABLEDONE

IADC0 SCANTABLEDONE Signal.

SL_HAL_PRS_ASYNC_IADC0_SINGLEDONE

IADC0 SINGLEDONE Signal.

SL_HAL_PRS_ASYNC_LETIMER0_CH0

LETIMER0 CH0 Signal.

SL_HAL_PRS_ASYNC_LETIMER0_CH1

LETIMER0 CH1 Signal.

SL_HAL_PRS_ASYNC_BURTC_COMP

BURTC COMP Signal.

SL_HAL_PRS_ASYNC_BURTC_OVERFLOW

BURTC OVERFLOW Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN0

GPIO PIN0 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN1

GPIO PIN1 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN2

GPIO PIN2 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN3

GPIO PIN3 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN4

GPIO PIN4 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN5

GPIO PIN5 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN6

GPIO PIN6 Signal.

SL_HAL_PRS_ASYNC_GPIO_PIN7

GPIO PIN7 Signal.

SL_HAL_PRS_ASYNC_TIMER2_UF

TIMER2 UF Signal.

SL_HAL_PRS_ASYNC_TIMER2_OF

TIMER2 OF Signal.

SL_HAL_PRS_ASYNC_TIMER2_CC0

TIMER2 CC0 Signal.

SL_HAL_PRS_ASYNC_TIMER2_CC1

TIMER2 CC1 Signal.

SL_HAL_PRS_ASYNC_TIMER2_CC2

TIMER2 CC2 Signal.

SL_HAL_PRS_ASYNC_TIMER3_UF

TIMER3 UF Signal.

SL_HAL_PRS_ASYNC_TIMER3_OF

TIMER3 OF Signal.

SL_HAL_PRS_ASYNC_TIMER3_CC0

TIMER3 CC0 Signal.

SL_HAL_PRS_ASYNC_TIMER3_CC1

TIMER3 CC1 Signal.

SL_HAL_PRS_ASYNC_TIMER3_CC2

TIMER3 CC2 Signal.

SL_HAL_PRS_ASYNC_CORE_CTIOUT0

CORE CTIOUT0 Signal.

SL_HAL_PRS_ASYNC_CORE_CTIOUT1

CORE CTIOUT1 Signal.

SL_HAL_PRS_ASYNC_CORE_CTIOUT2

CORE CTIOUT2 Signal.

SL_HAL_PRS_ASYNC_CORE_CTIOUT3

CORE CTIOUT3 Signal.

SL_HAL_PRS_ASYNC_CMUL_CLKOUT0

CMUL CLKOUT0 Signal.

SL_HAL_PRS_ASYNC_CMUL_CLKOUT1

CMUL CLKOUT1 Signal.

SL_HAL_PRS_ASYNC_CMUL_CLKOUT2

CMUL CLKOUT2 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH0

PRSL ASYNCH0 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH1

PRSL ASYNCH1 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH2

PRSL ASYNCH2 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH3

PRSL ASYNCH3 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH4

PRSL ASYNCH4 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH5

PRSL ASYNCH5 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH6

PRSL ASYNCH6 Signal.

SL_HAL_PRS_ASYNC_PRSL_ASYNCH7

PRSL ASYNCH7 Signal.

SL_HAL_PRS_ASYNC_PRS_ASYNCH8

PRS ASYNCH8 Signal.

SL_HAL_PRS_ASYNC_PRS_ASYNCH9

PRS ASYNCH9 Signal.

SL_HAL_PRS_ASYNC_PRS_ASYNCH10

PRS ASYNCH10 Signal.

SL_HAL_PRS_ASYNC_PRS_ASYNCH11

PRS ASYNCH11 Signal.

SL_HAL_PRS_ASYNC_TIMER4_UF

TIMER4 UF Signal.

SL_HAL_PRS_ASYNC_TIMER4_OF

TIMER4 OF Signal.

SL_HAL_PRS_ASYNC_TIMER4_CC0

TIMER4 CC0 Signal.

SL_HAL_PRS_ASYNC_TIMER4_CC1

TIMER4 CC1 Signal.

SL_HAL_PRS_ASYNC_TIMER4_CC2

TIMER4 CC2 Signal.

SL_HAL_PRS_ASYNC_ACMP0_OUT

ACMP0 OUT Signal.

SL_HAL_PRS_ASYNC_EUSART0L_CS

EUSART0L CS Signal.

SL_HAL_PRS_ASYNC_EUSART0L_IRDATX

EUSART0L IRDATX Signal.

SL_HAL_PRS_ASYNC_EUSART0L_RTS

EUSART0L RTS Signal.

SL_HAL_PRS_ASYNC_EUSART0L_RXDATAV

EUSART0L RXDATAV Signal.

SL_HAL_PRS_ASYNC_EUSART0L_TX

EUSART0L TX Signal.

SL_HAL_PRS_ASYNC_EUSART0L_TXC

EUSART0L TXC Signal.

SL_HAL_PRS_ASYNC_EUSART0L_RXFL

EUSART0L RXFL Signal.

SL_HAL_PRS_ASYNC_EUSART0L_TXFL

EUSART0L TXFL Signal.

SL_HAL_PRS_ASYNC_ACMP1_OUT

ACMP1 OUT Signal.

SL_HAL_PRS_ASYNC_VDAC0L_CH0WARM

VDAC0L CH0WARM Signal.

SL_HAL_PRS_ASYNC_VDAC0L_CH1WARM

VDAC0L CH1WARM Signal.

SL_HAL_PRS_ASYNC_VDAC0L_CH0DONEASYNC

VDAC0L CH0DONEASYNC Signal.

SL_HAL_PRS_ASYNC_VDAC0L_CH1DONEASYNC

VDAC0L CH1DONEASYNC Signal.

SL_HAL_PRS_ASYNC_VDAC0L_INTERNALTIMEROF

VDAC0L INTERNALTIMEROF Signal.

SL_HAL_PRS_ASYNC_VDAC0L_REFRESHTIMEROF

VDAC0L REFRESHTIMEROF Signal.

SL_HAL_PRS_ASYNC_PCNT0_DIR

PCNT0 DIR Signal.

SL_HAL_PRS_ASYNC_PCNT0_UFOF

PCNT0 UFOF Signal.

SL_HAL_PRS_ASYNC_SYSRTC0_GRP0OUT0

SYSRTC0 GRP0OUT0 Signal.

SL_HAL_PRS_ASYNC_SYSRTC0_GRP0OUT1

SYSRTC0 GRP0OUT1 Signal.

SL_HAL_PRS_ASYNC_SYSRTC0_GRP1OUT0

SYSRTC0 GRP1OUT0 Signal.

SL_HAL_PRS_ASYNC_SYSRTC0_GRP1OUT1

SYSRTC0 GRP1OUT1 Signal.

SL_HAL_PRS_ASYNC_LESENSE_DECOUT0

LESENSE DECOUT0 Signal.

SL_HAL_PRS_ASYNC_LESENSE_DECOUT1

LESENSE DECOUT1 Signal.

SL_HAL_PRS_ASYNC_LESENSE_DECOUT2

LESENSE DECOUT2 Signal.

SL_HAL_PRS_ASYNC_LESENSE_DECCMP

LESENSE DECCMP Signal.

SL_HAL_PRS_ASYNC_HFXO0L_STATUS

HFXO0L STATUS Signal.

SL_HAL_PRS_ASYNC_HFXO0L_STATUS1

HFXO0L STATUS1 Signal.

SL_HAL_PRS_ASYNC_EUSART1L_CS

EUSART1L CS Signal.

SL_HAL_PRS_ASYNC_EUSART1L_IRDATX

EUSART1L IRDATX Signal.

SL_HAL_PRS_ASYNC_EUSART1L_RTS

EUSART1L RTS Signal.

SL_HAL_PRS_ASYNC_EUSART1L_RXDATAV

EUSART1L RXDATAV Signal.

SL_HAL_PRS_ASYNC_EUSART1L_TX

EUSART1L TX Signal.

SL_HAL_PRS_ASYNC_EUSART1L_TXC

EUSART1L TXC Signal.

SL_HAL_PRS_ASYNC_EUSART1L_RXFL

EUSART1L RXFL Signal.

SL_HAL_PRS_ASYNC_EUSART1L_TXFL

EUSART1L TXFL Signal.

SL_HAL_PRS_ASYNC_EUSART2L_CS

EUSART2L CS Signal.

SL_HAL_PRS_ASYNC_EUSART2L_IRDATX

EUSART2L IRDATX Signal.

SL_HAL_PRS_ASYNC_EUSART2L_RTS

EUSART2L RTS Signal.

SL_HAL_PRS_ASYNC_EUSART2L_RXDATAV

EUSART2L RXDATAV Signal.

SL_HAL_PRS_ASYNC_EUSART2L_TX

EUSART2L TX Signal.

SL_HAL_PRS_ASYNC_EUSART2L_TXC

EUSART2L TXC Signal.

SL_HAL_PRS_ASYNC_EUSART2L_RXFL

EUSART2L RXFL Signal.

SL_HAL_PRS_ASYNC_EUSART2L_TXFL

EUSART2L TXFL Signal.


sl_hal_prs_sync_producer_signal_t#

sl_hal_prs_sync_producer_signal_t

Sync PRS Signals.

Enumerator
SL_HAL_PRS_SYNC_NONE

No Signal.

SL_HAL_PRS_SYNC_TIMER0_UF

TIMER0 UF Signal.

SL_HAL_PRS_SYNC_TIMER0_OF

TIMER0 OF Signal.

SL_HAL_PRS_SYNC_TIMER0_CC0

TIMER0 CC0 Signal.

SL_HAL_PRS_SYNC_TIMER0_CC1

TIMER0 CC1 Signal.

SL_HAL_PRS_SYNC_TIMER0_CC2

TIMER0 CC2 Signal.

SL_HAL_PRS_SYNC_TIMER1_UF

TIMER1 UF Signal.

SL_HAL_PRS_SYNC_TIMER1_OF

TIMER1 OF Signal.

SL_HAL_PRS_SYNC_TIMER1_CC0

TIMER1 CC0 Signal.

SL_HAL_PRS_SYNC_TIMER1_CC1

TIMER1 CC1 Signal.

SL_HAL_PRS_SYNC_TIMER1_CC2

TIMER1 CC2 Signal.

SL_HAL_PRS_SYNC_IADC0_SCANENTRYDONE

IADC0 SCANENTRYDONE Signal.

SL_HAL_PRS_SYNC_IADC0_SCANTABLEDONE

IADC0 SCANTABLEDONE Signal.

SL_HAL_PRS_SYNC_IADC0_SINGLEDONE

IADC0 SINGLEDONE Signal.

SL_HAL_PRS_SYNC_TIMER2_UF

TIMER2 UF Signal.

SL_HAL_PRS_SYNC_TIMER2_OF

TIMER2 OF Signal.

SL_HAL_PRS_SYNC_TIMER2_CC0

TIMER2 CC0 Signal.

SL_HAL_PRS_SYNC_TIMER2_CC1

TIMER2 CC1 Signal.

SL_HAL_PRS_SYNC_TIMER2_CC2

TIMER2 CC2 Signal.

SL_HAL_PRS_SYNC_TIMER3_UF

TIMER3 UF Signal.

SL_HAL_PRS_SYNC_TIMER3_OF

TIMER3 OF Signal.

SL_HAL_PRS_SYNC_TIMER3_CC0

TIMER3 CC0 Signal.

SL_HAL_PRS_SYNC_TIMER3_CC1

TIMER3 CC1 Signal.

SL_HAL_PRS_SYNC_TIMER3_CC2

TIMER3 CC2 Signal.

SL_HAL_PRS_SYNC_TIMER4_UF

TIMER4 UF Signal.

SL_HAL_PRS_SYNC_TIMER4_OF

TIMER4 OF Signal.

SL_HAL_PRS_SYNC_TIMER4_CC0

TIMER4 CC0 Signal.

SL_HAL_PRS_SYNC_TIMER4_CC1

TIMER4 CC1 Signal.

SL_HAL_PRS_SYNC_TIMER4_CC2

TIMER4 CC2 Signal.

SL_HAL_PRS_SYNC_VDAC0_CH0DONESYNC

VDAC0 CH0DONESYNC Signal.

SL_HAL_PRS_SYNC_VDAC0_CH1DONESYNC

VDAC0 CH1DONESYNC Signal.


sl_hal_prs_consumer_event_t#

sl_hal_prs_consumer_event_t

PRS Consumers.

Enumerator
SL_HAL_PRS_CONSUMER_NONE

No PRS consumer.

SL_HAL_PRS_CONSUMER_CMU_CALDN

CMU CALDN consumer consumer.

SL_HAL_PRS_CONSUMER_CMU_CALUP

CMU CALUP Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART0_CLK

EUSART0 CLK consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART0_RX

EUSART0 RX Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART0_TRIGGER

EUSART0 TRIGGER Consumer consumer.

SL_HAL_PRS_CONSUMER_IADC0_SCANTRIGGER

IADC0 SCANTRIGGER consumer consumer.

SL_HAL_PRS_CONSUMER_IADC0_SINGLETRIGGER

IADC0 SINGLETRIGGER Consumer consumer.

SL_HAL_PRS_CONSUMER_LDMAXBAR_DMAREQ0

LDMAXBAR DMAREQ0 consumer consumer.

SL_HAL_PRS_CONSUMER_LDMAXBAR_DMAREQ1

LDMAXBAR DMAREQ1 Consumer consumer.

SL_HAL_PRS_CONSUMER_LETIMER0_CLEAR

LETIMER0 CLEAR consumer consumer.

SL_HAL_PRS_CONSUMER_LETIMER0_START

LETIMER0 START Consumer consumer.

SL_HAL_PRS_CONSUMER_LETIMER0_STOP

LETIMER0 STOP Consumer consumer.

SL_HAL_PRS_CONSUMER_CORE_CTIIN0

CORE CTIIN0 consumer consumer.

SL_HAL_PRS_CONSUMER_CORE_CTIIN1

CORE CTIIN1 Consumer consumer.

SL_HAL_PRS_CONSUMER_CORE_CTIIN2

CORE CTIIN2 Consumer consumer.

SL_HAL_PRS_CONSUMER_CORE_CTIIN3

CORE CTIIN3 Consumer consumer.

SL_HAL_PRS_CONSUMER_CORE_M33RXEV

CORE M33RXEV Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_CC0

TIMER0 CC0 consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_CC1

TIMER0 CC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_CC2

TIMER0 CC2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_DTI

TIMER0 DTI Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_DTIFS1

TIMER0 DTIFS1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER0_DTIFS2

TIMER0 DTIFS2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_CC0

TIMER1 CC0 consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_CC1

TIMER1 CC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_CC2

TIMER1 CC2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_DTI

TIMER1 DTI Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_DTIFS1

TIMER1 DTIFS1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER1_DTIFS2

TIMER1 DTIFS2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_CC0

TIMER2 CC0 consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_CC1

TIMER2 CC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_CC2

TIMER2 CC2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_DTI

TIMER2 DTI Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_DTIFS1

TIMER2 DTIFS1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER2_DTIFS2

TIMER2 DTIFS2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_CC0

TIMER3 CC0 consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_CC1

TIMER3 CC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_CC2

TIMER3 CC2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_DTI

TIMER3 DTI Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_DTIFS1

TIMER3 DTIFS1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER3_DTIFS2

TIMER3 DTIFS2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_CC0

TIMER4 CC0 consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_CC1

TIMER4 CC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_CC2

TIMER4 CC2 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_DTI

TIMER4 DTI Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_DTIFS1

TIMER4 DTIFS1 Consumer consumer.

SL_HAL_PRS_CONSUMER_TIMER4_DTIFS2

TIMER4 DTIFS2 Consumer consumer.

SL_HAL_PRS_CONSUMER_USART0_CLK

USART0 CLK consumer consumer.

SL_HAL_PRS_CONSUMER_USART0_IR

USART0 IR Consumer consumer.

SL_HAL_PRS_CONSUMER_USART0_RX

USART0 RX Consumer consumer.

SL_HAL_PRS_CONSUMER_USART0_TRIGGER

USART0 TRIGGER Consumer consumer.

SL_HAL_PRS_CONSUMER_WDOG0_SRC0

WDOG0 SRC0 consumer consumer.

SL_HAL_PRS_CONSUMER_WDOG0_SRC1

WDOG0 SRC1 Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART1_CLK

EUSART1 CLK consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART1_RX

EUSART1 RX Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART1_TRIGGER

EUSART1 TRIGGER Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART2_CLK

EUSART2 CLK consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART2_RX

EUSART2 RX Consumer consumer.

SL_HAL_PRS_CONSUMER_EUSART2_TRIGGER

EUSART2 TRIGGER Consumer consumer.

SL_HAL_PRS_CONSUMER_LESENSE_START

LESENSE START Consumer consumer.

SL_HAL_PRS_CONSUMER_PCNT0_S0IN

PCNT0 S0IN consumer consumer.

SL_HAL_PRS_CONSUMER_PCNT0_S1IN

PCNT0 S1IN Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC25

SETAMPER TAMPERSRC25 consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC26

SETAMPER TAMPERSRC26 Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC27

SETAMPER TAMPERSRC27 Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC28

SETAMPER TAMPERSRC28 Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC29

SETAMPER TAMPERSRC29 Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC30

SETAMPER TAMPERSRC30 Consumer consumer.

SL_HAL_PRS_CONSUMER_SETAMPER_TAMPERSRC31

SETAMPER TAMPERSRC31 Consumer consumer.

SL_HAL_PRS_CONSUMER_SYSRTC0_IN0

SYSRTC0 IN0 consumer consumer.

SL_HAL_PRS_CONSUMER_SYSRTC0_IN1

SYSRTC0 IN1 Consumer consumer.

SL_HAL_PRS_CONSUMER_HFXO0_OSCREQ

HFXO0 OSCREQ consumer consumer.

SL_HAL_PRS_CONSUMER_HFXO0_TIMEOUT

HFXO0 TIMEOUT Consumer consumer.

SL_HAL_PRS_CONSUMER_VDAC0_ASYNCTRIGCH0

VDAC0 ASYNCTRIGCH0 consumer consumer.

SL_HAL_PRS_CONSUMER_VDAC0_ASYNCTRIGCH1

VDAC0 ASYNCTRIGCH1 Consumer consumer.

SL_HAL_PRS_CONSUMER_VDAC0_SYNCTRIGCH0

VDAC0 SYNCTRIGCH0 Consumer consumer.

SL_HAL_PRS_CONSUMER_VDAC0_SYNCTRIGCH1

VDAC0 SYNCTRIGCH1 Consumer consumer.

SL_HAL_PRS_CONSUMER_WDOG1_SRC0

WDOG1 SRC0 consumer consumer.

SL_HAL_PRS_CONSUMER_WDOG1_SRC1

WDOG1 SRC1 Consumer consumer.


Function Documentation#

sl_hal_prs_async_init_channel#

void sl_hal_prs_async_init_channel (const sl_hal_prs_async_channel_init_t * init)

Configure Async channel.

Parameters
TypeDirectionArgument NameDescription
const sl_hal_prs_async_channel_init_t *[in]init

Pointer to configuration structure.


sl_hal_prs_sync_init_channel#

void sl_hal_prs_sync_init_channel (const sl_hal_prs_sync_channel_init_t * init)

Configure Sync channel.

Parameters
TypeDirectionArgument NameDescription
const sl_hal_prs_sync_channel_init_t *[in]init

Pointer to configuration structure.


sl_hal_prs_get_free_channel#

sl_status_t sl_hal_prs_get_free_channel (uint8_t * channel, sl_hal_prs_channel_type_t channel_type)

Search for the first free PRS channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t *[in]channel

PRS channel number.

sl_hal_prs_channel_type_t[in]channel_type

PRS channel type. This can be either SL_HAL_PRS_TYPE_ASYNC or SL_HAL_PRS_TYPE_SYNC.

It applies for sync/async channels.

Returns

  • SL_STATUS_OK if an unused PRS channel was found. If no free PRS channel was found then SL_STATUS_FAIL is returned.


sl_hal_prs_reset#

void sl_hal_prs_reset (void )

Reset all PRS channels.

Parameters
TypeDirectionArgument NameDescription
voidN/A

This function will reset all the PRS channel configuration.


sl_hal_prs_connect_channel_consumer#

void sl_hal_prs_connect_channel_consumer (uint8_t channel, sl_hal_prs_channel_type_t channel_type, sl_hal_prs_consumer_event_t consumer_event)

Connect a peripheral consumer to a PRS channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel number.

sl_hal_prs_channel_type_t[in]channel_type

PRS channel type. This can be either SL_HAL_PRS_TYPE_ASYNC or SL_HAL_PRS_TYPE_SYNC.

sl_hal_prs_consumer_event_t[in]consumer_event

This is the PRS consumer.

Different peripherals can use PRS channels as their input. This function can be used to connect a peripheral consumer to a PRS channel. Multiple consumers can be connected to a single PRS channel. It applies for sync/async channels.


sl_hal_prs_pin_output#

void sl_hal_prs_pin_output (uint8_t channel, sl_hal_prs_channel_type_t channel_type, sl_gpio_port_t port, uint8_t pin)

Send the output of a PRS channel to a GPIO pin.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel number.

sl_hal_prs_channel_type_t[in]channel_type

PRS channel type. This can be either SL_HAL_PRS_TYPE_ASYNC or SL_HAL_PRS_TYPE_SYNC.

sl_gpio_port_t[in]port

GPIO port

uint8_t[in]pin

GPIO pin

This function is used to send the output of a PRS channel to a GPIO pin.

Note

  • There are certain restrictions to where a PRS channel can be routed. Consult the datasheet of the device to see if the selected channel is routable to the requested gpio port . Some devices for instance can only route the async channels 0-5 on GPIO pins PAx and PBx while async channels 6-11 can only be routed to GPIO pins PCx and PDx. It applies for sync/async channels.


sl_hal_prs_async_set_channel_swlevel#

void sl_hal_prs_async_set_channel_swlevel (uint8_t channel, bool level)

Set level control bit for one channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

channel to set level for. Use logical OR combination of PRS_SWLEVEL_CHnLEVEL defines.

bool[in]level

Level to use for channel channel. Use logical OR combination of PRS_SWLEVEL_CHnLEVEL defines for channels to set high level, otherwise 0.

The level value for a channel is XORed with both the pulse possibly issued by sl_hal_prs_async_set_channel_swpulse() and the PRS input signal selected for the channel(s).


sl_hal_prs_async_get_channel_swlevel#

bool sl_hal_prs_async_get_channel_swlevel (uint8_t channel)

Get level control bit for a channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

Channel to get level for.

Returns

  • The current software level configuration for a channel.


sl_hal_prs_get_channel_value#

bool sl_hal_prs_get_channel_value (uint8_t channel, sl_hal_prs_channel_type_t channel_type)

Get the PRS channel value for one channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel to get value for.

sl_hal_prs_channel_type_t[in]channel_type

PRS channel type. This can be either SL_HAL_PRS_TYPE_ASYNC or SL_HAL_PRS_TYPE_SYNC.

It applies for sync/async channels

Returns

  • The current PRS channel output value.


sl_hal_prs_async_set_channel_swpulse#

void sl_hal_prs_async_set_channel_swpulse (uint8_t channel)

Trigger a high pulse (one HFPERCLK) for one channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel to trigger a pulse.

Setting a bit for a channel causes the bit in the register to remain high for one HFPERCLK cycle. Pulse is XORed with both the corresponding bit in PRS SWLEVEL register and the PRS input signal selected for the channel(s).


sl_hal_prs_async_connect_channel_producer#

void sl_hal_prs_async_connect_channel_producer (uint8_t channel, sl_hal_prs_async_producer_signal_t producer_signal)

Set PRS signal for an async channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel number.

sl_hal_prs_async_producer_signal_t[in]producer_signal

An async peripheral signal selected as a producer for PRS channel. It is a combination of source select and signal select values.


sl_hal_prs_sync_connect_channel_producer#

void sl_hal_prs_sync_connect_channel_producer (uint8_t channel, sl_hal_prs_sync_producer_signal_t producer_signal)

Set PRS signal for a sync channel.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel

PRS channel number.

sl_hal_prs_sync_producer_signal_t[in]producer_signal

A sync peripheral signal selected as a producer for PRS channel. It is a combination of source select and signal select values.


sl_hal_prs_async_combine_signals#

void sl_hal_prs_async_combine_signals (uint8_t channel_a, uint8_t channel_b, sl_hal_prs_logic_t logic)

Combine two PRS channels using a logic function.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]channel_a

PRS Channel for the A input.

uint8_t[in]channel_b

PRS Channel for the B input.

sl_hal_prs_logic_t[in]logic

The logic function to use when combining the Channel A and Channel B. The output of the logic function is the output of Channel A. Function like AND, OR, XOR, NOT and more are available.

This function allows you to combine the output of one PRS channel with the the signal of another PRS channel using various logic functions. Note that for series 2, config 1 devices, the hardware only allows a PRS channel to be combined with the previous channel. So for instance channel 5 can be combined only with channel 4. The logic function operates on two PRS channels called A and B. The output of PRS channel B is combined with the PRS source configured for channel A to produce an output. This output is used as the output of channel A.