HPM SDK
HPMicro Software Development Kit
hpm_pwm_drv.h File Reference
#include "hpm_common.h"
#include "hpm_pwm_regs.h"
#include "hpm_soc_feature.h"

Go to the source code of this file.

Data Structures

struct  pwm_cmp_config
 pwm compare config More...
 
struct  pwm_output_channel
 pwm output channel config More...
 
struct  pwm_fault_source_config
 pwm fault source config More...
 
struct  pwm_config
 pwm config data More...
 
struct  pwm_pair_config
 pair pwm config More...
 

Macros

#define PWM_UNLOCK_KEY   (0xB0382607UL)
 
#define PWM_IRQ_FAULT   PWM_IRQEN_FAULTIRQE_MASK
 
#define PWM_IRQ_EX_RELOAD   PWM_IRQEN_XRLDIRQE_MASK
 
#define PWM_IRQ_HALF_RELOAD   PWM_IRQEN_HALFRLDIRQE_MASK
 
#define PWM_IRQ_RELOAD   PWM_IRQEN_RLDIRQE_MASK
 
#define PWM_IRQ_CMP(x)   PWM_IRQEN_CMPIRQEX_SET((1 << x))
 
#define PWM_FORCE_OUTPUT(pwm_index, force_output)    (force_output << (pwm_index << 1))
 
#define PWM_DUTY_CYCLE_FP_MAX   ((1U << 24) - 1)
 

Typedefs

typedef enum pwm_counter_type pwm_counter_type_t
 pwm trigger mode More...
 
typedef enum pwm_cmp_mode pwm_cmp_mode_t
 pwm cmp mode More...
 
typedef enum pwm_register_update pwm_shadow_register_update_trigger_t
 update time of the shadow register More...
 
typedef enum pwm_fault_mode pwm_fault_mode_t
 configure the state of channel 0-7 outputs when the forced output is in effect More...
 
typedef enum pwm_fault_recovery_trigger pwm_fault_recovery_trigger_t
 select when to recover PWM output after fault More...
 
typedef enum pwm_fault_source pwm_fault_source_t
 fault input signal More...
 
typedef enum pwm_force_source pwm_force_source_t
 Select sources for force output. More...
 
typedef enum pwm_force_cmd_timing pwm_force_cmd_timing_t
 select when the FRCMD shadow register will be loaded to its work register More...
 
typedef enum pwm_output_type pwm_output_type_t
 pwm output type More...
 
typedef struct pwm_cmp_config pwm_cmp_config_t
 pwm compare config More...
 
typedef struct pwm_output_channel pwm_output_channel_t
 pwm output channel config More...
 
typedef struct pwm_fault_source_config pwm_fault_source_config_t
 pwm fault source config More...
 
typedef struct pwm_config pwm_config_t
 pwm config data More...
 
typedef struct pwm_pair_config pwm_pair_config_t
 pair pwm config More...
 

Enumerations

enum  pwm_counter_type { pwm_counter_type_capture_rising_edge , pwm_counter_type_capture_falling_edge }
 pwm trigger mode More...
 
enum  pwm_cmp_mode { pwm_cmp_mode_output_compare = 0 , pwm_cmp_mode_input_capture = 1 }
 pwm cmp mode More...
 
enum  pwm_register_update { pwm_shadow_register_update_on_shlk = 0 , pwm_shadow_register_update_on_modify = 1 , pwm_shadow_register_update_on_hw_event = 2 , pwm_shadow_register_update_on_sh_synci = 3 }
 update time of the shadow register More...
 
enum  pwm_fault_mode { pwm_fault_mode_force_output_0 = 0 , pwm_fault_mode_force_output_1 = 1 , pwm_fault_mode_force_output_highz = 2 }
 configure the state of channel 0-7 outputs when the forced output is in effect More...
 
enum  pwm_fault_recovery_trigger { pwm_fault_recovery_immediately = 0 , pwm_fault_recovery_on_reload = 1 , pwm_fault_recovery_on_hw_event = 2 , pwm_fault_recovery_on_fault_clear = 3 }
 select when to recover PWM output after fault More...
 
enum  pwm_fault_source {
  pwm_fault_source_internal_0 = PWM_GCR_FAULTI0EN_MASK , pwm_fault_source_internal_1 = PWM_GCR_FAULTI1EN_MASK , pwm_fault_source_internal_2 = PWM_GCR_FAULTI2EN_MASK , pwm_fault_source_internal_3 = PWM_GCR_FAULTI3EN_MASK ,
  pwm_fault_source_external_0 = PWM_GCR_FAULTE0EN_MASK , pwm_fault_source_external_1 = PWM_GCR_FAULTE1EN_MASK
}
 fault input signal More...
 
enum  pwm_force_source { pwm_force_source_force_input = 0 , pwm_force_source_software = 1 }
 Select sources for force output. More...
 
enum  pwm_force_cmd_timing { pwm_force_immediately = 0 , pwm_force_at_reload = 1 , pwm_force_at_synci = 2 , pwm_force_none = 3 }
 select when the FRCMD shadow register will be loaded to its work register More...
 
enum  pwm_output_type { pwm_output_0 = 0 , pwm_output_1 = 1 , pwm_output_high_z = 2 , pwm_output_no_force = 3 }
 pwm output type More...
 

Functions

static void pwm_deinit (PWM_Type *pwm_x)
 pwm deinitialize function More...
 
static void pwm_issue_shadow_register_lock_event (PWM_Type *pwm_x)
 issue all shawdow register More...
 
static void pwm_shadow_register_lock (PWM_Type *pwm_x)
 lock all shawdow register More...
 
static void pwm_shadow_register_unlock (PWM_Type *pwm_x)
 unlock all shadow register More...
 
static void pwm_set_start_count (PWM_Type *pwm_x, uint8_t ex_start, uint32_t start)
 set counter start value and extended start value More...
 
static void pwm_set_reload (PWM_Type *pwm_x, uint8_t ex_reload, uint32_t reload)
 set the reload value More...
 
static void pwm_clear_status (PWM_Type *pwm_x, uint32_t mask)
 clear pwm status register More...
 
static uint32_t pwm_get_status (PWM_Type *pwm_x)
 get pwm status register More...
 
static void pwm_disable_irq (PWM_Type *pwm_x, uint32_t mask)
 disable pwm irq More...
 
static void pwm_enable_irq (PWM_Type *pwm_x, uint32_t mask)
 enable pwm irq More...
 
static void pwm_disable_dma_request (PWM_Type *pwm_x, uint32_t mask)
 disable pwm dma request More...
 
static void pwm_enable_dma_request (PWM_Type *pwm_x, uint32_t mask)
 enable pwm dma request More...
 
static void pwm_set_force_cmd_shadow_register_hwevent (PWM_Type *pwm_x, uint8_t target_cmp_index)
 set target cmp as hardware event to trigger force cmd output More...
 
static void pwm_set_load_counter_shadow_register_trigger (PWM_Type *pwm_x, pwm_shadow_register_update_trigger_t trigger, uint8_t target_cmp_index)
 set shadow register control register More...
 
static void pwm_load_cmp_shadow_on_capture (PWM_Type *pwm_x, uint8_t index, bool is_falling_edge)
 Configure input capture cmp to trigger shadow register updates. More...
 
static void pwm_cmp_disable_half_clock (PWM_Type *pwm_x, uint8_t index)
 disable pwn cmp half clock More...
 
static void pwm_cmp_enable_half_clock (PWM_Type *pwm_x, uint8_t index)
 enable pwm cmp half clock More...
 
static void pwm_cmp_update_jitter_value (PWM_Type *pwm_x, uint8_t index, uint8_t jitter)
 update pwm cmp jitter counter compare value More...
 
static void pwm_cmp_update_cmp_value (PWM_Type *pwm_x, uint8_t index, uint32_t cmp, uint16_t ex_cmp)
 update pwm cmp value More...
 
static void pwm_cmp_force_value (PWM_Type *pwm_x, uint8_t index, uint32_t cmp)
 Forced update of pwm cmp register value, cmp content guaranteed accurate by user. More...
 
static void pwm_config_cmp (PWM_Type *pwm_x, uint8_t index, pwm_cmp_config_t *config)
 config pwm cmp More...
 
static void pwm_config_output_channel (PWM_Type *pwm_x, uint8_t index, pwm_output_channel_t *config)
 config pwm output channel More...
 
static void pwm_config_fault_source (PWM_Type *pwm_x, pwm_fault_source_config_t *config)
 config pwm fault source More...
 
static void pwm_clear_fault (PWM_Type *pwm_x)
 clear pwm fault status More...
 
static void pwm_stop_counter (PWM_Type *pwm_x)
 stop the pwm timer counter More...
 
static void pwm_start_counter (PWM_Type *pwm_x)
 start pwm timer counter More...
 
static void pwm_enable_sw_force (PWM_Type *pwm_x)
 enable software force More...
 
static void pwm_disable_sw_force (PWM_Type *pwm_x)
 disable software force , force will take effect More...
 
static void pwm_enable_reload_at_synci (PWM_Type *pwm_x)
 enable pwm reload value by synci More...
 
static void pwm_disable_output (PWM_Type *pwm_x, uint8_t index)
 disable pwm output More...
 
static void pwm_enable_output (PWM_Type *pwm_x, uint8_t index)
 enable pwm output More...
 
static void pwm_set_force_output (PWM_Type *pwm_x, uint32_t output_mask)
 config pwm force output level per output channel More...
 
static void pwm_config_force_polarity (PWM_Type *pwm_x, bool polarity)
 config pwm force polarity More...
 
static void pwm_config_force_cmd_timing (PWM_Type *pwm_x, pwm_force_cmd_timing_t timing)
 config the force effective time More...
 
static void pwm_enable_pwm_sw_force_output (PWM_Type *pwm_x, uint8_t index)
 enable pwm sw force output More...
 
static void pwm_disable_pwm_sw_force_output (PWM_Type *pwm_x, uint8_t index)
 disable pwm sw force output More...
 
static void pwm_config_pwm (PWM_Type *pwm_x, uint8_t index, pwm_config_t *config, bool enable_pair_mode)
 config PWM channel configure registe More...
 
static uint32_t pwm_get_reload_val (PWM_Type *pwm_x)
 getting the counter reload value for a pwm timer More...
 
static uint32_t pwm_get_ex_reload_val (PWM_Type *pwm_x)
 getting the extended counter reload value for a pwm timer More...
 
static uint32_t pwm_get_counter_val (PWM_Type *pwm_x)
 getting the value of the pwm counter More...
 
static uint32_t pwm_get_ex_counter_val (PWM_Type *pwm_x)
 getting the value of the pwm extended counter More...
 
hpm_stat_t pwm_load_cmp_shadow_on_match (PWM_Type *pwm_x, uint8_t index, pwm_cmp_config_t *config)
 pwm load cmp shadow on match More...
 
void pwm_get_captured_count (PWM_Type *pwm_x, uint32_t *buf, pwm_counter_type_t counter, uint8_t start_index, uint8_t num)
 pwm get captured count More...
 
void pwm_get_default_cmp_config (PWM_Type *pwm_x, pwm_cmp_config_t *config)
 get default cmp config More...
 
void pwm_get_default_output_channel_config (PWM_Type *pwm_x, pwm_output_channel_t *config)
 get default output channel config More...
 
void pwm_get_default_pwm_config (PWM_Type *pwm_x, pwm_config_t *config)
 get default pwm config More...
 
void pwm_get_default_pwm_pair_config (PWM_Type *pwm_x, pwm_pair_config_t *config)
 get default pwm pair config More...
 
hpm_stat_t pwm_setup_waveform (PWM_Type *pwm_x, uint8_t pwm_index, pwm_config_t *pwm_config, uint8_t cmp_start_index, pwm_cmp_config_t *cmp, uint8_t cmp_num)
 setup waveform More...
 
hpm_stat_t pwm_setup_waveform_in_pair (PWM_Type *pwm_x, uint8_t pwm_index, pwm_pair_config_t *pwm_pair_config, uint8_t cmp_start_index, pwm_cmp_config_t *cmp, uint8_t cmp_num)
 setup pwm waveform in pair More...
 
hpm_stat_t pwm_update_raw_cmp_edge_aligned (PWM_Type *pwm_x, uint8_t cmp_index, uint32_t target_cmp)
 update raw compare value for edge aligned waveform More...
 
hpm_stat_t pwm_update_raw_cmp_central_aligned (PWM_Type *pwm_x, uint8_t cmp1_index, uint8_t cmp2_index, uint32_t target_cmp1, uint32_t target_cmp2)
 update raw compare value for central aligned waveform More...