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.

Enumerations#

enum
prsTypeAsync
prsTypeSync
}

PRS Channel type.

enum
prsEdgeOff
prsEdgePos
prsEdgeNeg
prsEdgeBoth
}

Edge detection type.

enum
prsLogic_Zero = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ZERO
prsLogic_A_NOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NOR_B
prsLogic_NOT_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_AND_B
prsLogic_NOT_A = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A
prsLogic_A_AND_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_NOT_B
prsLogic_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_B
prsLogic_A_XOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XOR_B
prsLogic_A_NAND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_NAND_B
prsLogic_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_B
prsLogic_A_XNOR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_XNOR_B
prsLogic_B = _PRS_ASYNC_CH_CTRL_FNSEL_B
prsLogic_NOT_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_OR_B
prsLogic_A = _PRS_ASYNC_CH_CTRL_FNSEL_A
prsLogic_A_OR_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_NOT_B
prsLogic_A_OR_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_B
prsLogic_One = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ONE
}

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

enum
prsSignalNone = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x0 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT)
prsSignalSW = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x1 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT)
prsSignalTIMER0_UF = PRS_TIMER0_UF
prsSignalTIMER0_OF = PRS_TIMER0_OF
prsSignalTIMER0_CC0 = PRS_TIMER0_CC0
prsSignalTIMER0_CC1 = PRS_TIMER0_CC1
prsSignalTIMER0_CC2 = PRS_TIMER0_CC2
prsSignalTIMER1_UF = PRS_TIMER1_UF
prsSignalTIMER1_OF = PRS_TIMER1_OF
prsSignalTIMER1_CC0 = PRS_TIMER1_CC0
prsSignalTIMER1_CC1 = PRS_TIMER1_CC1
prsSignalTIMER1_CC2 = PRS_TIMER1_CC2
prsSignalTIMER2_UF = PRS_TIMER2_UF
prsSignalTIMER2_OF = PRS_TIMER2_OF
prsSignalTIMER2_CC0 = PRS_TIMER2_CC0
prsSignalTIMER2_CC1 = PRS_TIMER2_CC1
prsSignalTIMER2_CC2 = PRS_TIMER2_CC2
prsSignalTIMER3_UF = PRS_TIMER3_UF
prsSignalTIMER3_OF = PRS_TIMER3_OF
prsSignalTIMER3_CC0 = PRS_TIMER3_CC0
prsSignalTIMER3_CC1 = PRS_TIMER3_CC1
prsSignalTIMER3_CC2 = PRS_TIMER3_CC2
prsSignalTIMER4_UF = PRS_TIMER4_UF
prsSignalTIMER4_OF = PRS_TIMER4_OF
prsSignalTIMER4_CC0 = PRS_TIMER4_CC0
prsSignalTIMER4_CC1 = PRS_TIMER4_CC1
prsSignalTIMER4_CC2 = PRS_TIMER4_CC2
prsSignalLETIMER0_CH0 = PRS_LETIMER0_CH0
prsSignalLETIMER0_CH1 = PRS_LETIMER0_CH1
prsSignalCORE_CTIOUT0 = PRS_CORE_CTIOUT0
prsSignalCORE_CTIOUT1 = PRS_CORE_CTIOUT1
prsSignalCORE_CTIOUT2 = PRS_CORE_CTIOUT2
prsSignalCORE_CTIOUT3 = PRS_CORE_CTIOUT3
prsSignalCMUL_CLKOUT0 = PRS_CMUL_CLKOUT0
prsSignalCMUL_CLKOUT1 = PRS_CMUL_CLKOUT1
prsSignalCMUL_CLKOUT2 = PRS_CMUL_CLKOUT2
prsSignalPRSL_ASYNCH0 = PRS_PRSL_ASYNCH0
prsSignalPRSL_ASYNCH1 = PRS_PRSL_ASYNCH1
prsSignalPRSL_ASYNCH2 = PRS_PRSL_ASYNCH2
prsSignalPRSL_ASYNCH3 = PRS_PRSL_ASYNCH3
prsSignalPRSL_ASYNCH4 = PRS_PRSL_ASYNCH4
prsSignalPRSL_ASYNCH5 = PRS_PRSL_ASYNCH5
prsSignalPRSL_ASYNCH6 = PRS_PRSL_ASYNCH6
prsSignalPRSL_ASYNCH7 = PRS_PRSL_ASYNCH7
prsSignalPRS_ASYNCH8 = PRS_PRS_ASYNCH8
prsSignalPRS_ASYNCH9 = PRS_PRS_ASYNCH9
prsSignalPRS_ASYNCH10 = PRS_PRS_ASYNCH10
prsSignalPRS_ASYNCH11 = PRS_PRS_ASYNCH11
prsSignalRTCC_CCV0 = PRS_RTCC_CCV0
prsSignalRTCC_CCV1 = PRS_RTCC_CCV1
prsSignalRTCC_CCV2 = PRS_RTCC_CCV2
prsSignalBURTC_COMP = PRS_BURTC_COMP
prsSignalBURTC_OF = PRS_BURTC_OF
prsSignalUSART0_TXC = PRS_USART0_TXC
prsSignalUSART0_RXDATA = PRS_USART0_RXDATA
prsSignalUSART0_IRTX = PRS_USART0_IRTX
prsSignalUSART0_RTS = PRS_USART0_RTS
prsSignalUSART0_TX = PRS_USART0_TX
prsSignalUSART0_CS = PRS_USART0_CS
prsSignalUSART1_TXC = PRS_USART1_TXC
prsSignalUSART1_RXDATA = PRS_USART1_RXDATA
prsSignalUSART1_IRTX = PRS_USART1_IRTX
prsSignalUSART1_RTS = PRS_USART1_RTS
prsSignalUSART1_TX = PRS_USART1_TX
prsSignalUSART1_CS = PRS_USART1_CS
prsSignalIADC0_SCANENTRY = PRS_IADC0_SCANENTRYDONE
prsSignalIADC0_SCANTABLE = PRS_IADC0_SCANTABLEDONE
prsSignalIADC0_SINGLE = PRS_IADC0_SINGLEDONE
prsSignalGPIO_PIN0 = PRS_GPIO_PIN0
prsSignalGPIO_PIN1 = PRS_GPIO_PIN1
prsSignalGPIO_PIN2 = PRS_GPIO_PIN2
prsSignalGPIO_PIN3 = PRS_GPIO_PIN3
prsSignalGPIO_PIN4 = PRS_GPIO_PIN4
prsSignalGPIO_PIN5 = PRS_GPIO_PIN5
prsSignalGPIO_PIN6 = PRS_GPIO_PIN6
prsSignalGPIO_PIN7 = PRS_GPIO_PIN7
prsSignalLFRCO_CALMEAS = PRS_LFRCO_CALMEAS
prsSignalLFRCO_SDM = PRS_LFRCO_SDM
prsSignalLFRCO_TCMEAS = PRS_LFRCO_TCMEAS
}

PRS Signal.

enum
prsConsumerNone = 0x000
prsConsumerCMU_CALDN = offsetof(PRS_TypeDef, CONSUMER_CMU_CALDN)
prsConsumerCMU_CALUP = offsetof(PRS_TypeDef, CONSUMER_CMU_CALUP)
prsConsumerIADC0_SCANTRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SCANTRIGGER)
prsConsumerIADC0_SINGLETRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SINGLETRIGGER)
prsConsumerLDMA_REQUEST0 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ0)
prsConsumerLDMA_REQUEST1 = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ1)
prsConsumerLETIMER0_CLEAR = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_CLEAR)
prsConsumerLETIMER0_START = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_START)
prsConsumerLETIMER0_STOP = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_STOP)
prsConsumerTIMER0_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC0)
prsConsumerTIMER0_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC1)
prsConsumerTIMER0_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC2)
prsConsumerTIMER1_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC0)
prsConsumerTIMER1_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC1)
prsConsumerTIMER1_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC2)
prsConsumerTIMER2_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC0)
prsConsumerTIMER2_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC1)
prsConsumerTIMER2_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC2)
prsConsumerTIMER3_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC0)
prsConsumerTIMER3_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC1)
prsConsumerTIMER3_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC2)
prsConsumerTIMER4_CC0 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC0)
prsConsumerTIMER4_CC1 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC1)
prsConsumerTIMER4_CC2 = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC2)
prsConsumerUSART0_CLK = offsetof(PRS_TypeDef, CONSUMER_USART0_CLK)
prsConsumerUSART0_IR = offsetof(PRS_TypeDef, CONSUMER_USART0_IR)
prsConsumerUSART0_RX = offsetof(PRS_TypeDef, CONSUMER_USART0_RX)
prsConsumerUSART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART0_TRIGGER)
prsConsumerUSART1_CLK = offsetof(PRS_TypeDef, CONSUMER_USART1_CLK)
prsConsumerUSART1_IR = offsetof(PRS_TypeDef, CONSUMER_USART1_IR)
prsConsumerUSART1_RX = offsetof(PRS_TypeDef, CONSUMER_USART1_RX)
prsConsumerUSART1_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_USART1_TRIGGER)
prsConsumerEUART0_RX = offsetof(PRS_TypeDef, CONSUMER_EUART0_RX)
prsConsumerEUART0_TRIGGER = offsetof(PRS_TypeDef, CONSUMER_EUART0_TRIGGER)
prsConsumerWDOG0_SRC0 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC0)
prsConsumerWDOG0_SRC1 = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC1)
prsConsumerRTCC_CC0 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC0)
prsConsumerRTCC_CC1 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC1)
prsConsumerRTCC_CC2 = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC2)
}

PRS Consumers.

Functions#

void
PRS_LevelSet(uint32_t level, uint32_t mask)

Set level control bit for one or more channels.

uint32_t

Get level control bit for all channels.

uint32_t
PRS_Values(PRS_ChType_t type)

Get the PRS channel values for all channels.

bool
PRS_ChannelValue(unsigned int ch, PRS_ChType_t type)

Get the PRS channel value for a single channel.

void
PRS_PulseTrigger(uint32_t channels)

Trigger a high pulse (one HFPERCLK) for one or more channels.

void
PRS_ChannelLevelSet(unsigned int ch, bool level)

Set the PRS channel level for one asynchronous PRS channel.

void
PRS_ChannelPulse(unsigned int ch)

Trigger a pulse on one PRS channel.

void
PRS_SourceSignalSet(unsigned int ch, uint32_t source, uint32_t signal, PRS_Edge_TypeDef edge)

Set a source and signal for a channel.

void
PRS_SourceAsyncSignalSet(unsigned int ch, uint32_t source, uint32_t signal)

Set the source and asynchronous signal for a channel.

int
PRS_GetFreeChannel(PRS_ChType_t type)

Search for the first free PRS channel.

void
PRS_Reset(void)

Reset all PRS channels.

void
PRS_ConnectSignal(unsigned int ch, PRS_ChType_t type, PRS_Signal_t signal)

Connect a PRS signal to a channel.

uint32_t
PRS_ConvertToSyncSource(uint32_t asyncSource)

Convert an async PRS source to a sync source.

uint32_t
PRS_ConvertToSyncSignal(uint32_t asyncSource, uint32_t asyncSignal)

Convert an async PRS signal to a sync signal.

void
PRS_ConnectConsumer(unsigned int ch, PRS_ChType_t type, PRS_Consumer_t consumer)

Connect a peripheral consumer to a PRS channel.

void
PRS_PinOutput(unsigned int ch, PRS_ChType_t type, GPIO_Port_TypeDef port, uint8_t pin)

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

void
PRS_Combine(unsigned int chA, unsigned int chB, PRS_Logic_t logic)

Combine two PRS channels using a logic function.

Macros#

#define
PRS_SYNC_CHAN_COUNT PRS_SYNC_CH_NUM

PRS Synchronous channel count.

#define
PRS_ASYNC_CHAN_COUNT PRS_ASYNC_CH_NUM

PRS Asynchronous channel count.

#define

PRS asynchronous support.

Enumeration Documentation#

PRS_ChType_t#

PRS_ChType_t

PRS Channel type.

Enumerator
prsTypeAsync

Asynchronous channel type.

prsTypeSync

Synchronous channel type.


Definition at line 102 of file platform/emlib/inc/em_prs.h

PRS_Edge_TypeDef#

PRS_Edge_TypeDef

Edge detection type.

Enumerator
prsEdgeOff

Leave signal as is.

prsEdgePos

Generate pulses on positive edge.

prsEdgeNeg

Generate pulses on negative edge.

prsEdgeBoth

Generate pulses on both edges.


Definition at line 108 of file platform/emlib/inc/em_prs.h

PRS_Logic_t#

PRS_Logic_t

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

Enumerator
prsLogic_Zero

Logical 0.

prsLogic_A_NOR_B

A NOR B.

prsLogic_NOT_A_AND_B

(!A) NOR B.

prsLogic_NOT_A

!A.

prsLogic_A_AND_NOT_B

A AND (!B).

prsLogic_NOT_B

!B.

prsLogic_A_XOR_B

A XOR B.

prsLogic_A_NAND_B

A NAND B.

prsLogic_A_AND_B

A AND B.

prsLogic_A_XNOR_B

A XNOR B.

prsLogic_B

B.

prsLogic_NOT_A_OR_B

(!A) OR B.

prsLogic_A

A.

prsLogic_A_OR_NOT_B

A OR (!B).

prsLogic_A_OR_B

A OR B.

prsLogic_One

Logical 1.


Definition at line 117 of file platform/emlib/inc/em_prs.h

PRS_Signal_t#

PRS_Signal_t

PRS Signal.

Enumerator
prsSignalNone

No Signal.

prsSignalSW

Software-reserved Signal.

prsSignalTIMER0_UF

TIMER0 underflow Signal.

prsSignalTIMER0_OF

TIMER0 overflow Signal.

prsSignalTIMER0_CC0

TIMER0 capture/compare channel 0 Signal.

prsSignalTIMER0_CC1

TIMER0 capture/compare channel 1 Signal.

prsSignalTIMER0_CC2

TIMER0 capture/compare channel 2 Signal.

prsSignalTIMER1_UF

TIMER1 underflow Signal.

prsSignalTIMER1_OF

TIMER1 overflow Signal.

prsSignalTIMER1_CC0

TIMER1 capture/compare channel 0 Signal.

prsSignalTIMER1_CC1

TIMER1 capture/compare channel 1 Signal.

prsSignalTIMER1_CC2

TIMER1 capture/compare channel 2 Signal.

prsSignalTIMER2_UF

TIMER2 underflow Signal.

prsSignalTIMER2_OF

TIMER2 overflow Signal.

prsSignalTIMER2_CC0

TIMER2 capture/compare channel 0 Signal.

prsSignalTIMER2_CC1

TIMER2 capture/compare channel 1 Signal.

prsSignalTIMER2_CC2

TIMER2 capture/compare channel 2 Signal.

prsSignalTIMER3_UF

TIMER3 underflow Signal.

prsSignalTIMER3_OF

TIMER3 overflow Signal.

prsSignalTIMER3_CC0

TIMER3 capture/compare channel 0 Signal.

prsSignalTIMER3_CC1

TIMER3 capture/compare channel 1 Signal.

prsSignalTIMER3_CC2

TIMER3 capture/compare channel 2 Signal.

prsSignalTIMER4_UF

TIMER4 underflow Signal.

prsSignalTIMER4_OF

TIMER4 overflow Signal.

prsSignalTIMER4_CC0

TIMER4 capture/compare channel 0 Signal.

prsSignalTIMER4_CC1

TIMER4 capture/compare channel 1 Signal.

prsSignalTIMER4_CC2

TIMER4 capture/compare channel 2 Signal.

prsSignalLETIMER0_CH0

LETIMER0 channel 0 Signal.

prsSignalLETIMER0_CH1

LETIMER0 channel 1 Signal.

prsSignalCORE_CTIOUT0

CORE CTIOUT0 Signal.

prsSignalCORE_CTIOUT1

CORE CTIOUT1 Signal.

prsSignalCORE_CTIOUT2

CORE CTIOUT2 Signal.

prsSignalCORE_CTIOUT3

CORE CTIOUT3 Signal.

prsSignalCMUL_CLKOUT0

CMU CLKOUT0 Signal.

prsSignalCMUL_CLKOUT1

CMU CLKOUT1 Signal.

prsSignalCMUL_CLKOUT2

CMU CLKOUT2 Signal.

prsSignalPRSL_ASYNCH0

PRS channel 0 Signal.

prsSignalPRSL_ASYNCH1

PRS channel 1 Signal.

prsSignalPRSL_ASYNCH2

PRS channel 2 Signal.

prsSignalPRSL_ASYNCH3

PRS channel 3 Signal.

prsSignalPRSL_ASYNCH4

PRS channel 4 Signal.

prsSignalPRSL_ASYNCH5

PRS channel 5 Signal.

prsSignalPRSL_ASYNCH6

PRS channel 6 Signal.

prsSignalPRSL_ASYNCH7

PRS channel 7 Signal.

prsSignalPRS_ASYNCH8

PRS channel 8 Signal.

prsSignalPRS_ASYNCH9

PRS channel 9 Signal.

prsSignalPRS_ASYNCH10

PRS channel 10 Signal.

prsSignalPRS_ASYNCH11

PRS channel 11 Signal.

prsSignalRTCC_CCV0

RTCC capture/compare channel 0 Signal.

prsSignalRTCC_CCV1

RTCC capture/compare channel 1 Signal.

prsSignalRTCC_CCV2

RTCC capture/compare channel 2 Signal.

prsSignalBURTC_COMP

BURTC compare Signal.

prsSignalBURTC_OF

BURTC overflow Signal.

prsSignalUSART0_TXC

USART0 TX complete Signal.

prsSignalUSART0_RXDATA

USART0 RX data available Signal.

prsSignalUSART0_IRTX

USART0 IR TX Signal.

prsSignalUSART0_RTS

USART0 RTS Signal.

prsSignalUSART0_TX

USART0 TX Signal.

prsSignalUSART0_CS

USART0 chip select Signal.

prsSignalUSART1_TXC

USART1 TX complete Signal.

prsSignalUSART1_RXDATA

USART1 RX data available Signal.

prsSignalUSART1_IRTX

USART1 IR TX Signal.

prsSignalUSART1_RTS

USART1 RTS Signal.

prsSignalUSART1_TX

USART1 TX Signal.

prsSignalUSART1_CS

USART1 chip select Signal.

prsSignalIADC0_SCANENTRY

IADC0 scan entry Signal.

prsSignalIADC0_SCANTABLE

IADC0 scan table Signal.

prsSignalIADC0_SINGLE

IADC0 single Signal.

prsSignalGPIO_PIN0

GPIO Pin 0 Signal.

prsSignalGPIO_PIN1

GPIO Pin 1 Signal.

prsSignalGPIO_PIN2

GPIO Pin 2 Signal.

prsSignalGPIO_PIN3

GPIO Pin 3 Signal.

prsSignalGPIO_PIN4

GPIO Pin 4 Signal.

prsSignalGPIO_PIN5

GPIO Pin 5 Signal.

prsSignalGPIO_PIN6

GPIO Pin 6 Signal.

prsSignalGPIO_PIN7

GPIO Pin 7 Signal.

prsSignalLFRCO_CALMEAS
prsSignalLFRCO_SDM

LFRCO Calibration Measure Signal.

prsSignalLFRCO_TCMEAS

LFRCO Sigma Delta Modulator output Signal.


Definition at line 138 of file platform/emlib/inc/em_prs.h

PRS_Consumer_t#

PRS_Consumer_t

PRS Consumers.

Enumerator
prsConsumerNone

No PRS consumer.

prsConsumerCMU_CALDN

CMU calibration down consumer.

prsConsumerCMU_CALUP

CMU calibration up consumer.

prsConsumerIADC0_SCANTRIGGER

IADC0 scan trigger consumer.

prsConsumerIADC0_SINGLETRIGGER

IADC0 single trigger consumer.

prsConsumerLDMA_REQUEST0

LDMA Request 0 consumer.

prsConsumerLDMA_REQUEST1

LDMA Request 1 consumer.

prsConsumerLETIMER0_CLEAR

LETIMER0 clear consumer.

prsConsumerLETIMER0_START

LETIMER0 start consumer.

prsConsumerLETIMER0_STOP

LETIMER0 stop consumer.

prsConsumerTIMER0_CC0

TIMER0 capture/compare channel 0 consumer.

prsConsumerTIMER0_CC1

TIMER0 capture/compare channel 1 consumer.

prsConsumerTIMER0_CC2

TIMER0 capture/compare channel 2 consumer.

prsConsumerTIMER1_CC0

TIMER1 capture/compare channel 0 consumer.

prsConsumerTIMER1_CC1

TIMER1 capture/compare channel 1 consumer.

prsConsumerTIMER1_CC2

TIMER1 capture/compare channel 2 consumer.

prsConsumerTIMER2_CC0

TIMER2 capture/compare channel 0 consumer.

prsConsumerTIMER2_CC1

TIMER2 capture/compare channel 1 consumer.

prsConsumerTIMER2_CC2

TIMER2 capture/compare channel 2 consumer.

prsConsumerTIMER3_CC0

TIMER3 capture/compare channel 0 consumer.

prsConsumerTIMER3_CC1

TIMER3 capture/compare channel 1 consumer.

prsConsumerTIMER3_CC2

TIMER3 capture/compare channel 2 consumer.

prsConsumerTIMER4_CC0

TIMER4 capture/compare channel 0 consumer.

prsConsumerTIMER4_CC1

TIMER4 capture/compare channel 1 consumer.

prsConsumerTIMER4_CC2

TIMER4 capture/compare channel 2 consumer.

prsConsumerUSART0_CLK

USART0 clock consumer.

prsConsumerUSART0_IR

USART0 IR consumer.

prsConsumerUSART0_RX

USART0 RX consumer.

prsConsumerUSART0_TRIGGER

USART0 trigger consumer.

prsConsumerUSART1_CLK

USART1 clock consumer.

prsConsumerUSART1_IR

USART1 IR consumer.

prsConsumerUSART1_RX

USART1 TX consumer.

prsConsumerUSART1_TRIGGER

USART1 trigger consumer.

prsConsumerEUART0_RX

EUART0 RX consumer.

prsConsumerEUART0_TRIGGER

EUART0 TRIGGER Consumer.

prsConsumerWDOG0_SRC0

WDOG0 source 0 consumer.

prsConsumerWDOG0_SRC1

WDOG0 source 1 consumer.

prsConsumerRTCC_CC0

RTCC capture/compare channel 0 consumer.

prsConsumerRTCC_CC1

RTCC capture/compare channel 1 consumer.

prsConsumerRTCC_CC2

RTCC capture/compare channel 2 consumer.


Definition at line 851 of file platform/emlib/inc/em_prs.h

Function Documentation#

PRS_LevelSet#

void PRS_LevelSet (uint32_t level, uint32_t mask)

Set level control bit for one or more channels.

Parameters
[in]level

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

[in]mask

Mask indicating which channels to set level for. Use logical OR combination of PRS_SWLEVEL_CHnLEVEL defines.

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

Note

  • Note that software level control is only available for asynchronous channels on Series 2 devices.


Definition at line 1010 of file platform/emlib/inc/em_prs.h

PRS_LevelGet#

uint32_t PRS_LevelGet (void )

Get level control bit for all channels.

Parameters
N/A

Returns

  • The current software level configuration.


Definition at line 1026 of file platform/emlib/inc/em_prs.h

PRS_Values#

uint32_t PRS_Values (PRS_ChType_t type)

Get the PRS channel values for all channels.

Parameters
[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

Returns

  • The current PRS channel output values for all channels as a bitset.


Definition at line 1047 of file platform/emlib/inc/em_prs.h

PRS_ChannelValue#

bool PRS_ChannelValue (unsigned int ch, PRS_ChType_t type)

Get the PRS channel value for a single channel.

Parameters
[in]ch

PRS channel number.

[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

Returns

  • The current PRS channel output value. This is either 0 or 1.


Definition at line 1075 of file platform/emlib/inc/em_prs.h

PRS_PulseTrigger#

void PRS_PulseTrigger (uint32_t channels)

Trigger a high pulse (one HFPERCLK) for one or more channels.

Parameters
[in]channels

Logical ORed combination of channels to trigger a pulse for. Use PRS_SWPULSE_CHnPULSE defines.

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).


Definition at line 1095 of file platform/emlib/inc/em_prs.h

PRS_ChannelLevelSet#

void PRS_ChannelLevelSet (unsigned int ch, bool level)

Set the PRS channel level for one asynchronous PRS channel.

Parameters
[in]ch

PRS channel number.

[in]level

true to set the level high (1) and false to set the level low (0).


Definition at line 1114 of file platform/emlib/inc/em_prs.h

PRS_ChannelPulse#

void PRS_ChannelPulse (unsigned int ch)

Trigger a pulse on one PRS channel.

Parameters
[in]ch

PRS channel number.


Definition at line 1126 of file platform/emlib/inc/em_prs.h

PRS_SourceSignalSet#

void PRS_SourceSignalSet (unsigned int ch, uint32_t source, uint32_t signal, PRS_Edge_TypeDef edge)

Set a source and signal for a channel.

Parameters
[in]ch

A channel to define the signal and source for.

[in]source

A source to select for the channel. Use one of PRS_CH_CTRL_SOURCESEL_x defines.

[in]signal

A signal (for selected source) to use. Use one of PRS_CH_CTRL_SIGSEL_x defines.

[in]edge

An edge (for selected source/signal) to generate the pulse for.


Definition at line 323 of file platform/emlib/src/em_prs.c

PRS_SourceAsyncSignalSet#

void PRS_SourceAsyncSignalSet (unsigned int ch, uint32_t source, uint32_t signal)

Set the source and asynchronous signal for a channel.

Parameters
[in]ch

A channel to define the source and asynchronous signal for.

[in]source

A source to select for the channel. Use one of PRS_CH_CTRL_SOURCESEL_x defines.

[in]signal

An asynchronous signal (for selected source) to use. Use one of the PRS_CH_CTRL_SIGSEL_x defines that support asynchronous operation.

Asynchronous reflexes are not clocked on HFPERCLK and can be used even in EM2/EM3. There is a limitation to reflexes operating in asynchronous mode in that they can only be used by a subset of the reflex consumers. See the PRS chapter in the reference manual for the complete list of supported asynchronous signals and consumers.

Note

  • This function is not supported on EFM32GxxxFyyy parts. In asynchronous mode, the edge detector only works in EM0 and should not be used. The EDSEL parameter in PRS_CHx_CTRL register is set to 0 (OFF) by default.


Definition at line 370 of file platform/emlib/src/em_prs.c

PRS_GetFreeChannel#

int PRS_GetFreeChannel (PRS_ChType_t type)

Search for the first free PRS channel.

Parameters
[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

Returns

  • Channel number >= 0 if an unused PRS channel was found. If no free PRS channel was found then -1 is returned.


Definition at line 428 of file platform/emlib/src/em_prs.c

PRS_Reset#

void PRS_Reset (void )

Reset all PRS channels.

Parameters
N/A

This function will reset all the PRS channel configuration.


Definition at line 457 of file platform/emlib/src/em_prs.c

PRS_ConnectSignal#

void PRS_ConnectSignal (unsigned int ch, PRS_ChType_t type, PRS_Signal_t signal)

Connect a PRS signal to a channel.

Parameters
[in]ch

PRS channel number.

[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

[in]signal

This is the PRS signal that should be placed on the channel.

This function will make the PRS signal available on the specific channel. Only a single PRS signal can be connected to any given channel.


Definition at line 495 of file platform/emlib/src/em_prs.c

PRS_ConvertToSyncSource#

uint32_t PRS_ConvertToSyncSource (uint32_t asyncSource)

Convert an async PRS source to a sync source.

Parameters
[in]asyncSource

The id of the asynchronous PRS source.

This conversion must be done because the id's of the same peripheral source is different depending on if it's used as an asynchronous PRS source or a synchronous PRS source.

Returns

  • The id of the corresponding synchronous PRS source.


Definition at line 126 of file platform/emlib/src/em_prs.c

PRS_ConvertToSyncSignal#

uint32_t PRS_ConvertToSyncSignal (uint32_t asyncSource, uint32_t asyncSignal)

Convert an async PRS signal to a sync signal.

Parameters
[in]asyncSource

The id of the asynchronous PRS source.

[in]asyncSignal

The id of the asynchronous PRS signal.

PRS values for some peripherals signals differ between asynchronous and synchronous PRS channels. This function must be used to handle the conversion.

Returns

  • The id of the corresponding synchronous PRS signal.


Definition at line 206 of file platform/emlib/src/em_prs.c

PRS_ConnectConsumer#

void PRS_ConnectConsumer (unsigned int ch, PRS_ChType_t type, PRS_Consumer_t consumer)

Connect a peripheral consumer to a PRS channel.

Parameters
[in]ch

PRS channel number.

[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

[in]consumer

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.


Definition at line 554 of file platform/emlib/src/em_prs.c

PRS_PinOutput#

void PRS_PinOutput (unsigned int ch, PRS_ChType_t type, GPIO_Port_TypeDef port, uint8_t pin)

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

Parameters
[in]ch

PRS channel number.

[in]type

PRS channel type. This can be either prsTypeAsync or prsTypeSync.

[in]port

GPIO port

[in]pin

GPIO pin

This function is used to send the output of a PRS channel to a GPIO pin. Note that there are certain restrictions to where a PRS channel can be routed. Consult the datasheet of the device to see if a channel can be routed to the requested GPIO pin. 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


Definition at line 595 of file platform/emlib/src/em_prs.c

PRS_Combine#

void PRS_Combine (unsigned int chA, unsigned int chB, PRS_Logic_t logic)

Combine two PRS channels using a logic function.

Parameters
[in]chA

PRS Channel for the A input.

[in]chB

PRS Channel for the B input.

[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.


Definition at line 640 of file platform/emlib/src/em_prs.c

Macro Definition Documentation#

PRS_SYNC_CHAN_COUNT#

#define PRS_SYNC_CHAN_COUNT
Value:
PRS_SYNC_CH_NUM

PRS Synchronous channel count.


Definition at line 57 of file platform/emlib/inc/em_prs.h

PRS_ASYNC_CHAN_COUNT#

#define PRS_ASYNC_CHAN_COUNT
Value:
PRS_ASYNC_CH_NUM

PRS Asynchronous channel count.


Definition at line 59 of file platform/emlib/inc/em_prs.h

PRS_ASYNC_SUPPORTED#

#define PRS_ASYNC_SUPPORTED
Value:
1

PRS asynchronous support.


Definition at line 74 of file platform/emlib/inc/em_prs.h