PRS - Peripheral Reflex System
Description
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.
Functions |
|
void | PRS_SourceSignalSet (unsigned int ch, uint32_t source, uint32_t signal, PRS_Edge_TypeDef edge) |
Set a source and 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.
|
|
void | PRS_LevelSet (uint32_t level, uint32_t mask) |
Set level control bit for one or more channels.
|
|
uint32_t | PRS_LevelGet (void) |
Get level control bit for all channels.
|
|
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.
|
|
Macros |
|
#define | PRS_SYNC_CHAN_COUNT PRS_CHAN_COUNT |
PRS Synchronous channel count.
|
|
#define | PRS_ASYNC_CHAN_COUNT 0 |
PRS Asynchronous channel count.
|
|
Enumerations |
|
enum |
PRS_ChType_t
{
prsTypeAsync , prsTypeSync } |
PRS Channel type.
|
|
enum |
PRS_Edge_TypeDef
{
prsEdgeOff , prsEdgePos , prsEdgeNeg , prsEdgeBoth } |
Edge detection type.
|
|
enum |
PRS_Signal_t
{
prsSignalNone = PRS_CH_CTRL_SOURCESEL_NONE | (0x0 << _PRS_CH_CTRL_SIGSEL_SHIFT), prsSignalSW = PRS_CH_CTRL_SOURCESEL_NONE | (0x1 << _PRS_CH_CTRL_SIGSEL_SHIFT), prsSignalADC0_SINGLE = PRS_ADC0_SINGLE, prsSignalADC0_SCAN = PRS_ADC0_SCAN, 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, prsSignalRTC_OF = PRS_RTC_OF, prsSignalRTC_COMP0 = PRS_RTC_COMP0, prsSignalRTC_COMP1 = PRS_RTC_COMP1, prsSignalACMP0_OUT = PRS_ACMP0_OUT, prsSignalACMP1_OUT = PRS_ACMP1_OUT, prsSignalUSART0_TXC = PRS_USART0_TXC, prsSignalUSART0_RXDATAV = PRS_USART0_RXDATAV, prsSignalUSART0_IRTX = PRS_USART0_IRTX, prsSignalUSART1_TXC = PRS_USART1_TXC, prsSignalUSART1_RXDATAV = PRS_USART1_RXDATAV, prsSignalUSART1_IRTX = PRS_USART1_IRTX, prsSignalUSART2_TXC = PRS_USART2_TXC, prsSignalUSART2_RXDATAV = PRS_USART2_RXDATAV, prsSignalUSART2_IRTX = PRS_USART2_IRTX, prsSignalUART0_TXC = PRS_UART0_TXC, prsSignalUART0_RXDATAV = PRS_UART0_RXDATAV, 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, prsSignalGPIO_PIN8 = PRS_GPIO_PIN8, prsSignalGPIO_PIN9 = PRS_GPIO_PIN9, prsSignalGPIO_PIN10 = PRS_GPIO_PIN10, prsSignalGPIO_PIN11 = PRS_GPIO_PIN11, prsSignalGPIO_PIN12 = PRS_GPIO_PIN12, prsSignalGPIO_PIN13 = PRS_GPIO_PIN13, prsSignalGPIO_PIN14 = PRS_GPIO_PIN14, prsSignalGPIO_PIN15 = PRS_GPIO_PIN15 } |
PRS Signal.
|
|
Function Documentation
◆ 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.
◆ 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.
◆ PRS_Reset()
void PRS_Reset | ( | void |
|
) |
Reset all PRS channels.
This function will reset all the PRS channel configuration.
◆ PRS_ConnectSignal()
void PRS_ConnectSignal | ( | unsigned int |
ch,
|
PRS_ChType_t |
type,
|
||
PRS_Signal_t |
signal
|
||
) |
Connect a PRS signal to a 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.
- 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.
◆ PRS_LevelSet()
|
inline |
Set level control bit for one or more channels.
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).
- 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.
◆ PRS_LevelGet()
|
inline |
Get level control bit for all channels.
- Returns
- The current software level configuration.
◆ PRS_PulseTrigger()
|
inline |
Trigger a high pulse (one HFPERCLK) for one or more channels.
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).
- Parameters
-
[in] channels
Logical ORed combination of channels to trigger a pulse for. Use PRS_SWPULSE_CHnPULSE defines.
◆ PRS_ChannelLevelSet()
|
inline |
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).
◆ PRS_ChannelPulse()
|
inline |
Trigger a pulse on one PRS channel.
- Parameters
-
[in] ch
PRS channel number.
Macro Definition Documentation
◆ PRS_SYNC_CHAN_COUNT
#define PRS_SYNC_CHAN_COUNT PRS_CHAN_COUNT |
PRS Synchronous channel count.
◆ PRS_ASYNC_CHAN_COUNT
#define PRS_ASYNC_CHAN_COUNT 0 |
PRS Asynchronous channel count.
Enumeration Type Documentation
◆ PRS_ChType_t
enum PRS_ChType_t |
◆ PRS_Edge_TypeDef
enum PRS_Edge_TypeDef |
◆ PRS_Signal_t
enum PRS_Signal_t |
PRS Signal.