Config Timer#


Introduction#

Configurable timers are versatile peripherals that can be used for a variety of tasks, such as:

  • Modulated signal output

  • Event capture on GPIOs in input mode

  • Clock and event counting These timers can operate in Pulse Width Modulation (PWM) mode, driving a PWM wave on the outputs based on programmed ON and OFF periods. Timers are typically built-in peripherals found in microcontrollers and microprocessors. They function independently of the CPU and other peripherals, allowing them to keep track of time and perform timing-related tasks without requiring CPU intervention.


Configuration#

To configure the config-timer, several parameters need to be defined:


Usage#

After defining the Config Timer (CT) structures, the following common Config Timer functions can be called, using an instance of sl_config_timer_config_t structure:

  1. sl_si91x_config_timer_init - Initializes the config timer.

  2. sl_si91x_config_timer_set_configuration - Sets the configuration for the config timer.

  3. sl_si91x_config_timer_set_initial_count (Optional) - Sets the initial count value.

  4. sl_si91x_config_timer_set_match_count - Sets the match count value.

  5. sl_si91x_config_timer_register_callback - Registers a callback for timer events.

  6. sl_si91x_config_timer_start_on_software_trigger - Starts the timer with a software trigger.

  7. sl_si91x_config_timer_deinit - De-initializes the config timer. These functions will initiate and configure the Config Timer according to the specified parameters, following the implementation pipeline.

Modules#

sl_config_timer_config_t

sl_config_timer_ocu_config_t

sl_config_timer_ocu_control_t

sl_config_action_event_t

sl_config_timer_interrupt_flags_t

sl_config_timer_version_t

Enumerations#

enum
SL_COUNTER_16BIT
SL_COUNTER_32BIT
SL_COUNTER_MODE_LAST
}

Enumeration to represent timer modes.

enum
SL_COUNTER_0
SL_COUNTER_1
SL_COUNTER_NUMBER_LAST
}

Enumeration to represent timer counter numbers.

enum
SL_COUNTER0_UP
SL_COUNTER0_DOWN
SL_COUNTER0_UP_DOWN
SL_COUNTER0_DIRECTION_LAST
}

Enumeration to represent timer counter 0 directions.

enum
SL_COUNTER1_UP
SL_COUNTER1_DOWN
SL_COUNTER1_UP_DOWN
SL_COUNTER1_DIRECTION_LAST
}

Enumeration to represent timer counter 1 directions.

enum
SL_COUNTER_MODE_32 = COUNTER32_BITMODE
SL_COUNTER0_SOFT_RESET_ENABLE = SOFTRESET_COUNTER_0
SL_COUNTER0_PERIODIC_ENABLE = PERIODIC_ENCOUNTER_0
SL_COUNTER0_TRIGGER_ENABLE = COUNTER0_TRIG
SL_COUNTER0_SYNC_TRIGGER_ENABLE = COUNTER0_SYNC_TRIG
SL_COUNTER0_BUFFER_ENABLE = BUF_REG0EN
SL_COUNTER0_UP_DIRECTION = COUNTER0_UP
SL_COUNTER0_DOWN_DIRECTION = COUNTER0_DOWN
SL_COUNTER0_UP_DOWN_DIRECTION = COUNTER0_UP_DOWN
SL_COUNTER1_SOFT_RESET_ENABLE = SOFTRESET_COUNTER_1
SL_COUNTER1_PERIODIC_ENABLE = PERIODIC_ENCOUNTER_1
SL_COUNTER1_TRIGGER_ENABLE = COUNTER1_TRIG
SL_COUNTER1_SYNC_TRIGGER_ENABLE = COUNTER1_SYNC_TRIG
SL_COUNTER1_BUFFER_ENABLE = BUF_REG1EN
SL_COUNTER1_UP_DIRECTION = COUNTER1_UP
SL_COUNTER1_DOWN_DIRECTION = COUNTER1_DOWN
SL_COUNTER1_UP_DOWN_DIRECTION = COUNTER1_UP_DOWN
SL_COUNTER_PARAM_LAST
}

Enumeration to represent timer configuration parameter values.

enum
SL_COUNTER0_OCU_OUTPUT_ENABLE = OUTPUT_OCU_0
SL_COUNTER0_OCU_DMA_ENABLE = OCU_DMA_0
SL_COUNTER0_OCU_8BIT_ENABLE = OCU_8_MODE_0
SL_COUNTER0_OCU_SYNC_ENABLE = OCU_SYNC_WITH_0
SL_COUNTER1_OCU_OUTPUT_ENABLE = OUTPUT_OCU_1
SL_COUNTER1_OCU_DMA_ENABLE = OCU_DMA_1
SL_COUNTER1_OCU_8BIT_ENABLE = OCU_8_MODE_1
SL_COUNTER1_OCU_SYNC_ENABLE = OCU_SYNC_WITH_1
SL_OCU_OUTPUT0_TOGGLE_HIGH = MAKE_OUTPUT_0_HIGH_SEL_0
SL_OCU_OUTPUT0_TOGGLE_LOW = MAKE_OUTPUT_0_LOW_SEL_0
SL_OCU_OUTPUT1_TOGGLE_HIGH = MAKE_OUTPUT_1_HIGH_SEL_1
SL_OCU_OUTPUT1_TOGGLE_LOW = MAKE_OUTPUT_1_LOW_SEL_1
SL_OCU_PARAM_LAST
}

Enumeration to represent timer OCU configuration parameter values.

enum
SL_NO_EVENT
SL_EVENT0_RISING_EDGE
SL_EVENT1_RISING_EDGE
SL_EVENT2_RISING_EDGE
SL_EVENT3_RISING_EDGE
SL_EVENT0_FALLING_EDGE
SL_EVENT1_FALLING_EDGE
SL_EVENT2_FALLING_EDGE
SL_EVENT3_FALLING_EDGE
SL_EVENT0_RISING_FALLING_EDGE
SL_EVENT1_RISING_FALLING_EDGE
SL_EVENT2_RISING_FALLING_EDGE
SL_EVENT3_RISING_FALLING_EDGE
SL_EVENT0_LEVEL0
SL_EVENT1_LEVEL0
SL_EVENT2_LEVEL0
SL_EVENT3_LEVEL0
SL_EVENT0_LEVEL1
SL_EVENT1_LEVEL1
SL_EVENT2_LEVEL1
SL_EVENT3_LEVEL1
SL_AND_EVENT
SL_OR_EVENT
SL_EVENT0_RISING_EDGE_AND_EVENT
SL_EVENT0_RISING_EDGE_OR_EVENT
SL_EVENT1_RISING_EDGE_AND_EVENT
SL_EVENT1_RISING_EDGE_OR_EVENT
SL_EVENT2_RISING_EDGE_AND_EVENT
SL_EVENT2_RISING_EDGE_OR_EVENT
SL_EVENT3_RISING_EDGE_AND_EVENT
SL_EVENT3_RISING_EDGE_OR_EVENT
SL_EVENT0_RISING_EDGE_REGISTERED_AND_EVENT
SL_EVENT0_RISING_EDGE_REGISTERED_OR_EVENT
SL_EVENT1_RISING_EDGE_REGISTERED_AND_EVENT
SL_EVENT1_RISING_EDGE_REGISTERED_OR_EVENT
SL_EVENT2_RISING_EDGE_REGISTERED_AND_EVENT
SL_EVENT2_RISING_EDGE_REGISTERED_OR_EVENT
SL_EVENT3_RISING_EDGE_REGISTERED_AND_EVENT
SL_EVENT3_RISING_EDGE_REGISTERED_OR_EVENT
SL_CT_EVENT_LAST
}

Enumeration to represent various timer input events.

enum
START
STOP
CONTINUE
HALT
INCREMENT
CAPTURE
INTERRUPT
OUTPUT
ACTION_LAST
}

Enumeration to represent various timer actions.

enum
SL_CT_EVENT_INTR_0_FLAG = RSI_CT_EVENT_INTR_0_l
SL_CT_FIFO_0_FULL_FLAG = RSI_CT_EVENT_FIFO_0_FULL_l
SL_CT_COUNTER_0_IS_ZERO_FLAG = RSI_CT_EVENT_COUNTER_0_IS_ZERO_l
SL_CT_COUNTER_0_IS_PEAK_FLAG = RSI_CT_EVENT_COUNTER_0_IS_PEAK_l
SL_CT_EVENT_INTR_1_FLAG = RSI_CT_EVENT_INTR_1_l
SL_CT_FIFO_1_FULL_FLAG = RSI_CT_EVENT_FIFO_1_FULL_l
SL_CT_COUNTER_1_IS_ZERO_FLAG = RSI_CT_EVENT_COUNTER_1_IS_ZERO_l
SL_CT_COUNTER_1_IS_PEAK_FLAG = RSI_CT_EVENT_COUNTER_1_IS_PEAK_l
}

Enumeration to represent various timer interrupt flag values.

Typedefs#

typedef OCU_PARAMS_T

Renaming OCU (Output Compare Unit) parameters structure type.

typedef WFG_PARAMS_T

Renaming WFG (Waveform Generator) parameters structure type.

typedef RSI_CT_CALLBACK_T

Renaming MCPWM callback structure.

typedef void(*
sl_config_timer_callback_t)(void *callback_flag)

Typedef for the function pointer of the interrupt callback function.

Functions#

void

To initialize the config-timer peripheral.

sl_status_t
sl_si91x_config_timer_set_mode(sl_config_timer_mode_t mode)

To set the config-timer mode as 32-bit or 16-bit counters.

sl_status_t
sl_si91x_config_timer_set_configuration(sl_config_timer_config_t *timer_config_ptr)

To configure Config-timer parameters.

void

To reset config-timer parameters and set default values.

sl_status_t
sl_si91x_config_timer_set_ocu_configuration(sl_config_timer_ocu_config_t *ocu_config_ptr)

To set Config-timer OCU (Output Compare Unit) configurations.

void

To reset config-timer OCU (Output Compare Unit) parameters.

sl_status_t
sl_si91x_config_timer_set_ocu_control(sl_config_timer_ocu_control_t *ocu_params)

To set Config-timer OCU mode control parameters.

sl_status_t
sl_si91x_config_timer_set_wfg_configuration(sl_config_timer_wfg_config_t *wfg_config_ptr)

To set Config-timer WFG (Waveform Generator) mode configurations.

sl_status_t
sl_si91x_config_timer_set_initial_count(sl_config_timer_mode_t mode, uint32_t counter0_initial_value, uint32_t counter1_initial_value)

To set the Config-timer initial count based on the timer mode.

sl_status_t
sl_si91x_config_timer_set_match_count(sl_config_timer_mode_t mode, sl_counter_number_t counter_number, uint32_t match_value)

To set the Config-timer match-count based on the timer mode and counter number.

sl_status_t
sl_si91x_config_timer_get_match_value(uint32_t time_period_in_us, uint32_t *match_value)

To calculate and return the match value of the timer for the desired time period.

sl_status_t
sl_si91x_config_timer_get_count(sl_config_timer_mode_t mode, sl_counter_number_t counter_number, uint32_t *count_value)

To get the Config-timer current count.

sl_status_t
sl_si91x_config_timer_reset_counter(sl_counter_number_t counter_number)

To reset the Config-timer counter register value.

sl_status_t
sl_si91x_config_timer_start_on_software_trigger(sl_counter_number_t counter_number)

To start the selected config-timer counter on a software trigger.

sl_status_t
sl_si91x_config_timer_select_action_event(sl_config_timer_action_t action, sl_config_timer_event_t select_event_counter0, sl_config_timer_event_t select_event_counter1)

To select config timer input events for triggering selected timer actions.

sl_status_t
sl_si91x_config_timer_configure_action_event(sl_config_action_event_t *event_config_handle)

To configure the config timer action events.

sl_status_t
sl_si91x_config_timer_register_callback(sl_config_timer_callback_t on_config_timer_callback, void *callback_flag, sl_config_timer_interrupt_flags_t *interrupt_flags)

To register a callback for config timer interrupts.

sl_status_t
sl_si91x_config_timer_unregister_callback(sl_config_timer_interrupt_flags_t *interrupt_flags)

To unregister the timer interrupt callback.

sl_status_t
sl_si91x_config_timer_read_capture(sl_counter_number_t counter_number, uint16_t *capture_value)

To get the Config-timer count value when a capture event occurs.

sl_status_t
sl_si91x_config_timer_set_counter_sync(sl_counter_number_t counter_number, uint8_t sync_counter_value)

To synchronize counter output with other channels.

sl_status_t
sl_si91x_config_timer_set_output_adc_pin(uint8_t pin1, uint8_t pin2)

To configure config timer output events for ADC trigger.

void

To de-initialize the config-timer by disabling its clock.

To get the config timer API version.

Macros#

#define
CT CT0

pointer to CT base address

Enumeration Documentation#

sl_config_timer_mode_t#

sl_config_timer_mode_t

Enumeration to represent timer modes.

Enumerator
SL_COUNTER_16BIT

16-bit counter mode.

SL_COUNTER_32BIT

32-bit counter mode.

SL_COUNTER_MODE_LAST

Last member of the enumeration for validation.


Definition at line 71 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_counter_number_t#

sl_counter_number_t

Enumeration to represent timer counter numbers.

Enumerator
SL_COUNTER_0

Enum for CT counter-0.

SL_COUNTER_1

Enum for CT counter-1.

SL_COUNTER_NUMBER_LAST

Last member of the enumeration for validation.


Definition at line 80 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_counter0_direction_t#

sl_counter0_direction_t

Enumeration to represent timer counter 0 directions.

Enumerator
SL_COUNTER0_UP

CT counter-0 up-counting operation.

SL_COUNTER0_DOWN

CT counter-0 down-counting operation.

SL_COUNTER0_UP_DOWN

CT counter-0 up-down counting operation.

SL_COUNTER0_DIRECTION_LAST

Last member of the enumeration for validation.


Definition at line 89 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_counter1_direction_t#

sl_counter1_direction_t

Enumeration to represent timer counter 1 directions.

Enumerator
SL_COUNTER1_UP

CT counter-1 up-counting operation.

SL_COUNTER1_DOWN

CT counter-1 down-counting operation.

SL_COUNTER1_UP_DOWN

CT counter-1 up-down counting operation.

SL_COUNTER1_DIRECTION_LAST

Last member of the enumeration for validation.


Definition at line 99 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_config_values_t#

sl_config_timer_config_values_t

Enumeration to represent timer configuration parameter values.

Enumerator
SL_COUNTER_MODE_32

32-bit mode value for the counter.

SL_COUNTER0_SOFT_RESET_ENABLE

Soft reset enable value for counter-0.

SL_COUNTER0_PERIODIC_ENABLE

Periodic mode enable value for counter-0.

SL_COUNTER0_TRIGGER_ENABLE

Software trigger enable value for counter-0.

SL_COUNTER0_SYNC_TRIGGER_ENABLE

Sync trigger enable value for counter-0.

SL_COUNTER0_BUFFER_ENABLE

Buffer enable value for counter-0.

SL_COUNTER0_UP_DIRECTION

Up-direction enable value for counter-0.

SL_COUNTER0_DOWN_DIRECTION

Down-direction enable value for counter-0.

SL_COUNTER0_UP_DOWN_DIRECTION

Up-down direction enable value for counter-0.

SL_COUNTER1_SOFT_RESET_ENABLE

Soft reset enable value for counter-1.

SL_COUNTER1_PERIODIC_ENABLE

Periodic mode enable value for counter-1.

SL_COUNTER1_TRIGGER_ENABLE

Software trigger enable value for counter-1.

SL_COUNTER1_SYNC_TRIGGER_ENABLE

Sync trigger enable value for counter-1.

SL_COUNTER1_BUFFER_ENABLE

Buffer enable value for counter-1.

SL_COUNTER1_UP_DIRECTION

Up-direction enable value for counter-1.

SL_COUNTER1_DOWN_DIRECTION

Down-direction enable value for counter-1.

SL_COUNTER1_UP_DOWN_DIRECTION

Up-down direction enable value for counter-1.

SL_COUNTER_PARAM_LAST

Last member of the enumeration for validation.


Definition at line 109 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_ocu_config_values_t#

sl_config_timer_ocu_config_values_t

Enumeration to represent timer OCU configuration parameter values.

Enumerator
SL_COUNTER0_OCU_OUTPUT_ENABLE

Counter-0 output enable value.

SL_COUNTER0_OCU_DMA_ENABLE

Counter-0 OCU-DMA mode enable value.

SL_COUNTER0_OCU_8BIT_ENABLE

Counter-0 OCU 8-bit mode enable value.

SL_COUNTER0_OCU_SYNC_ENABLE

Counter-0 OCU sync mode enable value.

SL_COUNTER1_OCU_OUTPUT_ENABLE

Counter-1 output enable value.

SL_COUNTER1_OCU_DMA_ENABLE

Counter-1 OCU-DMA mode enable value.

SL_COUNTER1_OCU_8BIT_ENABLE

Counter-1 OCU 8-bit mode enable value.

SL_COUNTER1_OCU_SYNC_ENABLE

Counter-1 OCU sync mode enable value.

SL_OCU_OUTPUT0_TOGGLE_HIGH

Counter-0 output toggle high select value.

SL_OCU_OUTPUT0_TOGGLE_LOW

Counter-0 output toggle low select value.

SL_OCU_OUTPUT1_TOGGLE_HIGH

Counter-1 output toggle high select value.

SL_OCU_OUTPUT1_TOGGLE_LOW

Counter-1 output toggle low select value.

SL_OCU_PARAM_LAST

Last member of the enumeration for validation.


Definition at line 133 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_event_t#

sl_config_timer_event_t

Enumeration to represent various timer input events.

Enumerator
SL_NO_EVENT

No input event.

SL_EVENT0_RISING_EDGE

Input-0 rising edge event.

SL_EVENT1_RISING_EDGE

Input-1 rising edge event.

SL_EVENT2_RISING_EDGE

Input-2 rising edge event.

SL_EVENT3_RISING_EDGE

Input-3 rising edge event.

SL_EVENT0_FALLING_EDGE

Input-0 falling edge event.

SL_EVENT1_FALLING_EDGE

Input-1 falling edge event.

SL_EVENT2_FALLING_EDGE

Input-2 falling edge event.

SL_EVENT3_FALLING_EDGE

Input-3 falling edge event.

SL_EVENT0_RISING_FALLING_EDGE

Input-0 rising-falling edge event.

SL_EVENT1_RISING_FALLING_EDGE

Input-1 rising-falling edge event.

SL_EVENT2_RISING_FALLING_EDGE

Input-2 rising-falling edge event.

SL_EVENT3_RISING_FALLING_EDGE

Input-3 rising-falling edge event.

SL_EVENT0_LEVEL0

Input-0 Level-0 event.

SL_EVENT1_LEVEL0

Input-1 Level-0 event.

SL_EVENT2_LEVEL0

Input-2 Level-0 event.

SL_EVENT3_LEVEL0

Input-3 Level-0 event.

SL_EVENT0_LEVEL1

Input-0 Level-1 event.

SL_EVENT1_LEVEL1

Input-1 Level-1 event.

SL_EVENT2_LEVEL1

Input-2 Level-1 event.

SL_EVENT3_LEVEL1

Input-3 Level-1 event.

SL_AND_EVENT

AND event.

SL_OR_EVENT

OR event.

SL_EVENT0_RISING_EDGE_AND_EVENT

Input-0 rising edge AND event.

SL_EVENT0_RISING_EDGE_OR_EVENT

Input-0 rising edge OR event.

SL_EVENT1_RISING_EDGE_AND_EVENT

Input-1 rising edge AND event.

SL_EVENT1_RISING_EDGE_OR_EVENT

Input-1 rising edge OR event.

SL_EVENT2_RISING_EDGE_AND_EVENT

Input-2 rising edge AND event.

SL_EVENT2_RISING_EDGE_OR_EVENT

Input-2 rising edge OR event.

SL_EVENT3_RISING_EDGE_AND_EVENT

Input-3 rising edge AND event.

SL_EVENT3_RISING_EDGE_OR_EVENT

Input-3 rising edge OR event.

SL_EVENT0_RISING_EDGE_REGISTERED_AND_EVENT

Input-0 rising edge registered AND event.

SL_EVENT0_RISING_EDGE_REGISTERED_OR_EVENT

Input-0 rising edge registered OR event.

SL_EVENT1_RISING_EDGE_REGISTERED_AND_EVENT

Input-1 rising edge registered AND event.

SL_EVENT1_RISING_EDGE_REGISTERED_OR_EVENT

Input-1 rising edge registered OR event.

SL_EVENT2_RISING_EDGE_REGISTERED_AND_EVENT

Input-2 rising edge registered AND event.

SL_EVENT2_RISING_EDGE_REGISTERED_OR_EVENT

Input-2 rising edge registered OR event.

SL_EVENT3_RISING_EDGE_REGISTERED_AND_EVENT

Input-3 rising edge registered AND event.

SL_EVENT3_RISING_EDGE_REGISTERED_OR_EVENT

Input-3 rising edge registered OR event.

SL_CT_EVENT_LAST

Last member of the enumeration for validation.


Definition at line 152 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_action_t#

sl_config_timer_action_t

Enumeration to represent various timer actions.

Enumerator
START

Enum for timer-start action.

STOP

Enum for timer-stop action.

CONTINUE

Enum for timer-continue action.

HALT

Enum for timer-halt action.

INCREMENT

Enum for timer-increment action.

CAPTURE

Enum for timer-capture action.

INTERRUPT

Enum for timer-interrupt action.

OUTPUT

Enum for timer-output action.

ACTION_LAST

Last member of the enumeration for validation.


Definition at line 198 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_interrupt_flags_values_t#

sl_config_timer_interrupt_flags_values_t

Enumeration to represent various timer interrupt flag values.

Enumerator
SL_CT_EVENT_INTR_0_FLAG

Enum for counter-0 event interrupt enable value.

SL_CT_FIFO_0_FULL_FLAG

Enum for counter-0 FIFO full interrupt enable value.

SL_CT_COUNTER_0_IS_ZERO_FLAG

Enum for counter-0 zero-count-value interrupt enable value.

SL_CT_COUNTER_0_IS_PEAK_FLAG

Enum for counter-0 match-value interrupt enable value.

SL_CT_EVENT_INTR_1_FLAG

Enum for counter-1 event interrupt enable value.

SL_CT_FIFO_1_FULL_FLAG

Enum for counter-1 FIFO full interrupt enable value.

SL_CT_COUNTER_1_IS_ZERO_FLAG

Enum for counter-1 zero-count-value interrupt enable value.

SL_CT_COUNTER_1_IS_PEAK_FLAG

Enum for counter-1 match-value interrupt enable value.


Definition at line 213 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

Typedef Documentation#

sl_config_timer_ocu_params_t#

typedef OCU_PARAMS_T sl_config_timer_ocu_params_t

Renaming OCU (Output Compare Unit) parameters structure type.


Definition at line 57 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_wfg_config_t#

typedef WFG_PARAMS_T sl_config_timer_wfg_config_t

Renaming WFG (Waveform Generator) parameters structure type.


Definition at line 58 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_pwm_callback_t#

typedef RSI_CT_CALLBACK_T sl_config_timer_pwm_callback_t

Renaming MCPWM callback structure.


Definition at line 59 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_config_timer_callback_t#

typedef void(* sl_config_timer_callback_t) (void *callback_flag) )(void *callback_flag)

Typedef for the function pointer of the interrupt callback function.

Parameters
N/Acallback_flag

(void *) parameter for updating flag values


Definition at line 66 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

Function Documentation#

sl_si91x_config_timer_init#

void sl_si91x_config_timer_init (void )

To initialize the config-timer peripheral.

Parameters
N/A

Configures its output GPIO pins and clock to 16 MHz.


Definition at line 334 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_mode#

sl_status_t sl_si91x_config_timer_set_mode (sl_config_timer_mode_t mode)

To set the config-timer mode as 32-bit or 16-bit counters.

Parameters
[in]mode

sl_config_timer_mode_t for possible values.

In 32-bit mode, Counter_1 and Counter_0 are merged and used as a single 32-bit counter. In this mode, Counter_0 modes/triggers/enables are used.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, timer mode is set properly.

    • SL_STATUS_INVALID_MODE (0x0024) - 'mode' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 355 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_configuration#

sl_status_t sl_si91x_config_timer_set_configuration (sl_config_timer_config_t * timer_config_ptr)

To configure Config-timer parameters.

Parameters
[in]timer_config_ptr

Pointer to CT config structure sl_config_timer_config_t

This API sets the Config-timer parameters such as 32-bit or 16-bit mode, periodic mode, counter trigger enable, soft reset enable, buffer enable, sync trigger enable, and sets direction for counter0 and counter1. Counter trigger enable starts the counter. Sync trigger enables the counter to run/activate when sync is found. Buffer enable copies buffer data to the Counter Match register. Soft reset is valid only when the counter is in two 16-bit counters mode, and resets the counter on the write.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, timer configurations are set properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - Counter direction parameter has an invalid value.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 383 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_reset_configuration#

void sl_si91x_config_timer_reset_configuration (void )

To reset config-timer parameters and set default values.

Parameters
N/A

This API sets the config-timer to 16-bit mode, up-counter direction, and disables periodic mode, soft reset, buffer, sync, and software trigger of counters.


Definition at line 392 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_ocu_configuration#

sl_status_t sl_si91x_config_timer_set_ocu_configuration (sl_config_timer_ocu_config_t * ocu_config_ptr)

To set Config-timer OCU (Output Compare Unit) configurations.

Parameters
[in]ocu_config_ptr

Pointer to CT OCU-config structure sl_config_timer_ocu_config_t

This API enables outputs in OCU mode, OCU-DMA mode, channel sync with OCU outputs, and 8-bit mode for OCU outputs for both counters.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, OCU configurations are set properly.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 414 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_reset_ocu_configuration#

void sl_si91x_config_timer_reset_ocu_configuration (void )

To reset config-timer OCU (Output Compare Unit) parameters.

Parameters
N/A

This API sets the config-timer to 16-bit mode, sets the up-counter direction, and disables DMA mode, channel sync, and 8-bit mode for OCU outputs.


Definition at line 423 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_ocu_control#

sl_status_t sl_si91x_config_timer_set_ocu_control (sl_config_timer_ocu_control_t * ocu_params)

To set Config-timer OCU mode control parameters.

Parameters
[in]ocu_params

Pointer to CT OCU-config structure sl_config_timer_ocu_control_t

This API sets Config-timer OCU mode control parameters such as first and next threshold values for counter outputs. It also enables the DMA support for counters.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, OCU mode control parameters are set properly.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 445 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_wfg_configuration#

sl_status_t sl_si91x_config_timer_set_wfg_configuration (sl_config_timer_wfg_config_t * wfg_config_ptr)

To set Config-timer WFG (Waveform Generator) mode configurations.

Parameters
[in]wfg_config_ptr

Pointer to CT WFG-config structure sl_config_timer_wfg_config_t

This API configures the Config-timer WFG mode settings such as selecting toggle high, low, and peak for counter-0 and counter-1 outputs.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, WFG mode configurations are set properly.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 466 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_initial_count#

sl_status_t sl_si91x_config_timer_set_initial_count (sl_config_timer_mode_t mode, uint32_t counter0_initial_value, uint32_t counter1_initial_value)

To set the Config-timer initial count based on the timer mode.

Parameters
[in]mode

sl_config_timer_mode_t for possible values

[in]counter0_initial_value

(uint32_t)

[in]counter1_initial_value

(uint32_t)

Configurable timer modes are mentioned below:

  • For 32-bit mode, counter0_initial_value is passed to the CT count register. For 32-bit mode, pass counter1_initial_value as zero.

  • For 16-bit mode counters, the ORed value of both initial values is passed to the register.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, initial count is set properly.

    • SL_STATUS_INVALID_MODE (0x0024) - 'mode' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 492 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_match_count#

sl_status_t sl_si91x_config_timer_set_match_count (sl_config_timer_mode_t mode, sl_counter_number_t counter_number, uint32_t match_value)

To set the Config-timer match-count based on the timer mode and counter number.

Parameters
[in]mode

sl_counter_number_t for possible values

[in]counter_number

sl_config_timer_mode_t for possible values

[in]match_value

(uint32_t)

If the mode is 32-bit, use counter0. If the mode is 16-bit, as per the passed counter number, it updates the match value. For 16-bit mode, it takes a 16-bit match-value only, else throws an error.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, match-value is set properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

    • SL_STATUS_INVALID_MODE (0x0024) - 'mode' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 520 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_get_match_value#

sl_status_t sl_si91x_config_timer_get_match_value (uint32_t time_period_in_us, uint32_t * match_value)

To calculate and return the match value of the timer for the desired time period.

Parameters
[in]time_period_in_us

Time period in microseconds.

[out]match_value

Gets the match value of the timer for the desired time period.

This API calculates the match value based on the provided time period in microseconds.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success.

    • SL_STATUS_INVALID_COUNT (0x002B) - Count is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 540 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_get_count#

sl_status_t sl_si91x_config_timer_get_count (sl_config_timer_mode_t mode, sl_counter_number_t counter_number, uint32_t * count_value)

To get the Config-timer current count.

Parameters
[in]mode

sl_counter_number_t for possible values

[in]counter_number

sl_config_timer_mode_t for possible values

[out]count_value

Pointer to the variable to store the count value

This API retrieves the Config-timer current count based on the timer mode and counter number, and updates the count value to the count_value variable input parameter.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, count value is read properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

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

    • SL_STATUS_INVALID_MODE (0x0024) - 'mode' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 566 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_reset_counter#

sl_status_t sl_si91x_config_timer_reset_counter (sl_counter_number_t counter_number)

To reset the Config-timer counter register value.

Parameters
[in]counter_number

sl_counter_number_t for possible values

This API resets the count values of the selected counter.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, counter resets properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 589 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_start_on_software_trigger#

sl_status_t sl_si91x_config_timer_start_on_software_trigger (sl_counter_number_t counter_number)

To start the selected config-timer counter on a software trigger.

Parameters
[in]counter_number

sl_counter_number_t for possible values

Note

  • This API triggers the 'counter_number' counter.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, timer started properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 610 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_select_action_event#

sl_status_t sl_si91x_config_timer_select_action_event (sl_config_timer_action_t action, sl_config_timer_event_t select_event_counter0, sl_config_timer_event_t select_event_counter1)

To select config timer input events for triggering selected timer actions.

Parameters
[in]action

sl_config_timer_action_t for possible values

[in]select_event_counter0

sl_config_timer_event_t for possible values, (selects input event for triggering counter-0 action)

[in]select_event_counter1

sl_config_timer_event_t for possible values, (selects input event for triggering counter-1 action)

This API selects config timer input events for triggering selected timer actions. Different timer actions include start, stop, continue, halt, increment, capture, interrupt, and output.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, input event is set properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - Selected input event or action parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 639 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_configure_action_event#

sl_status_t sl_si91x_config_timer_configure_action_event (sl_config_action_event_t * event_config_handle)

To configure the config timer action events.

Parameters
[in]event_config_handle

Pointer to CT configure action events structure sl_config_action_event_t

This API configures the config timer input-event's AND-event and OR-event for triggering selected timer actions. Different timer actions include start, stop, continue, halt, increment, capture, interrupt, and output.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, AND event & OR event set properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - and-event or or-event or event-valid-bits value is invalid.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 670 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_register_callback#

sl_status_t sl_si91x_config_timer_register_callback (sl_config_timer_callback_t on_config_timer_callback, void * callback_flag, sl_config_timer_interrupt_flags_t * interrupt_flags)

To register a callback for config timer interrupts.

Parameters
[in]on_config_timer_callback

(function pointer) Callback function pointer to be called when a timer interrupt occurs sl_config_timer_callback_t

[in]callback_flag

(void *) Pointer to the interrupt flag value variable sl_config_timer_callback_t

[in]interrupt_flags

Pointer to the interrupt flags structure sl_config_timer_interrupt_flags_t

This API registers a callback function for config timer interrupts by enabling the respective interrupts as per the selected interrupt flag.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Successfully registered timer timeout callback.

    • SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister the previous callback before registering a new one.

    • SL_STATUS_NULL_POINTER (0x0022) - Parameter is a null pointer.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 698 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_unregister_callback#

sl_status_t sl_si91x_config_timer_unregister_callback (sl_config_timer_interrupt_flags_t * interrupt_flags)

To unregister the timer interrupt callback.

Parameters
[in]interrupt_flags

Pointer to the interrupt flags structure sl_config_timer_interrupt_flags_t

This API disables interrupts as per the selected interrupt flag and unregisters the previously registered timer interrupt callback.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Successfully unregistered timer interrupt callback.

    • SL_STATUS_NULL_POINTER (0x0022) - Parameter is a null pointer.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 721 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_read_capture#

sl_status_t sl_si91x_config_timer_read_capture (sl_counter_number_t counter_number, uint16_t * capture_value)

To get the Config-timer count value when a capture event occurs.

Parameters
[in]counter_number

sl_counter_number_t for possible values

[out]capture_value

Pointer to the variable to store the count value at capture event (uint16_t*).

This API updates the capture count value of the timer to the capture_value variable input parameter.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, capture count value is read properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

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

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 766 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_counter_sync#

sl_status_t sl_si91x_config_timer_set_counter_sync (sl_counter_number_t counter_number, uint8_t sync_counter_value)

To synchronize counter output with other channels.

Parameters
[in]counter_number

sl_counter_number_t for possible values

[in]sync_counter_value

The value to synchronize the counter output (uint8_t).

This API synchronizes the counter output with other channels as per the sync_counter_value.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, counter output synced properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'counter_number' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 788 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_set_output_adc_pin#

sl_status_t sl_si91x_config_timer_set_output_adc_pin (uint8_t pin1, uint8_t pin2)

To configure config timer output events for ADC trigger.

Parameters
[in]pin1

Counter0 output event for ADC trigger (0 to 31) sl_config_timer_event_t

[in]pin2

Counter1 output event for ADC trigger (0 to 31) sl_config_timer_event_t

Configures events for counter0 and counter1 outputs to trigger ADC.

Returns

  • Status code indicating the result:

    • SL_STATUS_OK (0x0000) - Success, ADC trigger events set properly.

    • SL_STATUS_INVALID_PARAMETER (0x0021) - 'pin1' or 'pin2' parameter value is invalid.

For more information on status codes, see SL STATUS DOCUMENTATION.


Definition at line 810 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_deinit#

void sl_si91x_config_timer_deinit (void )

To de-initialize the config-timer by disabling its clock.

Parameters
N/A

This API de-initializes the config-timer by disabling its clock. It also unregisters the callback and disables all config timer interrupts.

Note

  • Ensure that no timer operations are pending before calling this API.


Definition at line 845 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

sl_si91x_config_timer_get_version#

sl_config_timer_version_t sl_si91x_config_timer_get_version (void )

To get the config timer API version.

Parameters
N/A

This API retrieves the version information of the config timer API.

Returns


Definition at line 855 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h

Macro Definition Documentation#

CT#

#define CT
Value:
CT0

pointer to CT base address


Definition at line 53 of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_config_timer.h