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_sysrtc_config_t

sl_sysrtc_group_channel_compare_config_t

sl_sysrtc_group_channel_capture_config_t

sl_sysrtc_group_config_t

Enumerations#

enum
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_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.

Functions#

void
sl_sysrtc_init(const sl_sysrtc_config_t *p_config)

Initializes SYSRTC module.

void

Enables SYSRTC counting.

void

Disables SYSRTC counting.

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.

uint32_t

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

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

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

Macros#

#define

Minimum compare channels for SYSRTC group.

#define

Maximum compare channels for SYSRTC group.

#define

Minimum capture channels for SYSRTC group.

#define

Maximum capture channels for SYSRTC group.

#define

Sysrtc group number.

#define

Validation of valid SYSRTC group for assert statements.

#define

Suggested default values for SYSRTC configuration structure.

#define

Suggested default values for compare channel configuration structure.

#define

Compare channel configuration for starting HFXO using PRS.

#define

Suggested default values for capture channel configuration structure.

#define

Suggested default values for SYSRTC group configuration structure.

Enumeration Documentation#

sl_sysrtc_capture_edge_t#

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.


Definition at line 77 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_compare_match_out_action_t#

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.


Definition at line 84 of file platform/peripheral/inc/peripheral_sysrtc.h

Function Documentation#

sl_sysrtc_init#

void sl_sysrtc_init (const sl_sysrtc_config_t * p_config)

Initializes SYSRTC module.

Parameters
[in]p_config

A pointer to the SYSRTC initialization structure variable.

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.


Definition at line 49 of file platform/peripheral/src/peripheral_sysrtc.c

sl_sysrtc_enable#

void sl_sysrtc_enable (void )

Enables SYSRTC counting.

Parameters
N/A

Definition at line 68 of file platform/peripheral/src/peripheral_sysrtc.c

sl_sysrtc_disable#

void sl_sysrtc_disable (void )

Disables SYSRTC counting.

Parameters
N/A

Definition at line 83 of file platform/peripheral/src/peripheral_sysrtc.c

sl_sysrtc_wait_sync#

void sl_sysrtc_wait_sync (void )

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

Parameters
N/A

Definition at line 187 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_wait_ready#

void sl_sysrtc_wait_ready (void )

Waits for the SYSRTC to complete reseting or disabling procedure.

Parameters
N/A

Definition at line 197 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_start#

void sl_sysrtc_start (void )

Starts SYSRTC counter.

Parameters
N/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_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.


Definition at line 214 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_stop#

void sl_sysrtc_stop (void )

Stops the SYSRTC counter.

Parameters
N/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_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.


Definition at line 230 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_reset#

void sl_sysrtc_reset (void )

Restores SYSRTC to its reset state.

Parameters
N/A

Definition at line 99 of file platform/peripheral/src/peripheral_sysrtc.c

sl_sysrtc_get_status#

uint32_t sl_sysrtc_get_status (void )

Gets SYSRTC STATUS register value.

Parameters
N/A

Returns

  • Current STATUS register value.


Definition at line 246 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_lock#

void sl_sysrtc_lock (void )

Locks SYSRTC registers.

Parameters
N/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.


Definition at line 258 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_unlock#

void sl_sysrtc_unlock (void )

Unlocks SYSRTC registers.

Parameters
N/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.


Definition at line 270 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_get_counter#

uint32_t sl_sysrtc_get_counter (void )

Gets SYSRTC counter value.

Parameters
N/A

Returns

  • Current SYSRTC counter value.


Definition at line 280 of file platform/peripheral/inc/peripheral_sysrtc.h

sl_sysrtc_set_counter#

void sl_sysrtc_set_counter (uint32_t value)

Sets the SYSRTC counter value.

Parameters
[in]value

The new SYSRTC counter value.


Definition at line 293 of file platform/peripheral/inc/peripheral_sysrtc.h

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.


Definition at line 108 of file platform/peripheral/src/peripheral_sysrtc.c

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.

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.

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.


Definition at line 257 of file platform/peripheral/src/peripheral_sysrtc.c

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.


Definition at line 317 of file platform/peripheral/src/peripheral_sysrtc.c

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.


Definition at line 377 of file platform/peripheral/src/peripheral_sysrtc.c

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.

Parameters
[in]group_number

SYSRTC group number to use.

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.


Definition at line 437 of file platform/peripheral/src/peripheral_sysrtc.c

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.

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


Definition at line 489 of file platform/peripheral/src/peripheral_sysrtc.c

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.


Definition at line 551 of file platform/peripheral/src/peripheral_sysrtc.c

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.


Definition at line 611 of file platform/peripheral/src/peripheral_sysrtc.c

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.


Definition at line 768 of file platform/peripheral/src/peripheral_sysrtc.c

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.

Parameters
[in]group_number

SYSRTC group number to use.

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

Returns

  • Capture register value.


Definition at line 933 of file platform/peripheral/src/peripheral_sysrtc.c

Macro Definition Documentation#

SYSRTC_GROUP_MIN_CHANNEL_COMPARE#

#define SYSRTC_GROUP_MIN_CHANNEL_COMPARE
Value:
1u

Minimum compare channels for SYSRTC group.


Definition at line 53 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_MAX_CHANNEL_COMPARE#

#define SYSRTC_GROUP_MAX_CHANNEL_COMPARE
Value:
2u

Maximum compare channels for SYSRTC group.


Definition at line 55 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_MIN_CHANNEL_CAPTURE#

#define SYSRTC_GROUP_MIN_CHANNEL_CAPTURE
Value:
0u

Minimum capture channels for SYSRTC group.


Definition at line 58 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_MAX_CHANNEL_CAPTURE#

#define SYSRTC_GROUP_MAX_CHANNEL_CAPTURE
Value:
1u

Maximum capture channels for SYSRTC group.


Definition at line 60 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_NUMBER#

#define SYSRTC_GROUP_NUMBER
Value:
1u

Sysrtc group number.


Definition at line 65 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_VALID#

#define SYSRTC_GROUP_VALID
Value:
(group)

Validation of valid SYSRTC group for assert statements.


Definition at line 70 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_CONFIG_DEFAULT#

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

Suggested default values for SYSRTC configuration structure.


Definition at line 102 of file platform/peripheral/inc/peripheral_sysrtc.h

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.


Definition at line 128 of file platform/peripheral/inc/peripheral_sysrtc.h

SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_EARLY_WAKEUP#

#define SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_EARLY_WAKEUP
Value:
{ \
SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF \
}

Compare channel configuration for starting HFXO using PRS.


Definition at line 134 of file platform/peripheral/inc/peripheral_sysrtc.h

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.


Definition at line 140 of file platform/peripheral/inc/peripheral_sysrtc.h

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.


Definition at line 146 of file platform/peripheral/inc/peripheral_sysrtc.h