Watchdog Timer#

Modules#

watchdog_timer_clock_config_t

watchdog_timer_config_t

sl_watchdog_timer_version_t

Enumerations#

enum
RO_32KHZ_CLOCK = 1
MCU_FSM__CLOCK = 2
}

Enumeration to represent bg-pmu clock sources.

enum
TIME_DELAY_0
TIME_DELAY_1
TIME_DELAY_2
TIME_DELAY_3
TIME_DELAY_4
TIME_DELAY_5
TIME_DELAY_6
TIME_DELAY_7
TIME_DELAY_8
TIME_DELAY_9
TIME_DELAY_10
TIME_DELAY_11
TIME_DELAY_12
TIME_DELAY_13
TIME_DELAY_14
TIME_DELAY_15
TIME_DELAY_16
TIME_DELAY_17
TIME_DELAY_18
TIME_DELAY_19
TIME_DELAY_20
TIME_DELAY_21
TIME_DELAY_22
TIME_DELAY_23
TIME_DELAY_24
TIME_DELAY_25
TIME_DELAY_26
TIME_DELAY_27
TIME_DELAY_28
TIME_DELAY_29
TIME_DELAY_30
TIME_DELAY_31
TIME_DELAY_LAST
}

Enumeration to represent possible time delays values for WDT interrupt time and system reset time with 32 KHZ clock freq.

Typedefs#

typedef void(*

Typedef for the function pointer of the callback function.

typedef FSM_CLK_T

Renaming high frequency fsm-clock type enum.

typedef AON_CLK_T

Renaming low frequency fsm-clock type enum.

Functions#

void

Initialize the Watchdog timer by enabling the peripheral power.

sl_status_t
sl_si91x_watchdog_configure_clock(watchdog_timer_clock_config_t *timer_clk_config_ptr)

Enables and configures the timer clock sources.

sl_status_t
sl_si91x_watchdog_set_configuration(watchdog_timer_config_t *timer_config_ptr)

Configures the watchdog timer parameters.

sl_status_t
sl_si91x_watchdog_register_timeout_callback(watchdog_timer_callback_t on_timeout_callback)

Registers the Watchdog timer timeout callback.

sl_status_t
sl_si91x_watchdog_set_interrupt_time(time_delays_t interrupt_time)

Sets the Watchdog timer interrupt time (overflow or restart time).

uint8_t

Reads the Watchdog timer interrupt time set value.

sl_status_t
sl_si91x_watchdog_set_system_reset_time(time_delays_t system_reset_time)

Sets the Watchdog timer system-reset time duration.

uint8_t

Reads the Watchdog timer system-reset time set value It will return system reset time in terms of power of two.

sl_status_t
sl_si91x_watchdog_set_window_time(time_delays_t window_time)

Sets the Watchdog timer window time value By setting this value timer becomes as Window watchdog timer, if this value is zero it act as usual WDT.

uint8_t

Reads the Watchdog timer window time set value.

boolean_t

Reads the Watchdog timer system-reset status.

void

De-initializes the Watchdog timer, mask its interrupt, de-power and disable timer.

void

Unregisters the Watchdog timer timeout callback.

__STATIC_INLINE void

Starts and enables the Watchdog timer.

__STATIC_INLINE void

Stops the Watchdog timer by disabling it.

__STATIC_INLINE void

Restarts (kick) an already running Watchdog timer.

__STATIC_INLINE void

Enables the Watchdog timer to reset the system on processor lockup.

__STATIC_INLINE void

Disables the watchdog timer to reset system on processor lockup or on processor stuck.

Enumeration Documentation#

bg_pmu_clock_t#

bg_pmu_clock_t

Enumeration to represent bg-pmu clock sources.

Enumerator
RO_32KHZ_CLOCK

RO_32KHz_clock.

MCU_FSM__CLOCK

mcu_fsm__clock


time_delays_t#

time_delays_t

Enumeration to represent possible time delays values for WDT interrupt time and system reset time with 32 KHZ clock freq.

Enumerator
TIME_DELAY_0

for time delay of 0.03125 milliseconds

TIME_DELAY_1

for time delay of 0.0625 milliseconds

TIME_DELAY_2

for time delay of 0.125 milliseconds

TIME_DELAY_3

for time delay of 0.25 milliseconds

TIME_DELAY_4

for time delay of 0.5 milliseconds

TIME_DELAY_5

for time delay of 1 milliseconds

TIME_DELAY_6

for time delay of 2 milliseconds

TIME_DELAY_7

for time delay of 4 milliseconds

TIME_DELAY_8

for time delay of 8 milliseconds

TIME_DELAY_9

for time delay of 16 milliseconds

TIME_DELAY_10

for time delay of 32 milliseconds

TIME_DELAY_11

for time delay of 64 milliseconds

TIME_DELAY_12

for time delay of 128 milliseconds

TIME_DELAY_13

for time delay of 256 milliseconds

TIME_DELAY_14

for time delay of 512 milliseconds

TIME_DELAY_15

for time delay of 1.024 seconds

TIME_DELAY_16

for time delay of 2.048 seconds

TIME_DELAY_17

for time delay of 4.096 seconds

TIME_DELAY_18

for time delay of 8.192 seconds

TIME_DELAY_19

for time delay of 16.384 seconds

TIME_DELAY_20

for time delay of 32.768 seconds

TIME_DELAY_21

for time delay of 65.536 seconds

TIME_DELAY_22

for time delay of 131.072 seconds

TIME_DELAY_23

for time delay of 262.144 seconds

TIME_DELAY_24

for time delay of 524.288 seconds

TIME_DELAY_25

for time delay of 1048.576 seconds

TIME_DELAY_26

for time delay of 2097.152 seconds

TIME_DELAY_27

for time delay of 4194.304 seconds

TIME_DELAY_28

for time delay of 8388.60 seconds

TIME_DELAY_29

for time delay of 16777.216 seconds

TIME_DELAY_30

for time delay of 33554.432 seconds

TIME_DELAY_31

for time delay of 67108.864 seconds

TIME_DELAY_LAST

for time delay value validation


Typedef Documentation#

watchdog_timer_callback_t#

typedef void(* watchdog_timer_callback_t) (void) )(void)

Typedef for the function pointer of the callback function.

Parameters
TypeDirectionArgument NameDescription
N/Adata

(void *)extra parameter for user application


high_freq_fsm_clock_t#

typedef FSM_CLK_T high_freq_fsm_clock_t

Renaming high frequency fsm-clock type enum.


low_freq_fsm_clock_t#

typedef AON_CLK_T low_freq_fsm_clock_t

Renaming low frequency fsm-clock type enum.


Function Documentation#

sl_si91x_watchdog_init_timer#

void sl_si91x_watchdog_init_timer (void )

Initialize the Watchdog timer by enabling the peripheral power.

Parameters
TypeDirectionArgument NameDescription
void[in]

Also enables it to run during sleep mode). Also un-masks its interrupt.

Returns

  • none


sl_si91x_watchdog_configure_clock#

sl_status_t sl_si91x_watchdog_configure_clock (watchdog_timer_clock_config_t * timer_clk_config_ptr)

Enables and configures the timer clock sources.

Parameters
TypeDirectionArgument NameDescription
watchdog_timer_clock_config_t *[in]timer_clk_config_ptr

Pointer to timer clock configuration structure

Configures the watchdog-timer low frequency, high frequency and bg-pmu clock sources.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_INVALID_PARAMETER (0x0021) - Timer configuration structure members have invalid values, for members watchdog_timer_clock_config_t

    • SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer

    • SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly


sl_si91x_watchdog_set_configuration#

sl_status_t sl_si91x_watchdog_set_configuration (watchdog_timer_config_t * timer_config_ptr)

Configures the watchdog timer parameters.

Parameters
TypeDirectionArgument NameDescription
watchdog_timer_config_t *[in]timer_config_ptr

Pointer to timer clock configuration structure

Parameters are interrupt time (WDT restart time), system reset time & window time (lower time stamp for WDT restart, if required). System reset time should be greater than interrupt time. And Interrupt time should be greater than window time, else API will give error.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_INVALID_PARAMETER (0x0021) - Timer configuration structure members have invalid values, for members watchdog_timer_config_t

    • SL_STATUS_INVALID_CONFIGURATION (0x0023) - Timer configuration structure member 'system_reset_time' is less than or equal to 'interrupt_time'. It should be greater than interrupt time of timer.

    • SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer

    • SL_STATUS_OK (0x0000) - Success, timer parameters configured properly


sl_si91x_watchdog_register_timeout_callback#

sl_status_t sl_si91x_watchdog_register_timeout_callback (watchdog_timer_callback_t on_timeout_callback)

Registers the Watchdog timer timeout callback.

Parameters
TypeDirectionArgument NameDescription
watchdog_timer_callback_t[in]on_timeout_callback

(function pointer) Callback function pointer to be called when timer timeout interrupt occurred.

Also enables its interrupts. If any callback is already registered, the user needs to unregister the callback first before registering the callback.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_NULL_POINTER (0x0022) - Callback function pointer parameter is a null pointer.

    • SL_STATUS_BUSY (0x0004) - The callback is already registered, the user must unregister the previous callback before registering again

    • SL_STATUS_OK (0x0000) - Successfully registered timer timer-out callback


sl_si91x_watchdog_set_interrupt_time#

sl_status_t sl_si91x_watchdog_set_interrupt_time (time_delays_t interrupt_time)

Sets the Watchdog timer interrupt time (overflow or restart time).

Parameters
TypeDirectionArgument NameDescription
time_delays_t[in]interrupt_time

(time_delays_t), timer timeout interrupt duration, Number of clock pulses = 2^(interrupt_time), time_delays_t

This also referred as upper time-stamp for WDT restart Its maximum value is 31. Number of clock pulses for timer timeout = 2^(interrupt_time) This value should be less than system-reset time and greater than window time.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'interrupt_time' parameter has an invalid value.

    • SL_STATUS_INVALID_CONFIGURATION (0x0023) - 'interrupt_time' value is less than window time or greater than system reset time

    • SL_STATUS_OK (0x0000) - Successfully set watchdog timer timeout time value


sl_si91x_watchdog_get_interrupt_time#

uint8_t sl_si91x_watchdog_get_interrupt_time (void )

Reads the Watchdog timer interrupt time set value.

Parameters
TypeDirectionArgument NameDescription
void[in]

It will return interrupt time in terms of power of two.

Returns


sl_si91x_watchdog_set_system_reset_time#

sl_status_t sl_si91x_watchdog_set_system_reset_time (time_delays_t system_reset_time)

Sets the Watchdog timer system-reset time duration.

Parameters
TypeDirectionArgument NameDescription
time_delays_t[in]system_reset_time

(time_delays_t) timer system-reset duration, Number of clock pulses = 2^(system_reset_time), time_delays_t

Its maximum value is 31. Number of clock pulses for system reset time = 2^(system_reset_time). This value should be greater than timer interrupt time & window time.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'system_reset_time' parameter has an invalid value.

    • SL_STATUS_INVALID_CONFIGURATION (0x0023) - 'system_reset_time' value is less than window time or interrupt time

    • SL_STATUS_OK (0x0000) - Successfully set watchdog timer system-reset time value


sl_si91x_watchdog_get_system_reset_time#

uint8_t sl_si91x_watchdog_get_system_reset_time (void )

Reads the Watchdog timer system-reset time set value It will return system reset time in terms of power of two.

Parameters
TypeDirectionArgument NameDescription
void[in]

Returns


sl_si91x_watchdog_set_window_time#

sl_status_t sl_si91x_watchdog_set_window_time (time_delays_t window_time)

Sets the Watchdog timer window time value By setting this value timer becomes as Window watchdog timer, if this value is zero it act as usual WDT.

Parameters
TypeDirectionArgument NameDescription
time_delays_t[in]window_time

(time_delays_t), timer window time, Number of clock pulses = 2^(window_time),time_delays_t

It is also referred as lower time-stamp for WDT restart. Its maximum value is 15. Number of clock pulses for window time = 2^(window_time). This value should be less than timer interrupt time and system-reset time.

Returns

  • status 0 if successful, else error code as follows:

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'window_time' parameter has an invalid value.

    • SL_STATUS_INVALID_CONFIGURATION (0x0023) - 'window_time' value is greater than interrupt time or system reset time

    • SL_STATUS_OK (0x0000) - Successfully set watchdog timer window time value


sl_si91x_watchdog_get_window_time#

uint8_t sl_si91x_watchdog_get_window_time (void )

Reads the Watchdog timer window time set value.

Parameters
TypeDirectionArgument NameDescription
void[in]

It returns time in terms of power of two.

Returns


sl_si91x_watchdog_get_timer_system_reset_status#

boolean_t sl_si91x_watchdog_get_timer_system_reset_status (void )

Reads the Watchdog timer system-reset status.

Parameters
TypeDirectionArgument NameDescription
void[in]

This will return true when watchdog-timer resets system and returns false when it is a power-on reset.

Returns

  • returns true if watchdog timer resets system, else returns false


sl_si91x_watchdog_deinit_timer#

void sl_si91x_watchdog_deinit_timer (void )

De-initializes the Watchdog timer, mask its interrupt, de-power and disable timer.

Parameters
TypeDirectionArgument NameDescription
void[in]

Returns

  • none

Note

  • Unregisters the timer callback.


sl_si91x_watchdog_unregister_timeout_callback#

void sl_si91x_watchdog_unregister_timeout_callback (void )

Unregisters the Watchdog timer timeout callback.

Parameters
TypeDirectionArgument NameDescription
void[in]

It will unregister the callback, i.e., clear the callback function address and pass NULL value to the variable.

Returns

  • none


sl_si91x_watchdog_get_version#

sl_watchdog_timer_version_t sl_si91x_watchdog_get_version ( none)

Gets the Watchdog timer version.

Parameters
TypeDirectionArgument NameDescription
[in]none

It returns the API version of watchdog timer.

Returns

  • (sl_watchdog_version_t) type structure


sl_si91x_watchdog_start_timer#

__STATIC_INLINE void sl_si91x_watchdog_start_timer (void )

Starts and enables the Watchdog timer.

Parameters
TypeDirectionArgument NameDescription
void[in]

Once WDT is started interrupt time will start incrementing as it reaches set interrupt time value, WDT will generate interrupt and timer will load system reset time value and before it reaches this value WDT should be restarted (kicked) to avoid System reset.

Returns

  • none


sl_si91x_watchdog_stop_timer#

__STATIC_INLINE void sl_si91x_watchdog_stop_timer (void )

Stops the Watchdog timer by disabling it.

Parameters
TypeDirectionArgument NameDescription
void[in]

Used to stop an already running timer.

Returns

  • none


sl_si91x_watchdog_restart_timer#

__STATIC_INLINE void sl_si91x_watchdog_restart_timer (void )

Restarts (kick) an already running Watchdog timer.

Parameters
TypeDirectionArgument NameDescription
void[in]

It should be used for already running WDT timer, not for starting a stopped timer.

Returns

  • none


sl_si91x_watchdog_enable_system_reset_on_processor_lockup#

__STATIC_INLINE void sl_si91x_watchdog_enable_system_reset_on_processor_lockup (void )

Enables the Watchdog timer to reset the system on processor lockup.

Parameters
TypeDirectionArgument NameDescription
void[in]

Returns

  • none


sl_si91x_watchdog_disable_system_reset_on_processor_lockup#

__STATIC_INLINE void sl_si91x_watchdog_disable_system_reset_on_processor_lockup (void )

Disables the watchdog timer to reset system on processor lockup or on processor stuck.

Parameters
TypeDirectionArgument NameDescription
void[in]

Returns

  • none