HPM SDK
HPMicro Software Development Kit
hpm_mtgv2_drv.h File Reference
#include "hpm_common.h"
#include "hpm_mtgv2_regs.h"

Go to the source code of this file.

Data Structures

struct  mtg_result
 define the struct of mtg lock values More...
 
struct  mtg_event_param
 define the struct of the event setup parameter More...
 
struct  mtg_tra_limit_param
 
struct  mtg_hardware_force_one_way_mode
 define the struct of the hardware force one way mode More...
 
struct  mtg_filter_param
 
struct  mtg_time_init_param
 define the struct of the trajectory predictor time initialization More...
 
struct  mtg_timeout_param
 define the struct of the trajectory predictor timeout More...
 
struct  mtg_tra_shift
 define the struct of the trajectory shift struct More...
 
struct  mtg_tra_cmd_cfg
 define the struct of the trajectory predictor command More...
 

Typedefs

typedef enum mtg_irq_enable mtg_irq_enable_t
 
typedef struct mtg_result mtg_lock_value_t
 define the struct of mtg lock values More...
 
typedef enum mtg_evnet_object_postion mtg_evnet_object_postion_t
 define the enum of the postion of the observed object More...
 
typedef enum mtg_event_object mtg_event_object_t
 define the enum of the observed object More...
 
typedef enum mtg_event_mode mtg_event_mode_t
 define the enum of the event detection mode More...
 
typedef enum mtg_event_dir mtg_event_dir_t
 define the enum of the event detection direction More...
 
typedef enum mtg_event_dir_mode mtg_event_dir_mode_t
 define the enum of the event detection direction calculation mode More...
 
typedef enum mtg_event_over_mode_cmp mtg_event_over_mode_cmp_t
 define the enum of the event detection over protect mode More...
 
typedef enum mtg_event_trig_num mtg_event_trig_num_t
 define the enum of the event trigger number More...
 
typedef struct mtg_event_param mtg_event_param_t
 define the struct of the event setup parameter More...
 
typedef struct mtg_tra_limit_param mtg_tra_limit_param_t
 
typedef enum mtg_software_force_one_way_mode mtg_software_force_one_way_mode_t
 define the enum of the software force one way mode More...
 
typedef enum vel_one_way_mode vel_one_way_mode_t
 define the enum of the hardware force one way mode More...
 
typedef struct mtg_hardware_force_one_way_mode mtg_hardware_force_one_way_mode_t
 define the struct of the hardware force one way mode More...
 
typedef enum mtg_filter_ff_mode mtg_filter_ff_mode_t
 define the enum of the filter ff mode More...
 
typedef enum mtg_filter_first_load_mode mtg_filter_first_load_mode_t
 define the enum of the filter first load mode More...
 
typedef enum mtg_filter_err_bypass_mode mtg_filter_err_bypass_mode_t
 define the enum of the filter first load mode More...
 
typedef struct mtg_filter_param mtg_filter_param_t
 
typedef enum mtg_time_input_source mtg_time_input_source_t
 define the enum of the trajectory predictor time input source More...
 
typedef struct mtg_time_init_param mtg_time_init_param_t
 define the struct of the trajectory predictor time initialization More...
 
typedef struct mtg_timeout_param mtg_timeout_param_t
 define the struct of the trajectory predictor timeout More...
 
typedef enum mtg_link_cfg mtg_link_cfg_t
 define the enum of the trajectory predictor link event link the trigger source and the cmd object, it describes the trigger source More...
 
typedef struct mtg_tra_shift mtg_tra_shift_t
 define the struct of the trajectory shift struct More...
 
typedef struct mtg_tra_cmd_cfg mtg_tra_cmd_cfg_t
 define the struct of the trajectory predictor command More...
 

Enumerations

enum  mtg_irq_enable {
  irq_filter_mul1_overflow = 1 << 0 , irq_filter_mul0_overflow = 1 << 1 , irq_event3_object_sudden_change = 1 << 2 , irq_event3 = 1 << 3 ,
  irq_event2_object_sudden_change = 1 << 4 , irq_event2 = 1 << 5 , irq_event1_object_sudden_change = 1 << 6 , irq_event1 = 1 << 7 ,
  irq_event0_object_sudden_change = 1 << 8 , irq_event0 = 1 << 9 , irq_tra1_lock = 1 << 10 , irq_tra1_vel_shift_issue = 1 << 11 ,
  irq_tra1_acc_shift_issue = 1 << 12 , irq_tra1_cmd_conflict = 1 << 13 , irq_tra1_cmd3 = 1 << 14 , irq_tra1_cmd2 = 1 << 15 ,
  irq_tra1_cmd1 = 1 << 16 , irq_tra1_cmd0 = 1 << 17 , irq_tra0_lock = 1 << 18 , irq_tra0_vel_shift_issue = 1 << 19 ,
  irq_tra0_acc_shift_issue = 1 << 20 , irq_tra0_cmd_conflict = 1 << 21 , irq_tra0_cmd3 = 1 << 22 , irq_tra0_cmd2 = 1 << 23 ,
  irq_tra0_cmd1 = 1 << 24 , irq_tra0_cmd0 = 1 << 25 , irq_f_i_irq = 1 << 26 , irq_i_f_irq0 = 1 << 27
}
 
enum  mtg_evnet_object_postion {
  event_source_before_filter = 1 << 0 , event_source_filter_output = 1 << 1 , event_source_tra0_output = 1 << 2 , event_source_tra1_output = 1 << 3 ,
  event_source_before_filter = 1 << 0 , event_source_filter_output = 1 << 1 , event_source_tra0_output = 1 << 2 , event_source_tra1_output = 1 << 3
}
 define the enum of the postion of the observed object More...
 
enum  mtg_event_object {
  event_object_rev_pos = 1 , event_object_vel = 2 , event_object_acc = 4 , event_object_pos = 8 ,
  event_object_rev_pos = 1 , event_object_vel = 2 , event_object_acc = 4 , event_object_pos = 8
}
 define the enum of the observed object More...
 
enum  mtg_event_mode {
  event_mode_across = 1 , event_mode_hold = 2 , event_mode_over_protect = 4 , event_mode_time_match = 8 ,
  event_mode_across = 1 , event_mode_hold = 2 , event_mode_over_protect = 4 , event_mode_time_match = 8
}
 define the enum of the event detection mode More...
 
enum  mtg_event_dir {
  event_dir_negative = 0 , event_dir_positive = 1 , event_dir_both = 2 , event_dir_negative = 0 ,
  event_dir_positive = 1 , event_dir_both = 2
}
 define the enum of the event detection direction More...
 
enum  mtg_event_dir_mode { event_dir_mode_dy = 0 , event_dir_mode_y1_y0 = 1 , event_dir_mode_dy = 0 , event_dir_mode_y1_y0 = 1 }
 define the enum of the event detection direction calculation mode More...
 
enum  mtg_event_over_mode_cmp { event_over_cmp_mode_smaller = 0 , event_over_cmp_mode_bigger = 1 , event_over_cmp_mode_smaller = 0 , event_over_cmp_mode_bigger = 1 }
 define the enum of the event detection over protect mode More...
 
enum  mtg_event_trig_num { event_trig_once = 0 , event_trig_repeat = 1 , event_trig_once = 0 , event_trig_repeat = 1 }
 define the enum of the event trigger number More...
 
enum  mtg_software_force_one_way_mode { sw_force_negative = 0 , sw_force_positive = 1 , sw_force_negative = 0 , sw_force_positive = 1 }
 define the enum of the software force one way mode More...
 
enum  vel_one_way_mode { bigger_or_eq_zero = 0 , smaller_or_eq_zero = 1 , bigger_or_eq_zero = 0 , smaller_or_eq_zero = 1 }
 define the enum of the hardware force one way mode More...
 
enum  mtg_filter_ff_mode { mtg_filter_ff_mode_from_register = 0 , mtg_filter_ff_mode_from_input = 1 , mtg_filter_ff_mode_from_register = 0 , mtg_filter_ff_mode_from_input = 1 }
 define the enum of the filter ff mode More...
 
enum  mtg_filter_first_load_mode { mtg_filter_first_load_mode_without_acc = 0 , mtg_filter_first_load_mode_include_acc = 1 }
 define the enum of the filter first load mode More...
 
enum  mtg_filter_err_bypass_mode { mtg_filter_err_bypass_mode_hw = 0 , mtg_filter_err_bypass_mode_sw = 1 }
 define the enum of the filter first load mode More...
 
enum  mtg_time_input_source { mtg_time_input_from_filter = 1 , mtg_time_input_from_input = 2 , mtg_time_input_from_filter = 1 , mtg_time_input_from_input = 2 }
 define the enum of the trajectory predictor time input source More...
 
enum  mtg_link_cfg {
  link_event0 = 0 , link_event1 = 1 , link_event2 = 2 , link_event3 = 3 ,
  link_hw_trigger = 4 , link_sw_trigger = 5 , link_event_timeout = 6 , link_event0 = 0 ,
  link_event1 = 1 , link_event2 = 2 , link_event3 = 3 , link_hw_trigger = 4 ,
  link_sw_trigger = 5 , link_event_timeout = 6
}
 define the enum of the trajectory predictor link event link the trigger source and the cmd object, it describes the trigger source More...
 
enum  mtg_tra_cmd_object_t {
  cmd_object_rev = 1 << 0 , cmd_object_pos = 1 << 1 , cmd_object_vel = 1 << 2 , cmd_object_acc = 1 << 3 ,
  cmd_object_jer = 1 << 4 , cmd_object_rev = 1 << 0 , cmd_object_pos = 1 << 1 , cmd_object_vel = 1 << 2 ,
  cmd_object_acc = 1 << 3 , cmd_object_jer = 1 << 4
}
 define the enum of the trajectory predictor command object More...
 
enum  mtg_link_cmd_mode_t { cmd_mode_new_value = 0 , cmd_mode_old_delta = 1 , cmd_mode_new_value = 0 , cmd_mode_old_delta = 1 }
 define the enum of the trajectory predictor command mode More...
 

Functions

static uint32_t mtg_get_tra_control_status (MTGV2_Type *base, uint8_t tra_index)
 MTG get trajectory predictor control register value. More...
 
static uint32_t mtg_get_tra_cmd_control_status (MTGV2_Type *base, uint8_t tra_index, uint8_t cmd_index)
 MTG get trajectory predictor commond control register value. More...
 
static void mtg_trig_tra_lock (MTGV2_Type *base, uint8_t tra_index)
 MTG trigger trajectory predictor lock current values. More...
 
static void mtg_clear_tra_lock (MTGV2_Type *base, uint8_t tra_index)
 MTG clear trajectory predictor lock status. More...
 
static int32_t mtg_get_tra_rev_lock_value (MTGV2_Type *base, uint8_t tra_index)
 MTG get trajectory predictor revolution lock value. More...
 
static uint32_t mtg_get_tra_pos_lock_value (MTGV2_Type *base, uint8_t tra_index)
 MTG get trajectory predictor postion lock value. More...
 
static int32_t mtg_get_tra_vel_lock_value (MTGV2_Type *base, uint8_t tra_index)
 MTG get trajectory predictor velocity lock value. More...
 
static int32_t mtg_get_tra_acc_lock_value (MTGV2_Type *base, uint8_t tra_index)
 MTG get trajectory predictor acceleration lock value. More...
 
static void mtg_filter_enable_bypass (MTGV2_Type *base)
 MTG enable filter error bypass When difference between input and filter's pos result is bigger than the limit, the filter output will be bypass and input will be output to the filter's port. More...
 
static void mtg_filter_disable_bypass (MTGV2_Type *base)
 MTG disable filter error bypass When difference between input and filter's pos result is bigger than the limit, the filter output will be bypass and input will be output to the filter's port. More...
 
static void mtg_filter_switch_filter_result (MTGV2_Type *base)
 MTG enable hardware switch from bypass status to filter status's limit When the difference between input and filter's pos result is smaller than the limit, the filter will use the filter's result inside of the input. The switch result can be defined by reading the switch status register. More...
 
static void mtg_filter_stop_auto_switch_filter_result (MTGV2_Type *base)
 MTG disable hardware switch from bypass status to filter status's limit When the difference between input and filter's pos result is smaller than the limit, the filter will use the filter's result inside of the input. The switch result can be defined by reading the switch status register. More...
 
static bool mtg_get_err_bypass_status (MTGV2_Type *base)
 MTG setup hardware switch from bypass status to filter status's limit When the difference between input and filter's pos result is smaller than the limit, the filter will use the filter's result inside of the input. More...
 
static void mtg_set_time0_adjust_value (MTGV2_Type *base, uint32_t value)
 MTG set time0 adjust value. More...
 
static void mtg_set_time1_adjust_value (MTGV2_Type *base, uint32_t value)
 MTG set time1 adjust value. More...
 
static void mtg_tra_set_shift (MTGV2_Type *base, uint8_t index, uint8_t jer_shift, uint8_t acc_shift, uint8_t vel_shift)
 MTG set time shift value. More...
 
static void mtg_set_global_reset (MTGV2_Type *base)
 MTG global reset. More...
 
static void mtg_stop_global_reset (MTGV2_Type *base)
 MTG stop global reset. More...
 
void mtg_get_tra_lock_result (MTGV2_Type *base, uint8_t tra_index, mtg_lock_value_t *para)
 MTG predictor get lock result. More...
 
hpm_stat_t mtg_setup_event (MTGV2_Type *base, uint8_t event_index, mtg_event_param_t *param)
 MTG setup event params. More...
 
hpm_stat_t mtg_setup_tra_limit (MTGV2_Type *base, uint8_t tra_index, mtg_tra_limit_param_t *param)
 MTG setup trajectory limit params. More...
 
void mtg_setup_tra_software_pos_one_way_mode (MTGV2_Type *base, uint8_t tra_index, mtg_software_force_one_way_mode_t param)
 MTG setup trajectory software one_way mode. More...
 
void mtg_setup_tra_hardware_pos_one_way_mode (MTGV2_Type *base, uint8_t tra_index, mtg_hardware_force_one_way_mode_t *param)
 MTG setup trajectory hardware one_way mode. More...
 
void mtg_disable_tra_pos_one_way_mode (MTGV2_Type *base, uint8_t tra_index)
 MTG disable trajectory postion one_way mode. More...
 
void mtg_setup_tra_vel_one_way (MTGV2_Type *base, uint8_t tra_index, vel_one_way_mode_t mode, bool enable)
 MTG setup trajectory velocity one_way mode. More...
 
void mtg_filter_get_default_filter_stage_param (mtg_filter_param_t *param)
 MTG setup filter. More...
 
void mtg_setup_time (MTGV2_Type *base, mtg_time_init_param_t *param)
 MTG setup time compensation module. More...
 
void mtg_setup_filter (MTGV2_Type *base, mtg_filter_param_t *param)
 MTG setup filter. More...
 
void mtg_setup_timeout (MTGV2_Type *base, mtg_timeout_param_t *param)
 MTG setup timeout. More...
 
void mtg_setup_link_cfg (MTGV2_Type *base, uint8_t tra_index, mtg_link_cfg_t link_cfg, mtg_tra_cmd_cfg_t *cmd_cfg)
 MTG link trigger source and trajectory command. More...
 
void mtg_soft_event_trigger (MTGV2_Type *base)
 MTG software trigger trajectory command. More...
 
void mtg_get_default_tra_shift (mtg_tra_shift_t *cfg)
 Get default trajectory shift. More...
 
static uint32_t mtg_get_irq_status (MTGV2_Type *ptr)
 Get the event irq status. More...
 
static void mtg_enable_irq (MTGV2_Type *ptr, mtg_irq_enable_t irq)
 Enable irq. More...
 
static void mtg_clear_irq_status (MTGV2_Type *ptr, uint32_t irq)
 Clear the event irq status. More...
 
int32_t mtg_calc_vel_preset (MTGV2_Type *base, clock_name_t clock, uint8_t tra_index, float speed)
 calculate the vel preset More...
 
int32_t mtg_calc_acc_preset (MTGV2_Type *base, clock_name_t clock, uint8_t tra_index, float acc)
 calculate the acc preset More...
 
int32_t mtg_calc_jer_preset (MTGV2_Type *base, clock_name_t clock, uint8_t tra_index, float jer)
 MTG link trigger source and trajectory command. More...