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 |
|
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_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.
|
|
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.
|
|
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.
|
|
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.
|
|
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_ASYNC_SUPPORTED 1 |
PRS asynchronous support.
|
|
Enumerations |
|
enum |
PRS_ChType_t
{
prsTypeAsync , prsTypeSync } |
PRS Channel type.
|
|
enum |
PRS_Edge_TypeDef
{
prsEdgeOff , prsEdgePos , prsEdgeNeg , prsEdgeBoth } |
Edge detection type.
|
|
enum |
PRS_Logic_t
{
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 |
PRS_Signal_t
{
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, prsSignalAGCL_CCA = PRS_AGCL_CCA, prsSignalAGCL_CCAREQ = PRS_AGCL_CCAREQ, prsSignalAGCL_GAINADJUST = PRS_AGCL_GAINADJUST, prsSignalAGCL_GAINOK = PRS_AGCL_GAINOK, prsSignalAGCL_GAINREDUCED = PRS_AGCL_GAINREDUCED, prsSignalAGCL_IFPKI1 = PRS_AGCL_IFPKI1, prsSignalAGCL_IFPKQ2 = PRS_AGCL_IFPKQ2, prsSignalAGCL_IFPKRST = PRS_AGCL_IFPKRST, prsSignalAGC_PEAKDET = PRS_AGC_PEAKDET, prsSignalAGC_PROPAGATED = PRS_AGC_PROPAGATED, prsSignalAGC_RSSIDONE = PRS_AGC_RSSIDONE, prsSignalBUFC_THR0 = PRS_BUFC_THR0, prsSignalBUFC_THR1 = PRS_BUFC_THR1, prsSignalBUFC_THR2 = PRS_BUFC_THR2, prsSignalBUFC_THR3 = PRS_BUFC_THR3, prsSignalBUFC_CNT0 = PRS_BUFC_CNT0, prsSignalBUFC_CNT1 = PRS_BUFC_CNT1, prsSignalBUFC_FULL = PRS_BUFC_FULL, prsSignalMODEML_ADVANCE = PRS_MODEML_ADVANCE, prsSignalMODEML_ANT0 = PRS_MODEML_ANT0, prsSignalMODEML_ANT1 = PRS_MODEML_ANT1, prsSignalMODEML_COHDSADET = PRS_MODEML_COHDSADET, prsSignalMODEML_COHDSALIVE = PRS_MODEML_COHDSALIVE, prsSignalMODEML_DCLK = PRS_MODEML_DCLK, prsSignalMODEML_DOUT = PRS_MODEML_DOUT, prsSignalMODEML_FRAMEDET = PRS_MODEML_FRAMEDET, prsSignalMODEM_FRAMESENT = PRS_MODEM_FRAMESENT, prsSignalMODEM_PREDET = PRS_MODEM_PREDET, prsSignalMODEM_LRDSADET = PRS_MODEM_LRDSADET, prsSignalMODEM_LRDSALIVE = PRS_MODEM_LRDSALIVE, prsSignalMODEM_LOWCORR = PRS_MODEM_LOWCORR, prsSignalMODEM_NEWSYMBOL = PRS_MODEM_NEWSYMBOL, prsSignalMODEM_NEWWND = PRS_MODEM_NEWWND, prsSignalMODEM_POSTPONE = PRS_MODEM_POSTPONE, prsSignalMODEMH_PRESENT = PRS_MODEMH_PRESENT, prsSignalMODEMH_RSSIJUMP = PRS_MODEMH_RSSIJUMP, prsSignalMODEMH_SYNCSENT = PRS_MODEMH_SYNCSENT, prsSignalMODEMH_TIMDET = PRS_MODEMH_TIMDET, prsSignalMODEMH_WEAK = PRS_MODEMH_WEAK, prsSignalMODEMH_EOF = PRS_MODEMH_EOF, prsSignalFRC_DCLK = PRS_FRC_DCLK, prsSignalFRC_DOUT = PRS_FRC_DOUT, prsSignalPROTIMERL_BOF = PRS_PROTIMERL_BOF, prsSignalPROTIMERL_CC0 = PRS_PROTIMERL_CC0, prsSignalPROTIMERL_CC1 = PRS_PROTIMERL_CC1, prsSignalPROTIMERL_CC2 = PRS_PROTIMERL_CC2, prsSignalPROTIMERL_CC3 = PRS_PROTIMERL_CC3, prsSignalPROTIMERL_CC4 = PRS_PROTIMERL_CC4, prsSignalPROTIMERL_LBTF = PRS_PROTIMERL_LBTF, prsSignalPROTIMERL_LBTR = PRS_PROTIMERL_LBTR, prsSignalPROTIMER_LBTS = PRS_PROTIMER_LBTS, prsSignalPROTIMER_POF = PRS_PROTIMER_POF, prsSignalPROTIMER_T0MATCH = PRS_PROTIMER_T0MATCH, prsSignalPROTIMER_T0UF = PRS_PROTIMER_T0UF, prsSignalPROTIMER_T1MATCH = PRS_PROTIMER_T1MATCH, prsSignalPROTIMER_T1UF = PRS_PROTIMER_T1UF, prsSignalPROTIMER_WOF = PRS_PROTIMER_WOF, prsSignalRACL_ACTIVE = PRS_RACL_ACTIVE, prsSignalRACL_LNAEN = PRS_RACL_LNAEN, prsSignalRACL_PAEN = PRS_RACL_PAEN, prsSignalRACL_RX = PRS_RACL_RX, prsSignalRACL_TX = PRS_RACL_TX, prsSignalRACL_CTIOUT0 = PRS_RACL_CTIOUT0, prsSignalRACL_CTIOUT1 = PRS_RACL_CTIOUT1, prsSignalRACL_CTIOUT2 = PRS_RACL_CTIOUT2, prsSignalRAC_CTIOUT3 = PRS_RAC_CTIOUT3, prsSignalSYNTH_MUX0 = PRS_SYNTH_MUX0, prsSignalSYNTH_MUX1 = PRS_SYNTH_MUX1, prsSignalPRORTC_CCV0 = PRS_PRORTC_CCV0, prsSignalPRORTC_CCV1 = PRS_PRORTC_CCV1 } |
PRS Signal.
|
|
enum |
PRS_Consumer_t
{
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.
|
|
Function Documentation
◆ PRS_ConvertToSyncSource()
uint32_t PRS_ConvertToSyncSource | ( | uint32_t |
asyncSource
|
) |
Convert an async PRS source to a sync 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.
- Parameters
-
[in] asyncSource
The id of the asynchronous PRS source.
- Returns
- The id of the corresponding synchronous PRS source.
◆ PRS_ConvertToSyncSignal()
uint32_t PRS_ConvertToSyncSignal | ( | uint32_t |
asyncSource,
|
uint32_t |
asyncSignal
|
||
) |
Convert an async PRS signal to a sync signal.
PRS values for TIMER2 and TIMER3 signals differ between asynchronous and synchronous PRS channels. This function must be used to handle the conversion.
- Parameters
-
[in] asyncSource
The id of the asynchronous PRS source. [in] asyncSignal
The id of the asynchronous PRS signal.
- Returns
- The id of the corresponding synchronous PRS signal.
◆ 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_SourceAsyncSignalSet()
void PRS_SourceAsyncSignalSet | ( | unsigned int |
ch,
|
uint32_t |
source,
|
||
uint32_t |
signal
|
||
) |
Set the source and asynchronous signal for a channel.
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.
- 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.
◆ 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_ConnectConsumer()
void PRS_ConnectConsumer | ( | unsigned int |
ch,
|
PRS_ChType_t |
type,
|
||
PRS_Consumer_t |
consumer
|
||
) |
Connect a peripheral consumer to a PRS channel.
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.
- 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.
◆ 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.
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
- 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
◆ PRS_Combine()
void PRS_Combine | ( | unsigned int |
chA,
|
unsigned int |
chB,
|
||
PRS_Logic_t |
logic
|
||
) |
Combine two PRS channels using a logic function.
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.
- 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.
◆ 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).
- Note
- Note that software level control is only available for asynchronous channels on Series 2 devices.
- 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_Values()
|
inline |
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.
◆ PRS_ChannelValue()
|
inline |
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.
◆ 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_SYNC_CH_NUM |
PRS Synchronous channel count.
◆ PRS_ASYNC_CHAN_COUNT
#define PRS_ASYNC_CHAN_COUNT PRS_ASYNC_CH_NUM |
PRS Asynchronous channel count.
◆ PRS_ASYNC_SUPPORTED
#define PRS_ASYNC_SUPPORTED 1 |
PRS asynchronous support.
Enumeration Type Documentation
◆ PRS_ChType_t
enum PRS_ChType_t |
◆ PRS_Edge_TypeDef
enum PRS_Edge_TypeDef |
◆ PRS_Logic_t
enum PRS_Logic_t |
Logic functions that can be used when combining two PRS channels.
◆ PRS_Signal_t
enum PRS_Signal_t |
PRS Signal.
◆ PRS_Consumer_t
enum PRS_Consumer_t |
PRS Consumers.