SYSRTC - System Real Time Counter

Description

System Real Time Counter (SYSRTC) Peripheral API.

This module contains functions to control the SYSRTC peripheral of Silicon Labs 32-bit MCUs and SoCs. The SYSRTC ensures timekeeping in low energy modes.

Data Structures

struct  sl_sysrtc_config_t
 SYSRTC configuration structure.
 
struct  sl_sysrtc_group_channel_compare_config_t
 Compare channel configuration structure.
 
struct  sl_sysrtc_group_channel_capture_config_t
 Capture channel configuration structure.
 
struct  sl_sysrtc_group_config_t
 Group configuration structure.
 

Functions

void sl_sysrtc_init (const sl_sysrtc_config_t *p_config)
 Initializes SYSRTC module.
 
void sl_sysrtc_enable (void)
 Enables SYSRTC counting.
 
void sl_sysrtc_disable (void)
 Disables SYSRTC counting.
 
void sl_sysrtc_wait_sync (void)
 Waits for the SYSRTC to complete all synchronization of register changes and commands.
 
void sl_sysrtc_wait_ready (void)
 Waits for the SYSRTC to complete reseting or disabling procedure.
 
void sl_sysrtc_start (void)
 Starts SYSRTC counter.
 
void sl_sysrtc_stop (void)
 Stops the SYSRTC counter.
 
void sl_sysrtc_reset (void)
 Restores SYSRTC to its reset state.
 
uint32_t sl_sysrtc_get_status (void)
 Gets SYSRTC STATUS register value.
 
void sl_sysrtc_lock (void)
 Locks SYSRTC registers.
 
void sl_sysrtc_unlock (void)
 Unlocks SYSRTC registers.
 
uint32_t sl_sysrtc_get_counter (void)
 Gets SYSRTC counter value.
 
void sl_sysrtc_set_counter (uint32_t value)
 Sets the SYSRTC counter value.
 
void sl_sysrtc_init_group (uint8_t group_number, sl_sysrtc_group_config_t const *p_group_config)
 Initializes the selected SYSRTC group.
 
void sl_sysrtc_enable_group_interrupts (uint8_t group_number, uint32_t flags)
 Enables one or more SYSRTC interrupts for the given group.
 
void sl_sysrtc_disable_group_interrupts (uint8_t group_number, uint32_t flags)
 Disables one or more SYSRTC interrupts for the given group.
 
void sl_sysrtc_clear_group_interrupts (uint8_t group_number, uint32_t flags)
 Clears one or more pending SYSRTC interrupts for the given group.
 
uint32_t sl_sysrtc_get_group_interrupts (uint8_t group_number)
 Gets pending SYSRTC interrupt flags for the given group.
 
uint32_t sl_sysrtc_get_group_enabled_interrupts (uint8_t group_number)
 Gets enabled and pending SYSRTC interrupt flags.
 
void sl_sysrtc_set_group_interrupts (uint8_t group_number, uint32_t flags)
 Sets one or more pending SYSRTC interrupts for the given group from Software.
 
uint32_t sl_sysrtc_get_group_compare_channel_value (uint8_t group_number, uint8_t channel)
 Gets SYSRTC compare register value for selected channel of given group.
 
void sl_sysrtc_set_group_compare_channel_value (uint8_t group_number, uint8_t channel, uint32_t value)
 Sets SYSRTC compare register value for selected channel of given group.
 
uint32_t sl_sysrtc_get_group_capture_channel_value (uint8_t group_number)
 Gets SYSRTC input capture register value for capture channel of given group.
 

Macros

#define SYSRTC_GROUP_MIN_CHANNEL_COMPARE   1u
 Minimum compare channels for SYSRTC group.
 
#define SYSRTC_GROUP_MAX_CHANNEL_COMPARE   2u
 Maximum compare channels for SYSRTC group.
 
#define SYSRTC_GROUP_MIN_CHANNEL_CAPTURE   0u
 Minimum capture channels for SYSRTC group.
 
#define SYSRTC_GROUP_MAX_CHANNEL_CAPTURE   1u
 Maximum capture channels for SYSRTC group.
 
#define SYSRTC_GROUP_NUMBER   1u
 Sysrtc group number.
 
#define SYSRTC_GROUP_VALID(group)   ((unsigned)(group) < SYSRTC_GROUP_NUMBER)
 Validation of valid SYSRTC group for assert statements.
 
#define SYSRTC_CONFIG_DEFAULT
 Suggested default values for SYSRTC configuration structure.
 
#define SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT
 Suggested default values for compare channel configuration structure.
 
#define SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT
 Suggested default values for capture channel configuration structure.
 
#define SYSRTC_GROUP_CONFIG_DEFAULT
 Suggested default values for SYSRTC group configuration structure.
 

Enumerations

enum  sl_sysrtc_capture_edge_t {
  SL_SYSRTC_CAPTURE_EDGE_RISING = 0,
  SL_SYSRTC_CAPTURE_EDGE_FALLING,
  SL_SYSRTC_CAPTURE_EDGE_BOTH
}
 Capture input edge select.
 
enum  sl_sysrtc_compare_match_out_action_t {
  SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CLEAR = 0,
  SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_SET,
  SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE,
  SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_TOGGLE,
  SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF
}
 Compare match output action mode.
 

Function Documentation

◆ sl_sysrtc_init()

void sl_sysrtc_init ( const sl_sysrtc_config_t p_config)

Initializes SYSRTC module.

Note that the compare values must be set separately with (sl_sysrtc_set_group_compare_channel_value()), which should probably be done prior to the use of this function if configuring the SYSRTC to start when initialization is completed.

Parameters
[in]p_configA pointer to the SYSRTC initialization structure variable.

◆ sl_sysrtc_enable()

void sl_sysrtc_enable ( void  )

Enables SYSRTC counting.

◆ sl_sysrtc_disable()

void sl_sysrtc_disable ( void  )

Disables SYSRTC counting.

◆ sl_sysrtc_wait_sync()

void sl_sysrtc_wait_sync ( void  )
inline

Waits for the SYSRTC to complete all synchronization of register changes and commands.

◆ sl_sysrtc_wait_ready()

void sl_sysrtc_wait_ready ( void  )
inline

Waits for the SYSRTC to complete reseting or disabling procedure.

◆ sl_sysrtc_start()

void sl_sysrtc_start ( void  )
inline

Starts SYSRTC counter.

This function will send a start command to the SYSRTC peripheral. The SYSRTC peripheral will use some LF clock ticks before the command is executed. The sl_sysrtc_wait_sync() function can be used to wait for the start command to be executed.

Note
This function requires the SYSRTC to be enabled.

◆ sl_sysrtc_stop()

void sl_sysrtc_stop ( void  )
inline

Stops the SYSRTC counter.

This function will send a stop command to the SYSRTC peripheral. The SYSRTC peripheral will use some LF clock ticks before the command is executed. The sl_sysrtc_wait_sync() function can be used to wait for the stop command to be executed.

Note
This function requires the SYSRTC to be enabled.

◆ sl_sysrtc_reset()

void sl_sysrtc_reset ( void  )

Restores SYSRTC to its reset state.

◆ sl_sysrtc_get_status()

uint32_t sl_sysrtc_get_status ( void  )
inline

Gets SYSRTC STATUS register value.

Returns
Current STATUS register value.

◆ sl_sysrtc_lock()

void sl_sysrtc_lock ( void  )
inline

Locks SYSRTC registers.

Note
When SYSRTC registers are locked SYSRTC_EN, SYSRTC_CFG, SYSRTC_CMD, SYSRTC_SWRST, SYSRTC_CNT and SYSRTC_TOPCNT registers cannot be written to.

◆ sl_sysrtc_unlock()

void sl_sysrtc_unlock ( void  )
inline

Unlocks SYSRTC registers.

Note
When SYSRTC registers are locked SYSRTC_EN, SYSRTC_CFG, SYSRTC_CMD, SYSRTC_SWRST, SYSRTC_CNT and SYSRTC_TOPCNT registers cannot be written to.

◆ sl_sysrtc_get_counter()

uint32_t sl_sysrtc_get_counter ( void  )
inline

Gets SYSRTC counter value.

Returns
Current SYSRTC counter value.

◆ sl_sysrtc_set_counter()

void sl_sysrtc_set_counter ( uint32_t  value)
inline

Sets the SYSRTC counter value.

Parameters
[in]valueThe new SYSRTC counter value.

◆ sl_sysrtc_init_group()

void sl_sysrtc_init_group ( uint8_t  group_number,
sl_sysrtc_group_config_t const *  p_group_config 
)

Initializes the selected SYSRTC group.

Parameters
[in]group_numberSYSRTC group number to use.
[in]p_group_configPointer to group configuration structure variable.

◆ sl_sysrtc_enable_group_interrupts()

void sl_sysrtc_enable_group_interrupts ( uint8_t  group_number,
uint32_t  flags 
)

Enables one or more SYSRTC interrupts for the given group.

Note
Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using sl_sysrtc_clear_group_interrupts() prior to enabling the interrupt.
Parameters
[in]group_numberSYSRTC group number to use.
[in]flagsSYSRTC interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the given SYSRTC group.

◆ sl_sysrtc_disable_group_interrupts()

void sl_sysrtc_disable_group_interrupts ( uint8_t  group_number,
uint32_t  flags 
)

Disables one or more SYSRTC interrupts for the given group.

Parameters
[in]group_numberSYSRTC group number to use.
[in]flagsSYSRTC interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt sources for the given SYSRTC group.

◆ sl_sysrtc_clear_group_interrupts()

void sl_sysrtc_clear_group_interrupts ( uint8_t  group_number,
uint32_t  flags 
)

Clears one or more pending SYSRTC interrupts for the given group.

Parameters
[in]group_numberSYSRTC group number to use.
[in]flagsSYSRTC interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources for the given SYSRTC group.

◆ sl_sysrtc_get_group_interrupts()

uint32_t sl_sysrtc_get_group_interrupts ( uint8_t  group_number)

Gets pending SYSRTC interrupt flags for the given group.

Note
Event bits are not cleared by using this function.
Parameters
[in]group_numberSYSRTC group number to use.
Returns
Pending SYSRTC interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the SYSRTC group.

◆ sl_sysrtc_get_group_enabled_interrupts()

uint32_t sl_sysrtc_get_group_enabled_interrupts ( uint8_t  group_number)

Gets enabled and pending SYSRTC interrupt flags.

Useful for handling more interrupt sources in the same interrupt handler.

Note
Interrupt flags are not cleared by using this function.
Parameters
[in]group_numberSYSRTC group number to use.
Returns
Pending and enabled SYSRTC interrupt sources. The return value is the bitwise AND of
  • the enabled interrupt sources in SYSRTC_GRPx_IEN and
  • the pending interrupt flags SYSRTC_GRPx_IF.

◆ sl_sysrtc_set_group_interrupts()

void sl_sysrtc_set_group_interrupts ( uint8_t  group_number,
uint32_t  flags 
)

Sets one or more pending SYSRTC interrupts for the given group from Software.

Parameters
[in]group_numberSYSRTC group number to use.
[in]flagsSYSRTC interrupt sources to set to pending. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the SYSRTC group.

◆ sl_sysrtc_get_group_compare_channel_value()

uint32_t sl_sysrtc_get_group_compare_channel_value ( uint8_t  group_number,
uint8_t  channel 
)

Gets SYSRTC compare register value for selected channel of given group.

Parameters
[in]group_numberSYSRTC group number to use.
[in]channelChannel selector.
Returns
Compare register value.

◆ sl_sysrtc_set_group_compare_channel_value()

void sl_sysrtc_set_group_compare_channel_value ( uint8_t  group_number,
uint8_t  channel,
uint32_t  value 
)

Sets SYSRTC compare register value for selected channel of given group.

Parameters
[in]group_numberSYSRTC group number to use.
[in]channelChannel selector.
[in]valueCompare register value.

◆ sl_sysrtc_get_group_capture_channel_value()

uint32_t sl_sysrtc_get_group_capture_channel_value ( uint8_t  group_number)

Gets SYSRTC input capture register value for capture channel of given group.

Gets SYSRTC input capture register value for selected channel of given group.

Parameters
[in]group_numberSYSRTC group number to use.
Returns
Capture register value.

Macro Definition Documentation

◆ SYSRTC_GROUP_MIN_CHANNEL_COMPARE

#define SYSRTC_GROUP_MIN_CHANNEL_COMPARE   1u

Minimum compare channels for SYSRTC group.

◆ SYSRTC_GROUP_MAX_CHANNEL_COMPARE

#define SYSRTC_GROUP_MAX_CHANNEL_COMPARE   2u

Maximum compare channels for SYSRTC group.

◆ SYSRTC_GROUP_MIN_CHANNEL_CAPTURE

#define SYSRTC_GROUP_MIN_CHANNEL_CAPTURE   0u

Minimum capture channels for SYSRTC group.

◆ SYSRTC_GROUP_MAX_CHANNEL_CAPTURE

#define SYSRTC_GROUP_MAX_CHANNEL_CAPTURE   1u

Maximum capture channels for SYSRTC group.

◆ SYSRTC_GROUP_NUMBER

#define SYSRTC_GROUP_NUMBER   1u

Sysrtc group number.

◆ SYSRTC_GROUP_VALID

#define SYSRTC_GROUP_VALID (   group)    ((unsigned)(group) < SYSRTC_GROUP_NUMBER)

Validation of valid SYSRTC group for assert statements.

◆ SYSRTC_CONFIG_DEFAULT

#define SYSRTC_CONFIG_DEFAULT
Value:
{ \
false, /* Disable updating during debug halt. */ \
}

Suggested default values for SYSRTC configuration structure.

◆ SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT

#define SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT
Value:
{ \
SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE \
}

Suggested default values for compare channel configuration structure.

◆ SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT

#define SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT
Value:
{ \
SL_SYSRTC_CAPTURE_EDGE_RISING \
}

Suggested default values for capture channel configuration structure.

◆ SYSRTC_GROUP_CONFIG_DEFAULT

#define SYSRTC_GROUP_CONFIG_DEFAULT
Value:
{ \
true, /* Enable compare channel 0. */ \
false, /* Disable compare channel 1. */ \
false, /* Disable capture channel 0. */ \
NULL, /* NULL Pointer to configuration structure for compare channel 0*/ \
NULL, /* NULL Pointer to configuration structure for compare channel 1*/ \
NULL /* NULL Pointer to configuration structure for capture channel 0*/ \
}

Suggested default values for SYSRTC group configuration structure.

Enumeration Type Documentation

◆ sl_sysrtc_capture_edge_t

Capture input edge select.

Enumerator
SL_SYSRTC_CAPTURE_EDGE_RISING 

Rising edges detected.

SL_SYSRTC_CAPTURE_EDGE_FALLING 

Falling edges detected.

SL_SYSRTC_CAPTURE_EDGE_BOTH 

Both edges detected.

◆ sl_sysrtc_compare_match_out_action_t

Compare match output action mode.

Enumerator
SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CLEAR 

Clear output.

SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_SET 

Set output.

SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE 

Generate a pulse.

SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_TOGGLE 

Toggle output.

SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF 

Export CMPIF.