194 period = (uint32_t)((
double)(1 << 20) * (1 << 24) / freq);
285 base->
INT_EN &= ~int_mask;
305 base->
STA = clr_mask;
497 base->
BR[index].
BR_ST = clr_mask;
void mmc_track_get_result(MMC_Type *base, mmc_pos_out_t *pos_out, mmc_coef_out_t *coef_out)
MMC track get result.
Definition: hpm_mmc_drv.c:135
mmc_pos_update_trigger_t
Definition: hpm_mmc_drv.h:21
mmc_pred_int_t
Definition: hpm_mmc_drv.h:129
static void mmc_pred_disable_interrupt(MMC_Type *base, uint8_t index, uint32_t int_mask)
MMC pred disable interrupt.
Definition: hpm_mmc_drv.h:473
static uint32_t mmc_track_get_status(MMC_Type *base)
MMC track get status register value.
Definition: hpm_mmc_drv.h:293
void mmc_track_config_pos_mode(MMC_Type *base, mmc_track_pos_mode_t *mode)
MMC track config position mode.
Definition: hpm_mmc_drv.c:10
void mmc_track_config_coef_para(MMC_Type *base, mmc_coef_input_t *para)
MMC track config coef parameter.
Definition: hpm_mmc_drv.c:106
static void mmc_enable_pred(MMC_Type *base, uint8_t index)
MMC enable predictor.
Definition: hpm_mmc_drv.h:414
static void mmc_disable_module(MMC_Type *base)
MMC module disable.
Definition: hpm_mmc_drv.h:221
static void mmc_track_disable_position_trig(MMC_Type *base)
MMC track disable position trigger.
Definition: hpm_mmc_drv.h:378
mmc_coef_update_cmd_mask_t
Definition: hpm_mmc_drv.h:42
mmc_pred_event_t
Definition: hpm_mmc_drv.h:121
void mmc_track_config_coef_trig(MMC_Type *base, uint8_t index, mmc_coef_trig_config_t *config)
MMC track config multiple coef trigger.
Definition: hpm_mmc_drv.c:122
static void mmc_track_enable_shadow_read(MMC_Type *base)
MMC track request shadow read.
Definition: hpm_mmc_drv.h:260
void mmc_pred_config_mode(MMC_Type *base, uint8_t index, mmc_pred_mode_t *config)
MMC predictor config mode.
Definition: hpm_mmc_drv.c:181
static void mmc_track_set_open_loop_mode(MMC_Type *base, bool open_loop)
MMC track set loop mode.
Definition: hpm_mmc_drv.h:231
static void mmc_track_set_adjop_mode(MMC_Type *base, bool adjop)
MMC track set adjop mode.
Definition: hpm_mmc_drv.h:245
mmc_pred_time_t
Definition: hpm_mmc_drv.h:152
void mmc_pred_get_default_mode_config(MMC_Type *base, mmc_pred_mode_t *config)
MMC predictor get default mode config.
Definition: hpm_mmc_drv.c:167
mmc_pos_update_cmd_mask_t
Definition: hpm_mmc_drv.h:33
void mmc_track_get_default_mode_config(MMC_Type *base, mmc_track_mode_t *config)
MMC track get default mode config.
Definition: hpm_mmc_drv.c:26
static void mmc_track_disable_interrupt(MMC_Type *base, uint32_t int_mask)
MMC track disable interrupt.
Definition: hpm_mmc_drv.h:283
static void mmc_pred_reload_pos_cmd(MMC_Type *base, mmc_pred_reload_pos_cmd_t cmd)
MMC predictor reload position parameter cmd.
Definition: hpm_mmc_drv.h:531
void mmc_track_config_pos_para(MMC_Type *base, mmc_pos_or_delta_pos_input_t *para)
MMC track config position parameter.
Definition: hpm_mmc_drv.c:71
static void mmc_track_enable_interrupt(MMC_Type *base, uint32_t int_mask)
MMC track enable interrupt.
Definition: hpm_mmc_drv.h:273
void mmc_pred_config_pos_para(MMC_Type *base, uint8_t index, mmc_pos_or_delta_pos_input_t *para, bool req_reload)
MMC predictor config position parameter.
Definition: hpm_mmc_drv.c:200
static void mmc_pred_clear_status(MMC_Type *base, uint8_t index, uint32_t clr_mask)
MMC predictor clear status bit in reigster.
Definition: hpm_mmc_drv.h:495
void mmc_pred_config_speed_trig(MMC_Type *base, uint8_t index, mmc_speed_trig_t *trig)
MMC predictor config speed trigger.
Definition: hpm_mmc_drv.c:271
static void mmc_set_sysclk_freq(MMC_Type *base, uint32_t freq)
MMC set frequency.
Definition: hpm_mmc_drv.h:189
static void mmc_pred_disable_speed_trig(MMC_Type *base, uint8_t index)
MMC predictor disable speed trigger.
Definition: hpm_mmc_drv.h:584
static void mmc_pred_set_pred_time(MMC_Type *base, uint8_t index, mmc_pred_time_t time)
MMC predictor set pred time.
Definition: hpm_mmc_drv.h:450
void mmc_pred_config_position_trig(MMC_Type *base, uint8_t index, mmc_pos_trig_t *trig)
MMC predictor config position trigger.
Definition: hpm_mmc_drv.c:262
static void mmc_track_set_oosync_theta_threshold(MMC_Type *base, uint32_t threshold)
MMC track set the threshold of theta for out-of-sync.
Definition: hpm_mmc_drv.h:313
static void mmc_pred_disable_position_trig(MMC_Type *base, uint8_t index)
MMC predictor disable position trigger.
Definition: hpm_mmc_drv.h:574
mmc_pred_reload_pos_cmd_t
Definition: hpm_mmc_drv.h:145
static void mmc_track_clear_status(MMC_Type *base, uint32_t clr_mask)
MMC track clear status flag in status register.
Definition: hpm_mmc_drv.h:303
void mmc_get_default_pos_or_delta_pos_para(MMC_Type *base, mmc_pos_or_delta_pos_input_t *para)
MMC predictor get result.
Definition: hpm_mmc_drv.c:59
void mmc_pred_config_period_time(MMC_Type *base, uint8_t index, mmc_pred_period_time_t *time)
MMC predictor config period time.
Definition: hpm_mmc_drv.c:255
static void mmc_pred_set_open_loop_mode(MMC_Type *base, uint8_t index, bool open_loop)
MMC predictor set loop mode.
Definition: hpm_mmc_drv.h:435
void mmc_track_config_speed_trig(MMC_Type *base, mmc_speed_trig_t *trig)
MMC track config speed trigger.
Definition: hpm_mmc_drv.c:291
void mmc_track_config_position_trig(MMC_Type *base, mmc_pos_trig_t *trig)
MMC track config position trigger.
Definition: hpm_mmc_drv.c:282
void mmc_track_config_mode(MMC_Type *base, mmc_track_mode_t *config)
MMC track config mode.
Definition: hpm_mmc_drv.c:42
static void mmc_software_reset(MMC_Type *base)
MMC software reset.
Definition: hpm_mmc_drv.h:202
static void mmc_enable_module(MMC_Type *base)
MMC module enable.
Definition: hpm_mmc_drv.h:212
void mmc_pred_config_delta_para(MMC_Type *base, uint8_t index, mmc_pos_or_delta_pos_input_t *para)
MMC predictor update delta parameter.
Definition: hpm_mmc_drv.c:221
static uint32_t mmc_pred_get_status(MMC_Type *base, uint8_t index)
MMC predictor get status register value.
Definition: hpm_mmc_drv.h:484
static void mmc_track_disable_speed_trig(MMC_Type *base)
MMC track disable speed trigger.
Definition: hpm_mmc_drv.h:387
mmc_track_event_t
Definition: hpm_mmc_drv.h:108
static void mmc_disable_pred(MMC_Type *base, uint8_t index)
MMC disable predictor.
Definition: hpm_mmc_drv.h:424
void mmc_track_config_delta_para(MMC_Type *base, mmc_pos_or_delta_pos_input_t *para)
MMC track config delta parameter.
Definition: hpm_mmc_drv.c:89
static void mmc_pred_enable_interrupt(MMC_Type *base, uint8_t index, uint32_t int_mask)
MMC pred enable interrupt.
Definition: hpm_mmc_drv.h:462
void mmc_pred_get_result(MMC_Type *base, uint8_t index, mmc_pos_out_t *pos_out)
MMC predictor get result.
Definition: hpm_mmc_drv.c:242
@ mmc_pos_update_by_outtrgr0_rise_edge
Definition: hpm_mmc_drv.h:25
@ mmc_pos_update_by_self_pos_thr
Definition: hpm_mmc_drv.h:27
@ mmc_pos_update_by_intrgr1_rise_edge
Definition: hpm_mmc_drv.h:24
@ mmc_pos_update_by_intrgr0_rise_edge
Definition: hpm_mmc_drv.h:23
@ mmc_pos_update_by_outtrgr1_rise_edge
Definition: hpm_mmc_drv.h:26
@ mmc_pos_update_by_timestamp
Definition: hpm_mmc_drv.h:22
@ mmc_pos_update_by_self_speed_thr
Definition: hpm_mmc_drv.h:28
@ mmc_pred_init_delta_pos_done_int
Definition: hpm_mmc_drv.h:132
@ mmc_pred_pos_trig_valid_int
Definition: hpm_mmc_drv.h:130
@ mmc_pred_speed_trig_valid_int
Definition: hpm_mmc_drv.h:131
@ mmc_coef_not_update
Definition: hpm_mmc_drv.h:43
@ mmc_coef_update_all
Definition: hpm_mmc_drv.h:47
@ mmc_coef_p_update
Definition: hpm_mmc_drv.h:44
@ mmc_coef_a_update
Definition: hpm_mmc_drv.h:46
@ mmc_coef_i_update
Definition: hpm_mmc_drv.h:45
@ mmc_pred_pos_trig_valid
Definition: hpm_mmc_drv.h:124
@ mmc_pred_speed_trig_valid
Definition: hpm_mmc_drv.h:125
@ mmc_pred_init_delta_pos_done
Definition: hpm_mmc_drv.h:123
@ mmc_pred_idle
Definition: hpm_mmc_drv.h:122
@ mmc_pred_open_loop
Definition: hpm_mmc_drv.h:126
@ mmc_pred_by_period
Definition: hpm_mmc_drv.h:153
@ mmc_pred_only_once
Definition: hpm_mmc_drv.h:155
@ mmc_pred_continuously_repeat
Definition: hpm_mmc_drv.h:154
@ mmc_pos_update_position
Definition: hpm_mmc_drv.h:35
@ mmc_pos_update_none
Definition: hpm_mmc_drv.h:34
@ mmc_pos_update_speed
Definition: hpm_mmc_drv.h:37
@ mmc_pos_update_revolution
Definition: hpm_mmc_drv.h:36
@ mmc_pos_update_all
Definition: hpm_mmc_drv.h:39
@ mmc_pos_update_accel
Definition: hpm_mmc_drv.h:38
@ mmc_pred_0_reload_pos_cmd
Definition: hpm_mmc_drv.h:147
@ mmc_pred_both_reload_pos_cmd
Definition: hpm_mmc_drv.h:149
@ mmc_pred_1_reload_pos_cmd
Definition: hpm_mmc_drv.h:148
@ mmc_pred_not_reload_pos_cmd
Definition: hpm_mmc_drv.h:146
@ mmc_pred0_init_pos_done
Definition: hpm_mmc_drv.h:115
@ mmc_track_shadow_read_done
Definition: hpm_mmc_drv.h:109
@ mmc_pred1_init_pos_done
Definition: hpm_mmc_drv.h:114
@ mmc_track_oosync
Definition: hpm_mmc_drv.h:112
@ mmc_track_pos_trig_valid
Definition: hpm_mmc_drv.h:117
@ mmc_track_init_pos_done
Definition: hpm_mmc_drv.h:111
@ mmc_track_init_coefs_done
Definition: hpm_mmc_drv.h:110
@ mmc_track_speed_trig_valid
Definition: hpm_mmc_drv.h:118
@ mmc_track_init_delta_pos_done
Definition: hpm_mmc_drv.h:116
@ mmc_track_idle
Definition: hpm_mmc_drv.h:113
#define MMC_BR_BR_CTRL_PRED_MODE_SET(x)
Definition: hpm_mmc_regs.h:1118
#define MMC_CR_OPEN_LOOP_MODE_MASK
Definition: hpm_mmc_regs.h:222
#define MMC_BR_BR_CTRL_PRED_MODE_MASK
Definition: hpm_mmc_regs.h:1116
#define MMC_BR_BR_ST_OPEN_LOOP_ST_MASK
Definition: hpm_mmc_regs.h:1194
#define MMC_BR_BR_TRG_POS_CFG_EN_MASK
Definition: hpm_mmc_regs.h:1266
#define MMC_CR_INI_BR1_POS_REQ_SHIFT
Definition: hpm_mmc_regs.h:132
#define MMC_BR_BR_TRG_SPEED_CFG_EN_MASK
Definition: hpm_mmc_regs.h:1322
#define MMC_BR_BR_ST_INI_DELTA_POS_DONE_MASK
Definition: hpm_mmc_regs.h:1226
#define MMC_CR_ADJOP_MASK
Definition: hpm_mmc_regs.h:309
#define MMC_BR_BR_CTRL_BR_EN_MASK
Definition: hpm_mmc_regs.h:1149
#define MMC_BR_BR_CTRL_INI_DELTA_POS_DONE_IE_MASK
Definition: hpm_mmc_regs.h:1067
#define MMC_OOSYNC_THETA_THR_VAL_SET(x)
Definition: hpm_mmc_regs.h:564
#define MMC_BR_BR_CTRL_OPEN_LOOP_MODE_MASK
Definition: hpm_mmc_regs.h:1104
#define MMC_CR_INI_BR0_POS_REQ_MASK
Definition: hpm_mmc_regs.h:121
#define MMC_BR_BR_CTRL_POS_TRG_VALID_IE_MASK
Definition: hpm_mmc_regs.h:1008
#define MMC_BR_BR_ST_IDLE_MASK
Definition: hpm_mmc_regs.h:1237
#define MMC_SPEED_TRG_CFG_EN_MASK
Definition: hpm_mmc_regs.h:918
#define MMC_CR_MOD_EN_MASK
Definition: hpm_mmc_regs.h:330
#define MMC_BR_BR_ST_SPEED_TRG_VLD_MASK
Definition: hpm_mmc_regs.h:1204
#define MMC_CR_SHADOW_RD_REQ_MASK
Definition: hpm_mmc_regs.h:298
#define MMC_BR_BR_CTRL_SPEED_TRG_VALID_IE_MASK
Definition: hpm_mmc_regs.h:998
#define MMC_POS_TRG_CFG_EN_MASK
Definition: hpm_mmc_regs.h:862
#define MMC_BR_BR_ST_POS_TRG_VLD_MASK
Definition: hpm_mmc_regs.h:1215
#define MMC_CR_SFTRST_MASK
Definition: hpm_mmc_regs.h:111
Definition: hpm_mmc_regs.h:12
__RW uint32_t POS_TRG_CFG
Definition: hpm_mmc_regs.h:45
__RW uint32_t BR_ST
Definition: hpm_mmc_regs.h:64
__RW uint32_t BR_CTRL
Definition: hpm_mmc_regs.h:60
__RW uint32_t BR_TRG_POS_CFG
Definition: hpm_mmc_regs.h:66
__RW uint32_t SYSCLK_FREQ
Definition: hpm_mmc_regs.h:16
__RW uint32_t OOSYNC_THETA_THR
Definition: hpm_mmc_regs.h:18
__RW uint32_t CR
Definition: hpm_mmc_regs.h:13
struct MMC_Type::@309 BR[2]
__RW uint32_t STA
Definition: hpm_mmc_regs.h:14
__RW uint32_t SYSCLK_PERIOD
Definition: hpm_mmc_regs.h:17
__RW uint32_t SPEED_TRG_CFG
Definition: hpm_mmc_regs.h:48
__RW uint32_t INT_EN
Definition: hpm_mmc_regs.h:15
__RW uint32_t BR_TRG_SPEED_CFG
Definition: hpm_mmc_regs.h:69
Definition: hpm_mmc_drv.h:101
double coef_a
Definition: hpm_mmc_drv.h:104
double coef_i
Definition: hpm_mmc_drv.h:103
double coef_p
Definition: hpm_mmc_drv.h:102
Definition: hpm_mmc_drv.h:85
uint32_t err_thr
Definition: hpm_mmc_drv.h:86
double coef_i
Definition: hpm_mmc_drv.h:89
uint32_t hold_time
Definition: hpm_mmc_drv.h:87
double coef_p
Definition: hpm_mmc_drv.h:88
double coef_a
Definition: hpm_mmc_drv.h:90
Definition: hpm_mmc_drv.h:93
uint32_t time
Definition: hpm_mmc_drv.h:94
double speed
Definition: hpm_mmc_drv.h:97
uint32_t position
Definition: hpm_mmc_drv.h:95
int32_t revolution
Definition: hpm_mmc_drv.h:96
double accel
Definition: hpm_mmc_drv.h:98
Definition: hpm_mmc_drv.h:165
int32_t revolution_thr
Definition: hpm_mmc_drv.h:169
bool less_than
Definition: hpm_mmc_drv.h:166
uint32_t position_thr
Definition: hpm_mmc_drv.h:168
bool enable
Definition: hpm_mmc_drv.h:167
Definition: hpm_mmc_drv.h:135
bool speed_trig_int
Definition: hpm_mmc_drv.h:136
uint8_t pred_mode
Definition: hpm_mmc_drv.h:140
uint8_t not_first_pred_trig_type
Definition: hpm_mmc_drv.h:141
bool position_trig_int
Definition: hpm_mmc_drv.h:137
uint8_t first_pred_trig_type
Definition: hpm_mmc_drv.h:142
bool open_loop_mode
Definition: hpm_mmc_drv.h:139
bool delta_pos_done_trig_int
Definition: hpm_mmc_drv.h:138
Definition: hpm_mmc_drv.h:159
uint32_t period_time
Definition: hpm_mmc_drv.h:161
uint32_t offset_time
Definition: hpm_mmc_drv.h:160
uint32_t first_time
Definition: hpm_mmc_drv.h:162
Definition: hpm_mmc_drv.h:172
int32_t speed_thr
Definition: hpm_mmc_drv.h:176
bool enable
Definition: hpm_mmc_drv.h:175
bool less_than
Definition: hpm_mmc_drv.h:174
bool absolute_compare
Definition: hpm_mmc_drv.h:173
Definition: hpm_mmc_drv.h:58
bool sync_new_pos
Definition: hpm_mmc_drv.h:63
bool pos_16bit_type
Definition: hpm_mmc_drv.h:62
mmc_track_pos_mode_t pos_mode
Definition: hpm_mmc_drv.h:64
bool open_loop_mode
Definition: hpm_mmc_drv.h:61
bool en_ms_coef
Definition: hpm_mmc_drv.h:60
bool force_accel_to_zero
Definition: hpm_mmc_drv.h:59
Definition: hpm_mmc_drv.h:50
bool discrete_pos_mode
Definition: hpm_mmc_drv.h:51
uint32_t oosync_theta_thr
Definition: hpm_mmc_drv.h:55
uint32_t continuous_step_thr
Definition: hpm_mmc_drv.h:53
uint32_t discrete_line
Definition: hpm_mmc_drv.h:52
uint32_t continuous_circ_thr
Definition: hpm_mmc_drv.h:54