Pulse Width Modulation#

Introduction#

The Motor Control Pulse Width Modulation (MCPWM) controller is used to generate a periodic pulse waveform, which is useful in motor control and power control applications. The MCPWM controller acts as a timer to count up to a period count value. The time period and the duty cycle of the pulses are both programmable.

  • Features of Pulse Width Modulation:

  1. Supports up to eight PWM outputs with four duty cycle generators

  2. Complementary and Independent output modes are supported

  3. Dead time insertion in Complementary mode

  4. Manual override option for PWM output pins. Output pin polarity is programmable

  5. Supports generation of interrupt for different events

  6. Supports two hardware fault input pins

  7. Special event trigger for synchronizing analog-to-digital conversions

Configuration#

The configurable parameters of Pulse Width Modulation are frequency, mode, timer counter, duty cycle, output polarity, duty cycle. And the apis used to call them are:

  1. sl_si91x_pwm_set_output_polarity

  2. sl_si91x_pwm_set_time_period

  3. sl_si91x_pwm_set_output_mode

  4. sl_si91x_pwm_get_time_period

  5. sl_si91x_pwm_set_duty_cycle

  6. sl_si91x_pwm_set_base_timer_mode

  7. sl_si91x_pwm_control_base_timer

  • For more information on configuring available parameters refer to the respective peripheral example readme document.

Usage#

  • The driver PWM exhibits the production of a 50% duty cycle, continuous ON/OFF digital signal at a frequency of 25 kHz. Since this component may be instantiated, several named instances can be made of it.An initialization struct set in accordance with the configuration is constructed for every instance. An instance of channel_0 is generated by default. and the APIs utilized to set up and initialize PWM are

  1. sl_si91x_pwm_init

  2. sl_si91x_pwm_set_configuration

  3. sl_si91x_pwm_control_period

  4. sl_si91x_pwm_configure_duty_cycle

  5. sl_si91x_pwm_register_callback

  6. sl_si91x_pwm_start

  7. sl_si91x_pwm_stop

  8. sl_si91x_pwm_deinit

Modules#

sl_pwm_version_t

sl_pwm_config_t

sl_pwm_init_t

sl_pwm_fault_init_t

Enumerations#

enum
SL_FAULTA
SL_FAULTB
SL_FAULT_LAST
}

Enum to control fault a and fault b.

enum
SL_DEAD_TIME_DISABLE
SL_DEAD_TIME_ENABLE
SL_DEAD_TIME_LAST
}

Enum to control dead time.

enum
SL_DUTY_CYCLE_DISABLE
SL_DUTY_CYCLE_ENABLE
SL_DUTY_CYCLE_LAST
}

Enum to control duty cycle.

enum
SL_OVERRIDE_RESET
SL_OVERRIDE_SET
SL_OVERRIDE_LAST
}

Enum to control override.

enum
SL_OUTPUT_FAULT_RESET
SL_OUTPUT_FAULT_SET
SL_OUTPUT_FAULT_LAST
}

Enum to control output fault.

enum
SL_EVENT_DISABLE
SL_EVENT_ENABLE
SL_EVENT_LAST
}

Enum to control events.

enum
SL_CHANNEL_1
SL_CHANNEL_2
SL_CHANNEL_3
SL_CHANNEL_4
SL_CHANNEL_LAST
}

Enumeration for PWM channels(1-4)

enum
SL_BASE_TIMER_EACH_CHANNEL
SL_BASE_TIMER_ALL_CHANNEL
SL_BASE_TIMER_LAST
}

Enumeration for PWM timer.

enum
SL_POLARITYL_LOW
SL_POLARITYL_HIGH
SL_POLARITYL_LAST
}

Enumeration for PWM polarity low.

enum
SL_POLARITYH_LOW
SL_POLARITYH_HIGH
SL_POLARITYH_LAST
}

Enumeration for PWM polarity high.

enum
SL_MODE_INDEPENDENT
SL_MODE_COMPLEMENTARY
SL_MODE_LAST
}

Enumeration for PWM mode.

enum
SL_FREE_RUN_MODE = 0
SL_SINGLE_EVENT_MODE = 1
SL_DOWN_COUNT_MODE = 2
SL_UP_DOWN_MODE = 4
SL_UP_DOWN_DOUBLE_UPDATE = 5
SL_BASE_TIMER_MODE_LAST = 6
}

Enumeration for PWM base timer modes.

enum
SL_OUTPUT_LOW0
SL_OUTPUT_LOW1
SL_OUTPUT_LOW2
SL_OUTPUT_LOW3
SL_OUTPUT_HIGH0
SL_OUTPUT_HIGH1
SL_OUTPUT_HIGH2
SL_OUTPUT_HIGH3
SL_OUTPUT_LAST
}

Enumeration for PWM output complementary pairs.

enum
SL_SVT_COUNT_UP
SL_SVT_COUNT_DOWN
SL_SVT_COUNT_LAST
}

Enumeration for PWM special event trigger time base.

enum
SL_TIME_PERIOD_POSTSCALE_1_1
SL_TIME_PERIOD_POSTSCALE_1_2
SL_TIME_PERIOD_POSTSCALE_1_3
SL_TIME_PERIOD_POSTSCALE_1_4
SL_TIME_PERIOD_POSTSCALE_1_5
SL_TIME_PERIOD_POSTSCALE_1_6
SL_TIME_PERIOD_POSTSCALE_1_7
SL_TIME_PERIOD_POSTSCALE_1_8
SL_TIME_PERIOD_POSTSCALE_1_9
SL_TIME_PERIOD_POSTSCALE_1_10
SL_TIME_PERIOD_POSTSCALE_1_11
SL_TIME_PERIOD_POSTSCALE_1_12
SL_TIME_PERIOD_POSTSCALE_1_13
SL_TIME_PERIOD_POSTSCALE_1_14
SL_TIME_PERIOD_POSTSCALE_1_15
SL_TIME_PERIOD_POSTSCALE_1_16
SL_TIME_PERIOD_POSTSCALE_1_LAST
}

Enumeration for PWM Time base output post scale bits.

enum
SL_TIME_PERIOD_PRESCALE_1
SL_TIME_PERIOD_PRESCALE_2
SL_TIME_PERIOD_PRESCALE_4
SL_TIME_PERIOD_PRESCALE_8
SL_TIME_PERIOD_PRESCALE_16
SL_TIME_PERIOD_PRESCALE_32
SL_TIME_PERIOD_PRESCALE_64
SL_TIME_PERIOD_PRESCALE_LAST
}

Enumeration for PWM input clock pre scale select value.

enum
SL_VALUE_INACTIVE
SL_VALUE_ACTIVE
SL_VALUE_LAST
}

Enumeration for fault input override value.

enum
SL_OP_OVERRIDE_UNSYNC
SL_OP_OVERRIDE_SYNC
SL_OP_OVERRIDE_LAST
}

Enumeration for output override control.

enum
SL_OVERRIDE_VALUE0
SL_OVERRIDE_VALUE1
SL_OVERRIDE_VALUE_LAST
}

Enumeration for override value.

enum
SL_TRIGGER_DISABLE
SL_TRIGGER_ENABLE
SL_TRIGGER_LAST
}

PWM enable external triggering.

Typedefs#

typedef RSI_MCPWM_T

PWM structure.

typedef RSI_MCPWM_SVT_CONFIG_T

PWM Special Event trigger configuration parameters structure.

typedef RSI_MCPWM_DT_CONFIG_T

PWM DeadTime configuration parameters structure.

typedef RSI_MCPWM_CALLBACK_T

PWM Callback structure.

Variables#

uint8_t

Release version number.

uint8_t

major version number

uint8_t

minor version number

PWM channel selection(ch0 to ch4)

uint32_t

PWM frequency.

boolean_t

PWM output polarity for low side.

boolean_t

PWM output polarity for high side.

boolean_t

PWM mode(independent/complementary)

uint32_t

PWM base time counter initial value.

uint8_t

PWM duty cycle.

uint8_t

PWM base timer mode.

uint8_t

PWM channel timer selection.

uint8_t

PWM GPIO output low side port.

uint8_t

PWM GPIO output low side pin.

uint8_t

PWM GPIO output high side port.

uint8_t

PWM GPIO output high side pin.

uint8_t

PWM GPIO output low side mux.

uint8_t

PWM GPIO output high side mux.

uint8_t

PWM GPIO output low side pad.

uint8_t

PWM GPIO output high side pad.

uint8_t

PWM GPIO port.

uint8_t

PWM GPIO pin.

uint8_t

PWM GPIO mux.

uint8_t

PWM GPIO pad.

Functions#

void

This API is used to de-initialize the PWM peripheral.

This API is used to get the API version of PWM.

sl_status_t
sl_si91x_pwm_set_configuration(sl_pwm_config_t *pwm_config)

This API sets the PWM configuration parameters.

sl_status_t
sl_si91x_pwm_set_output_polarity(boolean_t polarity_low, boolean_t polarity_high)

This API is used to set output polarity for Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_start(sl_pwm_channel_t channel)

This API is used to start the Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_stop(sl_pwm_channel_t channel)

This API is used to stop the Motor Control Pulse Width Modulation (MCPWM) operation for the required channel.

sl_status_t
sl_si91x_pwm_control_base_timer(sl_pwm_timer_t base_timer)

This API is used to select number of base timers as four base timers for four channels or one base timer for all channels of Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_set_time_period(sl_pwm_channel_t channel, uint32_t period, uint32_t init_val)

This API is used to set time period and counter initial value for the required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_trigger_special_event(sl_pwm_svt_t direction, sl_si91x_pwm_svt_config_t *pwm_config)

This API is used to configure special event trigger generation for required Motor Control Pulse Width Modulation (MCPWM) channel which allows the A/D converter to be synchronized to the PWM time base.

sl_status_t
sl_si91x_pwm_configure_dead_time(sl_si91x_pwm_dt_config_t *dead_time, sl_pwm_channel_t channel)

This API is used to configure Dead time insertion parameters for Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_reset_channel(sl_pwm_channel_t channel)

This API is used to reset the required channel of Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_reset_counter(sl_pwm_channel_t channel)

This API is used to reset the counter from the required channel of Motor Control Pulse Width Modulation (MCPWM)

sl_status_t
sl_si91x_pwm_control_period(sl_pwm_post_t post_scale, sl_pwm_pre_t pre_scale, sl_pwm_channel_t channel)

This API is used to set base time period control for the required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_control_fault(sl_pwm_fault_t fault, sl_pwm_output_t pwm_output, sl_pwm_override_value_t value)

This API is used to control fault A/B pin output value to be overridden when fault condition occurs.

sl_status_t
sl_si91x_pwm_set_base_timer_mode(sl_pwm_base_timer_mode_t mode, sl_pwm_channel_t channel)

This API is used to set the mode of base timer for required channel.

sl_status_t
sl_si91x_pwm_set_output_mode(sl_pwm_mode_t mode, sl_pwm_channel_t channel)

This API is used to set output mode for the Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_register_callback(sl_si91x_pwm_callback_t *callback_event, uint16_t flag)

Handles all interrupt flags of Motor Control Pulse Width Modulation (MCPWM).

sl_status_t

Unregisters the PWM event.

sl_status_t
sl_si91x_pwm_read_counter(uint16_t *counter_value, sl_pwm_channel_t channel)

This API is used to read the counter current value for required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_get_counter_direction(uint8_t *counter_direction, sl_pwm_channel_t channel)

This API is used to get time period counter direction status of required Motor Control Pulse Width Modulation (MCPWM) channel whether counter up / down.

sl_status_t
sl_si91x_pwm_control_dead_time(sl_pwm_dead_time_t dead_time, uint32_t flag)

Controls dead time insertion at rise edge (or) fall edge of any four channels.

sl_status_t

This API is used to clear the interrupts of Motor Control Pulse Width Modulation (MCPWM)

sl_status_t
sl_si91x_pwm_get_interrupt_status(uint32_t flag, uint16_t *intr_status)

This API is used to get the interrupt status of interrupt flags of Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_configure_duty_cycle(sl_pwm_duty_cycle_t duty_cycle, uint32_t value, sl_pwm_channel_t channel)

This API is used to control duty cycle control parameters for the required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_output_override(sl_pwm_override_t override, sl_pwm_output_t pwm_output)

This API is used to control the output override operation of Motor Control Pulse Width Modulation (MCPWM).

sl_status_t
sl_si91x_pwm_control_override(sl_pwm_override_t override, sl_pwm_output_override_t value)

This API is used to control the override control parameter and output is in sync with PWM time period depending on operating mode.

sl_status_t
sl_si91x_pwm_control_override_value(sl_pwm_override_t override, sl_pwm_output_t pwm_output, sl_pwm_override_value_t value)

This API is used to control override value for the required output of Motor Control Pulse Width Modulation (MCPWM)

sl_status_t
sl_si91x_pwm_control_output_fault(sl_pwm_output_fault_t output_fault, uint32_t value)

This API is used to control output fault in pwm module.

sl_status_t

This API is used to control the special event trigger.

sl_status_t
sl_si91x_pwm_select_dead_time(sl_pwm_dead_time_t dead_time, uint32_t value)

This API is used to control the dead time.

sl_status_t
sl_si91x_pwm_set_duty_cycle(uint32_t duty_cycle, sl_pwm_channel_t channel)

This API is used to select duty cycle for the required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_get_duty_cycle(sl_pwm_channel_t channel, uint32_t *duty_cycle)

This API is used to get duty cycle for the required Motor Control Pulse Width Modulation (MCPWM) channel.

sl_status_t
sl_si91x_pwm_enable_external_trigger(sl_pwm_trigger_t enable)

This API is used to enables an external trigger.

sl_status_t
sl_si91x_pwm_get_time_period(sl_pwm_channel_t channel, uint16_t *time_period)

Get time period for the required channel.

sl_status_t
sl_si91x_pwm_init(sl_pwm_init_t *pwm_init)

This API is used to initialize PWM pins and clock.

sl_status_t
sl_si91x_pwm_fault_init(sl_pwm_fault_init_t *pwm_fault)

This API is used to initialize PWM event pins.

sl_status_t
sl_si91x_pwm_reset_channel_disable(sl_pwm_channel_t channel)

This API is used to disable the reset for the required channel of MCPWM.

sl_status_t
sl_si91x_pwm_reset_counter_disable(sl_pwm_channel_t channel)

This API is used to disable the counter reset for the required channel of MCPWM.

Enumeration Documentation#

sl_pwm_fault_t#

sl_pwm_fault_t

Enum to control fault a and fault b.

Enumerator
SL_FAULTA

PWM fault A.

SL_FAULTB

PWM fault B.

SL_FAULT_LAST

Last member of enum for validation.


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

sl_pwm_dead_time_t#

sl_pwm_dead_time_t

Enum to control dead time.

Enumerator
SL_DEAD_TIME_DISABLE

PWM dead time disable.

SL_DEAD_TIME_ENABLE

PWM dead time enable.

SL_DEAD_TIME_LAST

Last member of enum for validation.


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

sl_pwm_duty_cycle_t#

sl_pwm_duty_cycle_t

Enum to control duty cycle.

Enumerator
SL_DUTY_CYCLE_DISABLE

PWM duty cycle disable.

SL_DUTY_CYCLE_ENABLE

PWM duty cycle enable.

SL_DUTY_CYCLE_LAST

Last member of enum for validation.


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

sl_pwm_override_t#

sl_pwm_override_t

Enum to control override.

Enumerator
SL_OVERRIDE_RESET

PWM override reset.

SL_OVERRIDE_SET

PWM override set.

SL_OVERRIDE_LAST

Last member of enum for validation.


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

sl_pwm_output_fault_t#

sl_pwm_output_fault_t

Enum to control output fault.

Enumerator
SL_OUTPUT_FAULT_RESET

PWM output fault reset.

SL_OUTPUT_FAULT_SET

PWM output fault set.

SL_OUTPUT_FAULT_LAST

Last member of enum for validation.


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

sl_pwm_event_t#

sl_pwm_event_t

Enum to control events.

Enumerator
SL_EVENT_DISABLE

PWM event disable.

SL_EVENT_ENABLE

PWM event enable.

SL_EVENT_LAST

Last member of enum for validation.


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

sl_pwm_channel_t#

sl_pwm_channel_t

Enumeration for PWM channels(1-4)

Enumerator
SL_CHANNEL_1

PWM channel 1.

SL_CHANNEL_2

PWM channel 2.

SL_CHANNEL_3

PWM channel 3.

SL_CHANNEL_4

PWM channel 4.

SL_CHANNEL_LAST

Last member of enum for validation.


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

sl_pwm_timer_t#

sl_pwm_timer_t

Enumeration for PWM timer.

Enumerator
SL_BASE_TIMER_EACH_CHANNEL

PWM timer for each channel.

SL_BASE_TIMER_ALL_CHANNEL

PWM timer for all channels.

SL_BASE_TIMER_LAST

Last member of enum for validation.


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

sl_pwm_polarity_low_t#

sl_pwm_polarity_low_t

Enumeration for PWM polarity low.

Enumerator
SL_POLARITYL_LOW

PWM output polarity for low side(L0-L3)-low.

SL_POLARITYL_HIGH

PWM output polarity for low side(H0-H3)-high.

SL_POLARITYL_LAST

Last member of enum for validation.


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

sl_pwm_polarity_high_t#

sl_pwm_polarity_high_t

Enumeration for PWM polarity high.

Enumerator
SL_POLARITYH_LOW

PWM output polarity for high side(L0-L3)-low.

SL_POLARITYH_HIGH

PWM output polarity for high side(H0-H3)-high.

SL_POLARITYH_LAST

Last member of enum for validation.


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

sl_pwm_mode_t#

sl_pwm_mode_t

Enumeration for PWM mode.

Enumerator
SL_MODE_INDEPENDENT

PWM independent mode.

SL_MODE_COMPLEMENTARY

PWM complementary mode.

SL_MODE_LAST

Last member of enum for validation.


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

sl_pwm_base_timer_mode_t#

sl_pwm_base_timer_mode_t

Enumeration for PWM base timer modes.

Enumerator
SL_FREE_RUN_MODE

PWM free run mode.

SL_SINGLE_EVENT_MODE

PWM single event mode.

SL_DOWN_COUNT_MODE

PWM down count mode.

SL_UP_DOWN_MODE

PWM up/down mode.

SL_UP_DOWN_DOUBLE_UPDATE

PWM up/down double update mode.

SL_BASE_TIMER_MODE_LAST

Last member of enum for validation.


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

sl_pwm_output_t#

sl_pwm_output_t

Enumeration for PWM output complementary pairs.

Enumerator
SL_OUTPUT_LOW0

PWM output L0.

SL_OUTPUT_LOW1

PWM output L1.

SL_OUTPUT_LOW2

PWM output L2.

SL_OUTPUT_LOW3

PWM output L3.

SL_OUTPUT_HIGH0

PWM output H0.

SL_OUTPUT_HIGH1

PWM output H1.

SL_OUTPUT_HIGH2

PWM output H2.

SL_OUTPUT_HIGH3

PWM output H3.

SL_OUTPUT_LAST

Last member of enum for validation.


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

sl_pwm_svt_t#

sl_pwm_svt_t

Enumeration for PWM special event trigger time base.

Enumerator
SL_SVT_COUNT_UP

Special event trigger occurs when time base is counting up.

SL_SVT_COUNT_DOWN

Special event trigger occurs when time base is counting down.

SL_SVT_COUNT_LAST

Last member of enum for validation.


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

sl_pwm_post_t#

sl_pwm_post_t

Enumeration for PWM Time base output post scale bits.

Enumerator
SL_TIME_PERIOD_POSTSCALE_1_1

1:1 post scale

SL_TIME_PERIOD_POSTSCALE_1_2

1:2 post scale

SL_TIME_PERIOD_POSTSCALE_1_3

1:3 post scale

SL_TIME_PERIOD_POSTSCALE_1_4

1:4 post scale

SL_TIME_PERIOD_POSTSCALE_1_5

1:5 post scale

SL_TIME_PERIOD_POSTSCALE_1_6

1:6 post scale

SL_TIME_PERIOD_POSTSCALE_1_7

1:7 post scale

SL_TIME_PERIOD_POSTSCALE_1_8

1:8 post scale

SL_TIME_PERIOD_POSTSCALE_1_9

1:9 post scale

SL_TIME_PERIOD_POSTSCALE_1_10

1:10 post scale

SL_TIME_PERIOD_POSTSCALE_1_11

1:11 post scale

SL_TIME_PERIOD_POSTSCALE_1_12

1:12 post scale

SL_TIME_PERIOD_POSTSCALE_1_13

1:13 post scale

SL_TIME_PERIOD_POSTSCALE_1_14

1:14 post scale

SL_TIME_PERIOD_POSTSCALE_1_15

1:15 post scale

SL_TIME_PERIOD_POSTSCALE_1_16

1:16 post scale

SL_TIME_PERIOD_POSTSCALE_1_LAST

Last member of enum for validation.


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

sl_pwm_pre_t#

sl_pwm_pre_t

Enumeration for PWM input clock pre scale select value.

Enumerator
SL_TIME_PERIOD_PRESCALE_1

1x input clock period

SL_TIME_PERIOD_PRESCALE_2

2x input clock period

SL_TIME_PERIOD_PRESCALE_4

4x input clock period

SL_TIME_PERIOD_PRESCALE_8

8x input clock period

SL_TIME_PERIOD_PRESCALE_16

16x input clock period

SL_TIME_PERIOD_PRESCALE_32

32x input clock period

SL_TIME_PERIOD_PRESCALE_64

64x input clock period

SL_TIME_PERIOD_PRESCALE_LAST

Last member of enum for validation.


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

sl_pwm_fault_input_t#

sl_pwm_fault_input_t

Enumeration for fault input override value.

Enumerator
SL_VALUE_INACTIVE

PWM output pin is driven inactive on an external fault input A/B event.

SL_VALUE_ACTIVE

PWM output pin is driven active on an external fault input A/B event.

SL_VALUE_LAST

Last member of enum for validation.


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

sl_pwm_output_override_t#

sl_pwm_output_override_t

Enumeration for output override control.

Enumerator
SL_OP_OVERRIDE_UNSYNC

no effect.

SL_OP_OVERRIDE_SYNC

Output override is in sync with pwm time period depending on operating mode.

SL_OP_OVERRIDE_LAST

Last member of enum for validation.


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

sl_pwm_override_value_t#

sl_pwm_override_value_t

Enumeration for override value.

Enumerator
SL_OVERRIDE_VALUE0

Override value 0.

SL_OVERRIDE_VALUE1

Override value 1.

SL_OVERRIDE_VALUE_LAST

Last member of enum for validation.


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

sl_pwm_trigger_t#

sl_pwm_trigger_t

PWM enable external triggering.

Enumerator
SL_TRIGGER_DISABLE

Disabling external triggering.

SL_TRIGGER_ENABLE

Enabling external triggering.

SL_TRIGGER_LAST

Last member of enum for validation.


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

Typedef Documentation#

sl_si91x_mcpwm_t#

typedef RSI_MCPWM_T sl_si91x_mcpwm_t

PWM structure.


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

sl_si91x_pwm_svt_config_t#

typedef RSI_MCPWM_SVT_CONFIG_T sl_si91x_pwm_svt_config_t

PWM Special Event trigger configuration parameters structure.


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

sl_si91x_pwm_dt_config_t#

typedef RSI_MCPWM_DT_CONFIG_T sl_si91x_pwm_dt_config_t

PWM DeadTime configuration parameters structure.


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

sl_si91x_pwm_callback_t#

typedef RSI_MCPWM_CALLBACK_T sl_si91x_pwm_callback_t

PWM Callback structure.


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

Variable Documentation#

release#

uint8_t sl_pwm_version_t::release

Release version number.


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

major#

uint8_t sl_pwm_version_t::major

major version number


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

minor#

uint8_t sl_pwm_version_t::minor

minor version number


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

channel#

sl_pwm_channel_t sl_pwm_config_t::channel

PWM channel selection(ch0 to ch4)


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

frequency#

uint32_t sl_pwm_config_t::frequency

PWM frequency.


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

is_polarity_low#

boolean_t sl_pwm_config_t::is_polarity_low

PWM output polarity for low side.


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

is_polarity_high#

boolean_t sl_pwm_config_t::is_polarity_high

PWM output polarity for high side.


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

is_mode#

boolean_t sl_pwm_config_t::is_mode

PWM mode(independent/complementary)


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

base_time_counter_initial_value#

uint32_t sl_pwm_config_t::base_time_counter_initial_value

PWM base time counter initial value.


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

duty_cycle#

uint8_t sl_pwm_config_t::duty_cycle

PWM duty cycle.


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

base_timer_mode#

uint8_t sl_pwm_config_t::base_timer_mode

PWM base timer mode.


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

channel_timer_selection#

uint8_t sl_pwm_config_t::channel_timer_selection

PWM channel timer selection.


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

port_l#

uint8_t sl_pwm_init_t::port_l

PWM GPIO output low side port.


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

pin_l#

uint8_t sl_pwm_init_t::pin_l

PWM GPIO output low side pin.


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

port_h#

uint8_t sl_pwm_init_t::port_h

PWM GPIO output high side port.


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

pin_h#

uint8_t sl_pwm_init_t::pin_h

PWM GPIO output high side pin.


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

mux_l#

uint8_t sl_pwm_init_t::mux_l

PWM GPIO output low side mux.


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

mux_h#

uint8_t sl_pwm_init_t::mux_h

PWM GPIO output high side mux.


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

pad_l#

uint8_t sl_pwm_init_t::pad_l

PWM GPIO output low side pad.


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

pad_h#

uint8_t sl_pwm_init_t::pad_h

PWM GPIO output high side pad.


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

port#

uint8_t sl_pwm_fault_init_t::port

PWM GPIO port.


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

pin#

uint8_t sl_pwm_fault_init_t::pin

PWM GPIO pin.


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

mux#

uint8_t sl_pwm_fault_init_t::mux

PWM GPIO mux.


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

pad#

uint8_t sl_pwm_fault_init_t::pad

PWM GPIO pad.


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

Function Documentation#

sl_si91x_pwm_deinit#

void sl_si91x_pwm_deinit (void )

This API is used to de-initialize the PWM peripheral.

Parameters
N/A

This will de-initialize the PWM peripheral and also it disables PWM module clock.

Returns

  • none


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

sl_si91x_pwm_get_version#

sl_pwm_version_t sl_si91x_pwm_get_version (void )

This API is used to get the API version of PWM.

Parameters
N/A

version which includes Release, SQA and DEV version numbers of PWM Returns


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

sl_si91x_pwm_set_configuration#

sl_status_t sl_si91x_pwm_set_configuration (sl_pwm_config_t * pwm_config)

This API sets the PWM configuration parameters.

Parameters
[in]pwm_config

pointer to configuration parameters of type sl_pwm_config_t

It configures the output polarity, set time period, output mode, set duty cycle set base timer mode and base timer selection for each channel.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_set_output_polarity#

sl_status_t sl_si91x_pwm_set_output_polarity (boolean_t polarity_low, boolean_t polarity_high)

This API is used to set output polarity for Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]polarity_low

Output polarity for low side (L3, L2, L1, L0)

[in]polarity_high

Output polarity for high side (H3, H2, H1, H0)

Setting polarity positive sets the digital pulse ON for the duty cycle and off for remainder of the period. Setting polarity negative is vice-versa of positive polarity set.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_start#

sl_status_t sl_si91x_pwm_start (sl_pwm_channel_t channel)

This API is used to start the Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Operation for required channel is based on duty cycle set, polarity and all other configurations done for respective channels.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_stop#

sl_status_t sl_si91x_pwm_stop (sl_pwm_channel_t channel)

This API is used to stop the Motor Control Pulse Width Modulation (MCPWM) operation for the required channel.

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_base_timer#

sl_status_t sl_si91x_pwm_control_base_timer (sl_pwm_timer_t base_timer)

This API is used to select number of base timers as four base timers for four channels or one base timer for all channels of Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]base_timer

PWM base timer of type sl_pwm_timer_t

One base timer is used when single timer to be selected for all channels. Instead of only one base timer, there is also one base timer for each channel selection, where separate base timers are used for separate channels.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_set_time_period#

sl_status_t sl_si91x_pwm_set_time_period (sl_pwm_channel_t channel, uint32_t period, uint32_t init_val)

This API is used to set time period and counter initial value for the required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t.

[in]period

Time period value in the range of 0 - 65535.

[in]init_val

Update the base time counter initial value, in the range of 0 - 65535.

It updates the base timer period and base timer counter initial values for required channel.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_trigger_special_event#

sl_status_t sl_si91x_pwm_trigger_special_event (sl_pwm_svt_t direction, sl_si91x_pwm_svt_config_t * pwm_config)

This API is used to configure special event trigger generation for required Motor Control Pulse Width Modulation (MCPWM) channel which allows the A/D converter to be synchronized to the PWM time base.

Parameters
[in]direction

Special event trigger for time base direction of type sl_pwm_svt_t

[in]pwm_config

Pointer to the structure of type sl_si91x_pwm_svt_config_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_configure_dead_time#

sl_status_t sl_si91x_pwm_configure_dead_time (sl_si91x_pwm_dt_config_t * dead_time, sl_pwm_channel_t channel)

This API is used to configure Dead time insertion parameters for Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]dead_time

Pointer to the structure of type sl_si91x_pwm_dt_config_t

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Dead time is a small amount of time inserted between the switching edges of PWM signals.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_reset_channel#

sl_status_t sl_si91x_pwm_reset_channel (sl_pwm_channel_t channel)

This API is used to reset the required channel of Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_reset_counter#

sl_status_t sl_si91x_pwm_reset_counter (sl_pwm_channel_t channel)

This API is used to reset the counter from the required channel of Motor Control Pulse Width Modulation (MCPWM)

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_period#

sl_status_t sl_si91x_pwm_control_period (sl_pwm_post_t post_scale, sl_pwm_pre_t pre_scale, sl_pwm_channel_t channel)

This API is used to set base time period control for the required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[in]post_scale

Time base output post scale bits of type sl_pwm_post_t

[in]pre_scale

Base timer input clock pre scale select value of type sl_pwm_pre_t

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

This sets the base timer output post scalar bits and base timer input clock prescalar value.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_fault#

sl_status_t sl_si91x_pwm_control_fault (sl_pwm_fault_t fault, sl_pwm_output_t pwm_output, sl_pwm_override_value_t value)

This API is used to control fault A/B pin output value to be overridden when fault condition occurs.

Parameters
[in]fault

Enum of type sl_pwm_fault_t

[in]pwm_output

Enum of type sl_pwm_output_t

[in]value

Fault input A/B PWM output override value of type sl_pwm_override_value_t

When it is asserted, these pins can optionally drive each of the PWM I/O pins to a defined state.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_set_base_timer_mode#

sl_status_t sl_si91x_pwm_set_base_timer_mode (sl_pwm_base_timer_mode_t mode, sl_pwm_channel_t channel)

This API is used to set the mode of base timer for required channel.

Parameters
[in]mode

Base timer operating mode of type sl_pwm_base_timer_mode_t

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

There are different modes set like free running mode, single event mode etc.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_set_output_mode#

sl_status_t sl_si91x_pwm_set_output_mode (sl_pwm_mode_t mode, sl_pwm_channel_t channel)

This API is used to set output mode for the Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]mode

PWM Output mode of type sl_pwm_mode_t

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

There are two modes we can configure i.e., independent mode (or) complementary mode.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_register_callback#

sl_status_t sl_si91x_pwm_register_callback (sl_si91x_pwm_callback_t * callback_event, uint16_t flag)

Handles all interrupt flags of Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]callback_event

Structure of type sl_si91x_pwm_callback_t

[in]flag

It is the logical OR of different interrupts generated on multiple channels(in the range of 0 - 65535).

It handles IRQ handler, Timer interrupt and callback event which handles different events.

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is a null pointer


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

sl_si91x_pwm_unregister_callback#

sl_status_t sl_si91x_pwm_unregister_callback (uint16_t flag)

Unregisters the PWM event.

Parameters
[in]flag

It is the logical OR of different interrupts generated on multiple channels(in the range of 0 - 65535).

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is a null pointer


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

sl_si91x_pwm_read_counter#

sl_status_t sl_si91x_pwm_read_counter (uint16_t * counter_value, sl_pwm_channel_t channel)

This API is used to read the counter current value for required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[out]counter_value

Counter value

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_get_counter_direction#

sl_status_t sl_si91x_pwm_get_counter_direction (uint8_t * counter_direction, sl_pwm_channel_t channel)

This API is used to get time period counter direction status of required Motor Control Pulse Width Modulation (MCPWM) channel whether counter up / down.

Parameters
[out]counter_direction

Pointer to the counter direction (up/down) of type uint8_t

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_dead_time#

sl_status_t sl_si91x_pwm_control_dead_time (sl_pwm_dead_time_t dead_time, uint32_t flag)

Controls dead time insertion at rise edge (or) fall edge of any four channels.

Parameters
[in]dead_time

Enum of type sl_pwm_dead_time_t

[in]flag

ORing of the following values: (In the range of 0 - 65535).

  • DT_EN_CH0

  • DT_EN_CH1

  • DT_EN_CH2

  • DT_EN_CH3

Dead time applies only to PWM output pair, which are in complementary mode.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_clear_interrupt#

sl_status_t sl_si91x_pwm_clear_interrupt (uint32_t flag)

This API is used to clear the interrupts of Motor Control Pulse Width Modulation (MCPWM)

Parameters
[in]flag

The logical OR of different interrupts generated on multiple channels(in the range of 0-511).

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is a null pointer


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

sl_si91x_pwm_get_interrupt_status#

sl_status_t sl_si91x_pwm_get_interrupt_status (uint32_t flag, uint16_t * intr_status)

This API is used to get the interrupt status of interrupt flags of Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]flag

Flag value (0 - 65535)

[out]intr_status

Pointer to interrupt status

Events which are raised can be identified by checking the status.

Returns

  • Interrupt status of the required interrupt flag


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

sl_si91x_pwm_configure_duty_cycle#

sl_status_t sl_si91x_pwm_configure_duty_cycle (sl_pwm_duty_cycle_t duty_cycle, uint32_t value, sl_pwm_channel_t channel)

This API is used to control duty cycle control parameters for the required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[in]duty_cycle

Enum of type sl_pwm_duty_cycle_t

[in]value

This can be a logical OR of the following parameters:(Range 0 -127).

  • IMDT_DUTYCYCLE_UPDATE_EN: Enable to update the duty cycle immediately

  • DUTYCYCLE_UPDATE_DISABLE: Duty cycle register updation disable

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

This API controls duty cycle parameters for the required Motor Control Pulse Width Modulation (MCPWM) channel. It can also enable (or prevent) duty cycle updating.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_output_override#

sl_status_t sl_si91x_pwm_output_override (sl_pwm_override_t override, sl_pwm_output_t pwm_output)

This API is used to control the output override operation of Motor Control Pulse Width Modulation (MCPWM).

Parameters
[in]override

Enum of type sl_pwm_override_t

[in]pwm_output

PWM output override of type sl_pwm_output_t

This API controls MCPWM's output override operation. It enables you to enable or disable PWM output override.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_override#

sl_status_t sl_si91x_pwm_control_override (sl_pwm_override_t override, sl_pwm_output_override_t value)

This API is used to control the override control parameter and output is in sync with PWM time period depending on operating mode.

Parameters
[in]override

Enum of type sl_pwm_override_t

[in]value

Output override to be in sync with PWM time period sl_pwm_output_override_t

This API is used for controlling the override control parameters and also the output is synchronized with the PWM time period, depending on the operating mode.

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_override_value#

sl_status_t sl_si91x_pwm_control_override_value (sl_pwm_override_t override, sl_pwm_output_t pwm_output, sl_pwm_override_value_t value)

This API is used to control override value for the required output of Motor Control Pulse Width Modulation (MCPWM)

Parameters
[in]override

Enum of type sl_pwm_override_t

[in]pwm_output

PWM output override of type sl_pwm_output_t

[in]value

Override value of type sl_pwm_override_value_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_output_fault#

sl_status_t sl_si91x_pwm_control_output_fault (sl_pwm_output_fault_t output_fault, uint32_t value)

This API is used to control output fault in pwm module.

Parameters
[in]output_fault

Enum of type sl_pwm_output_fault_t

[in]value

This can be a logical OR of the below parameters: (in the range of 0 - 65535)

  • FLT_A_MODE: if bit one then cycle by cycle by mode and zero then latched mode

  • FLT_B_MODE: if bit one then cycle by cycle by mode and zero then latched mode

  • OP_POLARITY_H: Output polarity for high (H3, H2, H1, H0) side signals. If bit 0 then in active low mode and 1 then active high mode.

  • OP_POLARITY_L: Output polarity for low (L3, L2, L1, L0) side signals. If bit 0 then in active low mode and 1 then active high mode.

  • FLT_A_ENABLE: Enable fault A

  • FLT_B_ENABLE: Enable fault B

  • COMPLEMENT_MODE: PWM I/O pair mode If the bit is 1 then PWM I/O pin pair is in the complementary output mode If the bit is 0 then PWM I/O pin pair is in the independent output mode

This API is used to control output fault in pwm override control parameters for the required PWM output.

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_control_special_event_trigger#

sl_status_t sl_si91x_pwm_control_special_event_trigger (sl_pwm_event_t event)

This API is used to control the special event trigger.

Parameters
[in]event

Enum of type sl_pwm_event_t

This API controls the generation of a special event trigger for the required channel of the Motor Control Pulse Width Modulation (MCPWM).

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_select_dead_time#

sl_status_t sl_si91x_pwm_select_dead_time (sl_pwm_dead_time_t dead_time, uint32_t value)

This API is used to control the dead time.

Parameters
[in]dead_time

Enum of type sl_pwm_dead_time_t

[in]value

This can be a logical OR of the below parameters: (in the range of 0 - 4095).

  • DEADTIME_SELECT_ACTIVE: Deadtime select bits for PWM going active Possible values are as below if bit zero then use counter A, if one then use counter B

  • DEADTIME_SELECT_INACTIVE: Deadtime select bits for PWM going inactive Possible values are as below if bit zero then use counter A, if one then use counter B

This API is used to control dead time control parameters for the required channel.

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_set_duty_cycle#

sl_status_t sl_si91x_pwm_set_duty_cycle (uint32_t duty_cycle, sl_pwm_channel_t channel)

This API is used to select duty cycle for the required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[in]duty_cycle

Duty cycle value (0 - 65535).

[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_get_duty_cycle#

sl_status_t sl_si91x_pwm_get_duty_cycle (sl_pwm_channel_t channel, uint32_t * duty_cycle)

This API is used to get duty cycle for the required Motor Control Pulse Width Modulation (MCPWM) channel.

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

[out]duty_cycle

Pointer to the duty cycle value

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_enable_external_trigger#

sl_status_t sl_si91x_pwm_enable_external_trigger (sl_pwm_trigger_t enable)

This API is used to enables an external trigger.

Parameters
[in]enable

Controlling external trigger of type sl_pwm_trigger_t

This API is used to enables the use of an external trigger for base time counter increment or decrement of Motor Control Pulse Width Modulation (MCPWM).

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_get_time_period#

sl_status_t sl_si91x_pwm_get_time_period (sl_pwm_channel_t channel, uint16_t * time_period)

Get time period for the required channel.

Parameters
[in]channel

Channel number (1 to 4) of type sl_pwm_channel_t

[out]time_period

Pointer to read time period

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_init#

sl_status_t sl_si91x_pwm_init (sl_pwm_init_t * pwm_init)

This API is used to initialize PWM pins and clock.

Parameters
[in]pwm_init

Pointer to the structure of type sl_pwm_init_t

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_fault_init#

sl_status_t sl_si91x_pwm_fault_init (sl_pwm_fault_init_t * pwm_fault)

This API is used to initialize PWM event pins.

Parameters
[in]pwm_fault

Pointer to the structure of type sl_pwm_fault_init_t

Returns

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

    • SL_STATUS_OK - Success

    • SL_STATUS_NULL_POINTER - The parameter is null pointer


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

sl_si91x_pwm_reset_channel_disable#

sl_status_t sl_si91x_pwm_reset_channel_disable (sl_pwm_channel_t channel)

This API is used to disable the reset for the required channel of MCPWM.

Parameters
[in]channel

Channel number (0 to 3) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success


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

sl_si91x_pwm_reset_counter_disable#

sl_status_t sl_si91x_pwm_reset_counter_disable (sl_pwm_channel_t channel)

This API is used to disable the counter reset for the required channel of MCPWM.

Parameters
[in]channel

Channel number (0 to 3) of type sl_pwm_channel_t

Returns

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

    • SL_STATUS_INVALID_PARAMETER - The parameter is an invalid argument

    • SL_STATUS_OK - Success


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