Ultra Low-Power Timer#
Modules#
Enumerations#
Enumeration to represent ulp-timer instances.
Enumeration to represent ULP-timer modes.
Enumeration to represent ULP-timer types.
Enumeration to represent values of clock sources to select as Timer clock.
Typedefs#
Typedef for the function pointer of the callback function.
Renaming clock type enum.
Renaming clock type enum.
Variables#
true to enable static and false to enable dynamic clock type
true to enable and false to disable ULP timer in synchronous mode to ULPSS pclk
timer input clock source, refer ulp_timer_clk_input_source_t for possible values
true to wait and false to Skip waiting for switching timer clk
timer number, SL_ULP_TIMER_NUMBER for default values
timer mode, SL_ULP_TIMER_MODE for default values
timer type, SL_ULP_TIMER_TYPE for default values
timer match value SL_ULP_TIMER_MATCH_VALUE(delay time) in microseconds
timer direction, SL_ULP_TIMER_DIRECTION for default values
Release version number.
sqa version number
dev version number
Functions#
Configure the ULP-Timer input clock source.
Configure ULP-Timer parameters such as timer number, mode, type, match-value & direction.
Start the ULP-Timer.
Stop the ULP-Timer.
Restart an already running ULP-Timer, means it will first stop the timer and then start it again.
Set the ULP-Timer type.
Set the ULP-Timer direction as up-counting or down-counting.
Set ULP-Timer Mode.
Set ULP-Timer match value.
Read the ULP-Timer count.
Read the ULP-Timer type.
Read the ULP-Timer mode.
Read the ULP-Timer direction (up-counter or down-counter).
Register callback of timer timeout interrupt and enabling it.
Unregister callback of timer timeout interrupt and disabling it.
Configure the Ulpss SoC clock from M4 SOC clock, to enable the SOC clock source.
Configure the XTAL clock when the clock source is an external XTAL clock.
Initialize ULP-Timer clock by configuring the clock source.
De-Initializes ULP-Timer clock by disabling the peripheral clock.
Get the ULP_TIMER version.
Macros#
default 1-second timer match-value for down-counter timer-type with 20Mhz clock
Enumeration Documentation#
ulp_timer_instance_t#
ulp_timer_instance_t
Enumeration to represent ulp-timer instances.
Enumerator | |
---|---|
ULP_TIMER_0 | ULP Timer0 Instance. |
ULP_TIMER_1 | ULP Timer1 Instance. |
ULP_TIMER_2 | ULP Timer2 Instance. |
ULP_TIMER_3 | ULP Timer3 Instance. |
ULP_TIMER_LAST | Last member of enum for validation. |
65
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_mode_t#
ulp_timer_mode_t
Enumeration to represent ULP-timer modes.
Enumerator | |
---|---|
ULP_TIMER_MODE_ONESHOT | ULP Timer one-shot mode. |
ULP_TIMER_MODE_PERIODIC | ULP Timer periodic mode. |
ULP_TIMER_MODE_LAST | Last member of enum for validation. |
74
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_type_t#
ulp_timer_type_t
Enumeration to represent ULP-timer types.
Enumerator | |
---|---|
ULP_TIMER_TYP_DEFAULT | ULP Timer normal down counter type. |
ULP_TIMER_TYP_1US | ULP Timer one microsecond type. |
ULP_TIMER_TYP_256US | ULP Timer 256 microsecond type. |
ULP_TIMER_TYP_LAST | Last member of enum for validation. |
81
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_clk_input_source_t#
ulp_timer_clk_input_source_t
Enumeration to represent values of clock sources to select as Timer clock.
Enumerator | |
---|---|
ULP_TIMER_REF_CLK_SRC | ref clock input source |
ULP_TIMER_32KHZ_RO_CLK_SRC | 32 kHz ro clock input source |
ULP_TIMER_32KHZ_RC_CLK_SRC | 32 kHz rc clock input source |
ULP_TIMER_32KHZ_XTAL_CLK_SRC | 32 kHz xtal clock input source |
ULP_TIMER_32MHZ_RC_CLK_SRC | 32 MHz rc clock input source |
ULP_TIMER_20MHZ_RO_CLK_SRC | 20 MHz ro clock input source |
ULP_TIMER_ULP_CLK_SRC_LAST | Last member of enum for validation. |
89
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
Typedef Documentation#
ulp_timer_callback_t#
typedef void(* ulp_timer_callback_t) (void) )(void)
Typedef for the function pointer of the callback function.
59
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_clock_t#
typedef CLK_ENABLE_T ulp_timer_clock_t
Renaming clock type enum.
61
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_direction_t#
typedef ulp_timer_dir_t ulp_timer_direction_t
Renaming clock type enum.
62
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
Variable Documentation#
ulp_timer_clk_type#
uint8_t ulp_timer_clk_src_config_t::ulp_timer_clk_type
true to enable static and false to enable dynamic clock type
101
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_sync_to_ulpss_pclk#
boolean_t ulp_timer_clk_src_config_t::ulp_timer_sync_to_ulpss_pclk
true to enable and false to disable ULP timer in synchronous mode to ULPSS pclk
103
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_clk_input_src#
uint8_t ulp_timer_clk_src_config_t::ulp_timer_clk_input_src
timer input clock source, refer ulp_timer_clk_input_source_t for possible values
105
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
ulp_timer_skip_switch_time#
boolean_t ulp_timer_clk_src_config_t::ulp_timer_skip_switch_time
true to wait and false to Skip waiting for switching timer clk
106
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
timer_num#
uint8_t ulp_timer_config_t::timer_num
timer number, SL_ULP_TIMER_NUMBER for default values
111
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
timer_mode#
uint8_t ulp_timer_config_t::timer_mode
timer mode, SL_ULP_TIMER_MODE for default values
112
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
timer_type#
uint8_t ulp_timer_config_t::timer_type
timer type, SL_ULP_TIMER_TYPE for default values
113
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
timer_match_value#
uint32_t ulp_timer_config_t::timer_match_value
timer match value SL_ULP_TIMER_MATCH_VALUE(delay time) in microseconds
114
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
timer_direction#
uint8_t ulp_timer_config_t::timer_direction
timer direction, SL_ULP_TIMER_DIRECTION for default values
115
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
release#
uint8_t sl_ulp_timer_version_t::release
Release version number.
120
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
major#
uint8_t sl_ulp_timer_version_t::major
sqa version number
121
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
minor#
uint8_t sl_ulp_timer_version_t::minor
dev version number
122
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
Function Documentation#
sl_si91x_ulp_timer_configure_clock#
sl_status_t sl_si91x_ulp_timer_configure_clock (ulp_timer_clk_src_config_t * timer_clk_ptr)
Configure the ULP-Timer input clock source.
[in] | timer_clk_ptr | Pointer to timer_clk configuration structure |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Timer clock type or timer clock source values are invalid
SL_STATUS_INVALID_CONFIGURATION (0x0023) - Timer clock-source configuration structure members have invalid configurations.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly
137
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_set_configuration#
sl_status_t sl_si91x_ulp_timer_set_configuration (ulp_timer_config_t * timer_config_ptr)
Configure ULP-Timer parameters such as timer number, mode, type, match-value & direction.
[in] | timer_config_ptr | Pointer to the timer_configuration structure |
Also configures integral and fractional values of clock cycles per microseconds or per 256 microseconds, as per the timer-type value.
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_INDEX (0x0027) - Timer configuration structure member 'timer_num' has an invalid value.
SL_STATUS_INVALID_MODE (0x0024) - Timer configuration structure member 'timer_mode' has an invalid value.
SL_STATUS_INVALID_TYPE (0x0026) - Timer configuration structure member 'timer_type' has an invalid value.
SL_STATUS_INVALID_PARAMETER (0x0021) - Timer configuration structure member 'timer_direction' has an invalid value.
SL_STATUS_OK (0x0000) - Success, timer parameters are configured properly
156
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_start#
sl_status_t sl_si91x_ulp_timer_start (ulp_timer_instance_t timer_num)
Start the ULP-Timer.
[in] | timer_num | enum for ULP-timer Number (0 to 3), ulp_timer_instance_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully started the timer instance
171
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_stop#
sl_status_t sl_si91x_ulp_timer_stop (ulp_timer_instance_t timer_num)
Stop the ULP-Timer.
[in] | timer_num | enum for ULP-timer Number (0 to 3), ulp_timer_instance_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully stopped the timer instance
186
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_restart#
sl_status_t sl_si91x_ulp_timer_restart (ulp_timer_instance_t timer_num)
Restart an already running ULP-Timer, means it will first stop the timer and then start it again.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully restarted the timer instance
201
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_set_type#
sl_status_t sl_si91x_ulp_timer_set_type (ulp_timer_instance_t timer_num, ulp_timer_type_t timer_type)
Set the ULP-Timer type.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values |
[in] | timer_type | enum for ULP-timer Type, ulp_timer_type_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_INVALID_TYPE (0x0026) - 'timer_type' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully set timer-type
217
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_set_direction#
sl_status_t sl_si91x_ulp_timer_set_direction (ulp_timer_instance_t timer_num, ulp_timer_direction_t timer_direction)
Set the ULP-Timer direction as up-counting or down-counting.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values |
[in] | timer_direction | enum for ULP-timer direction, ulp_timer_direction_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_INVALID_PARAMETER (0x0021) - 'timer_direction' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully set timer-direction
233
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_set_mode#
sl_status_t sl_si91x_ulp_timer_set_mode (ulp_timer_instance_t timer_num, ulp_timer_mode_t timer_mode)
Set ULP-Timer Mode.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values |
[in] | timer_mode | enum for ULP-timer mode, ulp_timer_mode_t for possible values |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_INVALID_MODE (0x0024) - 'timer_mode' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully set timer-mode
249
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_set_count#
sl_status_t sl_si91x_ulp_timer_set_count (ulp_timer_instance_t timer_num, uint32_t timer_match_value)
Set ULP-Timer match value.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | timer_match_value | for ULP-timer timeout value |
Pre-conditions:
Returns
status 0 if successful, else error-code
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully set timer match value.
266
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_get_count#
sl_status_t sl_si91x_ulp_timer_get_count (ulp_timer_instance_t timer_num, uint32_t * count_value)
Read the ULP-Timer count.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | count_value | Pointer to variable which will store the current count of the timer |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - 'Pointer to count_value' parameter is a null pointer.
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully read the timer's current count value
283
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_get_type#
sl_status_t sl_si91x_ulp_timer_get_type (ulp_timer_instance_t timer_num, uint32_t * timer_type)
Read the ULP-Timer type.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | timer_type | Pointer to variable which will store the current count of the timer |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - 'Pointer to timer_type' parameter is a null pointer.
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully read the timer's current count value
299
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_get_mode#
sl_status_t sl_si91x_ulp_timer_get_mode (ulp_timer_instance_t timer_num, uint32_t * timer_mode)
Read the ULP-Timer mode.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | timer_mode | Pointer to variable which will store the current count of the timer |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - 'Pointer to timer_mode' parameter is a null pointer.
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully read the timer's current count value
315
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_get_direction#
sl_status_t sl_si91x_ulp_timer_get_direction (ulp_timer_instance_t timer_num, uint32_t * timer_direction)
Read the ULP-Timer direction (up-counter or down-counter).
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | timer_direction | Pointer to variable which will store the current count of the timer |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - 'Pointer to timer_direction' parameter is a null pointer.
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_OK (0x0000) - Successfully read the timer's current count value
331
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_register_timeout_callback#
sl_status_t sl_si91x_ulp_timer_register_timeout_callback (ulp_timer_instance_t timer_num, ulp_timer_callback_t on_timeout_callback)
Register callback of timer timeout interrupt and enabling it.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
[in] | on_timeout_callback | (function pointer) Callback function pointer to be called when the timer timeout interrupt occurred. |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_NULL_POINTER (0x0022) - 'pointer to callback_data_input' parameter is a null pointer.
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_ALLOCATION_FAILED (0x0019) - Timer interrupt enabling failed.
SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister the previous callback before registering a new one.
SL_STATUS_OK (0x0000) - Successfully registered the timer timeout callback
347
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_unregister_timeout_callback#
sl_status_t sl_si91x_ulp_timer_unregister_timeout_callback (ulp_timer_instance_t timer_num)
Unregister callback of timer timeout interrupt and disabling it.
[in] | timer_num | enum for ULP-timer Number, ulp_timer_instance_t for possible values. |
Pre-conditions:
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid.
SL_STATUS_ALLOCATION_FAILED (0x0019) - Timer interrupt disabling failed.
SL_STATUS_OK (0x0000) - Successfully unregistered the timer timeout callback
362
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_configure_soc_clock#
sl_status_t sl_si91x_ulp_timer_configure_soc_clock (boolean_t div_factor_type, uint16_t div_factor)
Configure the Ulpss SoC clock from M4 SOC clock, to enable the SOC clock source.
[in] | div_factor_type | value to divide the clock, ensure that it should be an odd number if div_factor_type is 1 & vice versa |
[in] | div_factor | selects the type of divider for m4_soc_clk_2ulpss
|
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER(0x0021) - 'div_factor' is not according to div_factor_type
375
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_configure_xtal_clock#
sl_status_t sl_si91x_ulp_timer_configure_xtal_clock (uint8_t xtal_pin)
Configure the XTAL clock when the clock source is an external XTAL clock.
[in] | xtal_pin | : Pin number of NPSS_GPIO. Possible values are 0,1,2,3,4 |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER(0x0021) - 'xtal_pin' parameter value is invalid.
384
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_init#
sl_status_t sl_si91x_ulp_timer_init (ulp_timer_clk_src_config_t * timer_clk_ptr)
Initialize ULP-Timer clock by configuring the clock source.
[in] | timer_clk_ptr | Pointer to timer_clk configuration structure |
Returns
status 0 if successful, else error code as follows:
SL_STATUS_INVALID_PARAMETER (0x0021) - Timer clock type or timer clock source values are invalid
SL_STATUS_INVALID_CONFIGURATION (0x0023) - Timer clock-source configuration structure members have invalid configurations.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly
396
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_deinit#
void sl_si91x_ulp_timer_deinit (void )
De-Initializes ULP-Timer clock by disabling the peripheral clock.
[in] |
Returns
none
Note
Unregisters the callbacks of all timer instances
408
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
sl_si91x_ulp_timer_get_version#
sl_ulp_timer_version_t sl_si91x_ulp_timer_get_version (void )
Get the ULP_TIMER version.
[in] |
This function is used to know the ULP_TIMER version
Returns
sl_ulp_timer_version_t type version
420
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h
Macro Definition Documentation#
SL_TIMER_MATCH_VALUE_DEFAULT#
#define SL_TIMER_MATCH_VALUE_DEFAULTValue:
20000000
default 1-second timer match-value for down-counter timer-type with 20Mhz clock
52
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ulp_timer.h