SYSRTC - System Real Time Counter#

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.

Modules#

sl_hal_sysrtc_config_t

sl_hal_sysrtc_group_channel_compare_config_t

sl_hal_sysrtc_group_channel_capture_config_t

sl_hal_sysrtc_group_config_t

Enumerations#

enum
SL_HAL_SYSRTC_CAPTURE_EDGE_RISING = 0
SL_HAL_SYSRTC_CAPTURE_EDGE_FALLING
SL_HAL_SYSRTC_CAPTURE_EDGE_BOTH
}

Capture input edge select.

enum
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CLEAR = 0
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_SET
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_TOGGLE
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF
}

Compare match output action mode.

Variables#

uint32_t
uint8_t
uint8_t uint32_t

Functions#

void
sl_hal_sysrtc_init(const sl_hal_sysrtc_config_t *p_config)

Initializes SYSRTC module.

void

Enables SYSRTC counting.

void

Disables SYSRTC counting.

SL_CODE_CLASSIFY(SL_CODE_COMPONENT_PERIPHERAL_SYSRTC, SL_CODE_CLASS_TIME_CRITICAL) inline void sl_hal_sysrtc_wait_sync(void)

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

void

Waits for the SYSRTC to complete reseting or disabling procedure.

void

Starts SYSRTC counter.

void

Stops the SYSRTC counter.

void

Restores SYSRTC to its reset state.

uint32_t

Gets SYSRTC STATUS register value.

void

Locks SYSRTC registers.

void

Unlocks SYSRTC registers.

void

Sets the SYSRTC counter value.

void
sl_hal_sysrtc_init_group(uint8_t group_number, sl_hal_sysrtc_group_config_t const *p_group_config)

Initializes the selected SYSRTC group.

uint32_t

Gets enabled and pending SYSRTC interrupt flags.

void
sl_hal_sysrtc_set_group_interrupts(uint8_t group_number, uint32_t flags)

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

void
sl_hal_sysrtc_enable_group_interrupts(uint8_t group_number, uint32_t flags)

Enables one or more SYSRTC interrupts for the given group.

void
sl_hal_sysrtc_disable_group_interrupts(uint8_t group_number, uint32_t flags)

Disables one or more SYSRTC interrupts for the given group.

void
sl_hal_sysrtc_clear_group_interrupts(uint8_t group_number, uint32_t flags)

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

uint32_t

Gets pending SYSRTC interrupt flags for the given group.

uint32_t
sl_hal_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_hal_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

Gets SYSRTC input capture register value for selected 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)

Validation of valid SYSRTC group for assert statements.

#define
SYSRTC_CONFIG_DEFAULT undefined

Suggested default values for SYSRTC configuration structure.

#define
SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT undefined

Suggested default values for compare channel configuration structure.

#define
SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_EARLY_WAKEUP undefined

Compare channel configuration for starting HFXO using PRS.

#define
SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT undefined

Suggested default values for capture channel configuration structure.

#define
SYSRTC_GROUP_CONFIG_DEFAULT undefined

Suggested default values for SYSRTC group configuration structure.

Enumeration Documentation#

sl_hal_sysrtc_capture_edge_t#

sl_hal_sysrtc_capture_edge_t

Capture input edge select.

Enumerator
SL_HAL_SYSRTC_CAPTURE_EDGE_RISING

Rising edges detected.

SL_HAL_SYSRTC_CAPTURE_EDGE_FALLING

Falling edges detected.

SL_HAL_SYSRTC_CAPTURE_EDGE_BOTH

Both edges detected.


sl_hal_sysrtc_compare_match_out_action_t#

sl_hal_sysrtc_compare_match_out_action_t

Compare match output action mode.

Enumerator
SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CLEAR

Clear output.

SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_SET

Set output.

SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE

Generate a pulse.

SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_TOGGLE

Toggle output.

SL_HAL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF

Export CMPIF.


Variable Documentation#

flags#

uint32_t flags

channel#

uint8_t channel

value#

uint8_t uint32_t value

Function Documentation#

sl_hal_sysrtc_init#

void sl_hal_sysrtc_init (const sl_hal_sysrtc_config_t * p_config)

Initializes SYSRTC module.

Parameters
TypeDirectionArgument NameDescription
const sl_hal_sysrtc_config_t *[in]p_config

A pointer to the SYSRTC initialization structure variable.

Note that the compare values must be set separately with (sl_hal_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.


sl_hal_sysrtc_enable#

void sl_hal_sysrtc_enable (void )

Enables SYSRTC counting.

Parameters
TypeDirectionArgument NameDescription
voidN/A

sl_hal_sysrtc_disable#

void sl_hal_sysrtc_disable (void )

Disables SYSRTC counting.

Parameters
TypeDirectionArgument NameDescription
voidN/A

SL_CODE_CLASSIFY#

SL_CODE_CLASSIFY (SL_CODE_COMPONENT_PERIPHERAL_SYSRTC , SL_CODE_CLASS_TIME_CRITICAL , group_number, flags, group_number, flags)

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

Parameters
TypeDirectionArgument NameDescription
SL_CODE_COMPONENT_PERIPHERAL_SYSRTC[in]

SYSRTC group number to use.

SL_CODE_CLASS_TIME_CRITICAL[in]

Channel selector.

[in]group_number

Compare register value.

[in]flags

SYSRTC group number to use.

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

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

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

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

Gets pending SYSRTC interrupt flags for the given group.

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

Disables one or more SYSRTC interrupts for the given group.

Enables one or more SYSRTC interrupts for the given group.

Gets SYSRTC counter value.

Returns

  • Current SYSRTC counter value.

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_hal_sysrtc_clear_group_interrupts() prior to enabling the interrupt.

Note

  • Event bits are not cleared by using this function.

Returns

  • Pending SYSRTC interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the SYSRTC group.

Returns

  • Compare register value.

Returns

  • Capture register value.


sl_hal_sysrtc_wait_ready#

void sl_hal_sysrtc_wait_ready (void )

Waits for the SYSRTC to complete reseting or disabling procedure.

Parameters
TypeDirectionArgument NameDescription
voidN/A

sl_hal_sysrtc_start#

void sl_hal_sysrtc_start (void )

Starts SYSRTC counter.

Parameters
TypeDirectionArgument NameDescription
voidN/A

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_hal_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_hal_sysrtc_stop#

void sl_hal_sysrtc_stop (void )

Stops the SYSRTC counter.

Parameters
TypeDirectionArgument NameDescription
voidN/A

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_hal_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_hal_sysrtc_reset#

void sl_hal_sysrtc_reset (void )

Restores SYSRTC to its reset state.

Parameters
TypeDirectionArgument NameDescription
voidN/A

sl_hal_sysrtc_get_status#

uint32_t sl_hal_sysrtc_get_status (void )

Gets SYSRTC STATUS register value.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • Current STATUS register value.


sl_hal_sysrtc_lock#

void sl_hal_sysrtc_lock (void )

Locks SYSRTC registers.

Parameters
TypeDirectionArgument NameDescription
voidN/A

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_hal_sysrtc_unlock#

void sl_hal_sysrtc_unlock (void )

Unlocks SYSRTC registers.

Parameters
TypeDirectionArgument NameDescription
voidN/A

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_hal_sysrtc_set_counter#

void sl_hal_sysrtc_set_counter (uint32_t value)

Sets the SYSRTC counter value.

Parameters
TypeDirectionArgument NameDescription
uint32_t[in]value

The new SYSRTC counter value.


sl_hal_sysrtc_init_group#

void sl_hal_sysrtc_init_group (uint8_t group_number, sl_hal_sysrtc_group_config_t const * p_group_config)

Initializes the selected SYSRTC group.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]group_number

SYSRTC group number to use.

sl_hal_sysrtc_group_config_t const *[in]p_group_config

Pointer to group configuration structure variable.


sl_hal_sysrtc_get_group_enabled_interrupts#

uint32_t sl_hal_sysrtc_get_group_enabled_interrupts (uint8_t group_number)

Gets enabled and pending SYSRTC interrupt flags.

Parameters
TypeDirectionArgument NameDescription
uint8_t[in]group_number

SYSRTC group number to use.

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

Note

  • Interrupt flags are not cleared by using this function.

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_hal_sysrtc_set_group_interrupts#

void sl_hal_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
TypeDirectionArgument NameDescription
uint8_t[in]group_number

SYSRTC group number to use.

uint32_t[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_hal_sysrtc_wait_sync#

void sl_hal_sysrtc_wait_sync (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

sl_hal_sysrtc_get_counter#

uint32_t sl_hal_sysrtc_get_counter (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

sl_hal_sysrtc_enable_group_interrupts#

void sl_hal_sysrtc_enable_group_interrupts (uint8_t group_number, uint32_t flags)

Enables one or more SYSRTC interrupts for the given group.

Parameters
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number
uint32_tN/Aflags

sl_hal_sysrtc_disable_group_interrupts#

void sl_hal_sysrtc_disable_group_interrupts (uint8_t group_number, uint32_t flags)

Disables one or more SYSRTC interrupts for the given group.

Parameters
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number
uint32_tN/Aflags

sl_hal_sysrtc_clear_group_interrupts#

void sl_hal_sysrtc_clear_group_interrupts (uint8_t group_number, uint32_t flags)

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

Parameters
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number
uint32_tN/Aflags

sl_hal_sysrtc_get_group_interrupts#

uint32_t sl_hal_sysrtc_get_group_interrupts (uint8_t group_number)

Gets pending SYSRTC interrupt flags for the given group.

Parameters
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number

sl_hal_sysrtc_get_group_compare_channel_value#

uint32_t sl_hal_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
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number
uint8_tN/Achannel

sl_hal_sysrtc_set_group_compare_channel_value#

void sl_hal_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
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number
uint8_tN/Achannel
uint32_tN/Avalue

sl_hal_sysrtc_get_group_capture_channel_value#

uint32_t sl_hal_sysrtc_get_group_capture_channel_value (uint8_t group_number)

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

Parameters
TypeDirectionArgument NameDescription
uint8_tN/Agroup_number