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 clock source is external XTAL clock.
Initialize ULP-Timer clock, by configuring clock source.
De-Initializes ULP-Timer clock, by disabling 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/siwx917_soc/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/siwx917_soc/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/siwx917_soc/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_SOC_CLK_SRC | SoC clock input source. |
ULP_TIMER_ULP_CLK_SRC_LAST | Last member of enum for validation. |
89
of file components/siwx917_soc/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/siwx917_soc/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/siwx917_soc/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/siwx917_soc/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
102
of file components/siwx917_soc/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
104
of file components/siwx917_soc/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
106
of file components/siwx917_soc/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
107
of file components/siwx917_soc/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
112
of file components/siwx917_soc/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
113
of file components/siwx917_soc/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
114
of file components/siwx917_soc/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
115
of file components/siwx917_soc/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
116
of file components/siwx917_soc/drivers/unified_api/inc/sl_si91x_ulp_timer.h
release#
uint8_t sl_ulp_timer_version_t::release
Release version number.
121
of file components/siwx917_soc/drivers/unified_api/inc/sl_si91x_ulp_timer.h
major#
uint8_t sl_ulp_timer_version_t::major
sqa version number
122
of file components/siwx917_soc/drivers/unified_api/inc/sl_si91x_ulp_timer.h
minor#
uint8_t sl_ulp_timer_version_t::minor
dev version number
123
of file components/siwx917_soc/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. 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 has invalid configurations. SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly
138
of file components/siwx917_soc/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 timer_cofiguration structure |
Also configures integral and fractional values of clock cycles per microseconds or per 256 microseconds, as per timer-type value.
Returns
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer SL_STATUS_INVALID_INDEX (0x0027) -Timer configuration structure member 'timer_num' has invalid value. SL_STATUS_INVALID_MODE (0x0024) - Timer configuration structure member 'timer_mode' has invalid value. SL_STATUS_INVALID_TYPE (0x0026) - Timer configuration structure member 'timer_type' has invalid value. SL_STATUS_INVALID_PARAMETER (0x0021) - Timer configuration structure member 'timer_direction' has invalid value. SL_STATUS_OK (0x0000) - Success, timer parameters are configured properly
157
of file components/siwx917_soc/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 |
sl_si91x_ulp_timer_configure_clocksl_si91x_ulp_timer_set_configurationsl_si91x_ulp_timer_register_timeout_callback
Returns
status 0 if successful, else error code SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid. SL_STATUS_OK (0x0000) - Successfully started the timer-instance
171
of file components/siwx917_soc/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 |
Returns
status 0 if successful, else error code SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid. SL_STATUS_OK (0x0000) - Successfully stopped the timer instance
185
of file components/siwx917_soc/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 |
Returns
status 0 if successful, else error code SL_STATUS_INVALID_INDEX (0x0027) - 'timer_num' parameter value is invalid. SL_STATUS_OK (0x0000) - Successfully restarted the timer instance
199
of file components/siwx917_soc/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 |
Returns
status 0 if successful, else error code 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
215
of file components/siwx917_soc/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 |
Returns
status 0 if successful, else error code 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
231
of file components/siwx917_soc/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 |
Returns
status 0 if successful, else error code 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
247
of file components/siwx917_soc/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 |
sl_si91x_ulp_timer_configure_clocksl_si91x_ulp_timer_stopsl_si91x_ulp_timer_set_typesl_si91x_ulp_timer_set_direction
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.
264
of file components/siwx917_soc/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 current count of timer |
Returns
status 0 if successful, else error code 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 timer's current count value
280
of file components/siwx917_soc/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 current count of timer |
Returns
status 0 if successful, else error code 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 timer's current count value
295
of file components/siwx917_soc/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 current count of timer |
Returns
status 0 if successful, else error code 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 timer's current count value
310
of file components/siwx917_soc/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 current count of timer |
Returns
status 0 if successful, else error code 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 timer's current count value
325
of file components/siwx917_soc/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 timer timeout interrupt occurred. |
Returns
status 0 if successful, else error code 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 previous callback before registering new one SL_STATUS_OK (0x0000) - Successfully registered timer timer-out callback
341
of file components/siwx917_soc/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. |
Returns
status 0 if successful, else error code 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 timer timer-out callback
355
of file components/siwx917_soc/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 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 SL_STATUS_INVALID_PARAMETER(0x0021) - 'div_factor' is not according to div_factor_type
368
of file components/siwx917_soc/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 clock source is 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 SL_STATUS_INVALID_PARAMETER(0x0021) - 'xtal_pin' parameter value is invalid.
377
of file components/siwx917_soc/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 clock source.
[in] | timer_clk_ptr | Pointer to timer_clk configuration structure |
Returns
status 0 if successful, else error code. 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 has invalid configurations. SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly
389
of file components/siwx917_soc/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 peripheral clock.
[in] |
Returns
none
400
of file components/siwx917_soc/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
412
of file components/siwx917_soc/drivers/unified_api/inc/sl_si91x_ulp_timer.h