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 , pwm_fault_source_debug = PWM_GCR_DEBUGFAULT_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_fault_recovery_update_cmp_value (PWM_Type *pwm_x, uint8_t index, uint32_t cmp)
 update pwm cmp value in order to recovery pwm fault The configured values need to be staggered to coincide with the moment when the pwm output changes, otherwise the recovery will be abnormal 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...
 
hpm_stat_t pwm_update_duty_edge_aligned (PWM_Type *pwm_x, uint8_t cmp_index, float duty)
 update duty value for edge aligned waveform More...
 
hpm_stat_t pwm_update_duty_central_aligned (PWM_Type *pwm_x, uint8_t cmp1_index, uint8_t cmp2_index, float duty)
 update duty value for central aligned waveform More...