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_reset (void)
Restores SYSRTC to its reset state.
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 selected channel of given group.
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.
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.

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_config A 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_reset()

void sl_sysrtc_reset ( void )

Restores SYSRTC to its reset state.

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_number SYSRTC group number to use.
[in] p_group_config Pointer 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_number SYSRTC group number to use.
[in] flags SYSRTC 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_number SYSRTC group number to use.
[in] flags SYSRTC 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_number SYSRTC group number to use.
[in] flags SYSRTC 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_number SYSRTC 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_number SYSRTC 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_number SYSRTC group number to use.
[in] flags SYSRTC 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_number SYSRTC group number to use.
[in] channel Channel 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_number SYSRTC group number to use.
[in] channel Channel selector.
[in] value Compare 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 selected channel of given group.

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

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

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_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] value The new SYSRTC counter 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.