HPM SDK
HPMicro Software Development Kit
hpm_mmc_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_MMC_DRV_H
9 #define HPM_MMC_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_mmc_regs.h"
20 /* trigger source to update position parameter */
21 typedef enum {
30 
31 
32 /* cmd mask to update position parameter */
33 typedef enum {
41 
42 typedef enum {
49 
50 typedef struct {
52  uint32_t discrete_line;
55  uint32_t oosync_theta_thr;
57 
58 typedef struct {
60  bool en_ms_coef;
62  bool pos_16bit_type; /* true for output 16bit position, false for output 32bit position */
63  bool sync_new_pos; /* predictor base new track position data */
66 
67 typedef struct {
68  uint32_t pos_time;
69  uint32_t position;
70  int32_t revolution;
71  double speed;
72  double accel;
73  uint32_t cmd_mask;
74  uint32_t trigger;
76 
77 typedef struct {
78  uint32_t coef_time;
79  double coef_p;
80  double coef_i;
81  double coef_a;
82  uint32_t cmd_mask; /* cmd to select change which parameter */
84 
85 typedef struct {
86  uint32_t err_thr;
87  uint32_t hold_time;
88  double coef_p;
89  double coef_i;
90  double coef_a;
92 
93 typedef struct {
94  uint32_t time;
95  uint32_t position;
96  int32_t revolution;
97  double speed;
98  double accel;
100 
101 typedef struct {
102  double coef_p;
103  double coef_i;
104  double coef_a;
106 
107 /* track event, definition align with interrupt mask and status mask */
108 typedef enum {
113  mmc_track_idle = 1 << 5,
120 
121 typedef enum {
128 
129 typedef enum {
134 
135 typedef struct {
140  uint8_t pred_mode;
144 
145 typedef enum {
151 
152 typedef enum {
157 
158 /* using for mmc_pred_by_period mode */
159 typedef struct {
160  uint32_t offset_time;
161  uint32_t period_time;
162  uint32_t first_time;
164 
165 typedef struct {
166  bool less_than;
167  bool enable;
168  uint32_t position_thr;
169  int32_t revolution_thr;
171 
172 typedef struct {
174  bool less_than;
175  bool enable;
176  int32_t speed_thr;
178 
179 
180 #ifdef __cplusplus
181 extern "C" {
182 #endif
183 
189 static inline void mmc_set_sysclk_freq(MMC_Type *base, uint32_t freq)
190 {
191  uint32_t period;
192  base->SYSCLK_FREQ = freq;
193  /* 1/freq *(2^24)*(2^20) */
194  period = (uint32_t)((double)(1 << 20) * (1 << 24) / freq);
195  base->SYSCLK_PERIOD = period;
196 }
197 
202 static inline void mmc_software_reset(MMC_Type *base)
203 {
204  base->CR |= MMC_CR_SFTRST_MASK;
205  base->CR &= ~MMC_CR_SFTRST_MASK;
206 }
207 
212 static inline void mmc_enable_module(MMC_Type *base)
213 {
214  base->CR |= MMC_CR_MOD_EN_MASK;
215 }
216 
221 static inline void mmc_disable_module(MMC_Type *base)
222 {
223  base->CR &= ~MMC_CR_MOD_EN_MASK;
224 }
225 
231 static inline void mmc_track_set_open_loop_mode(MMC_Type *base, bool open_loop)
232 {
233  if (open_loop) {
235  } else {
236  base->CR &= ~MMC_CR_OPEN_LOOP_MODE_MASK;
237  }
238 }
239 
245 static inline void mmc_track_set_adjop_mode(MMC_Type *base, bool adjop)
246 {
247  if (adjop) {
248  base->CR |= MMC_CR_ADJOP_MASK;
249  } else {
250  base->CR &= ~MMC_CR_ADJOP_MASK;
251  }
252 }
253 
260 static inline void mmc_track_enable_shadow_read(MMC_Type *base)
261 {
262  base->CR |= MMC_CR_SHADOW_RD_REQ_MASK;
263  /* SHADOW_RD_REQ clear indicates that the shadow is complete */
265  }
266 }
267 
273 static inline void mmc_track_enable_interrupt(MMC_Type *base, uint32_t int_mask)
274 {
275  base->INT_EN = int_mask;
276 }
277 
283 static inline void mmc_track_disable_interrupt(MMC_Type *base, uint32_t int_mask)
284 {
285  base->INT_EN &= ~int_mask;
286 }
287 
293 static inline uint32_t mmc_track_get_status(MMC_Type *base)
294 {
295  return base->STA;
296 }
297 
303 static inline void mmc_track_clear_status(MMC_Type *base, uint32_t clr_mask)
304 {
305  base->STA = clr_mask; /* W1C */
306 }
307 
313 static inline void mmc_track_set_oosync_theta_threshold(MMC_Type *base, uint32_t threshold)
314 {
316 }
317 
324 
331 
337 void mmc_track_config_mode(MMC_Type *base, mmc_track_mode_t *config);
338 
345 
352 
359 
366 
373 
378 static inline void mmc_track_disable_position_trig(MMC_Type *base)
379 {
381 }
382 
387 static inline void mmc_track_disable_speed_trig(MMC_Type *base)
388 {
390 }
391 
398 void mmc_track_config_coef_trig(MMC_Type *base, uint8_t index, mmc_coef_trig_config_t *config);
399 
406 void mmc_track_get_result(MMC_Type *base, mmc_pos_out_t *pos_out, mmc_coef_out_t *coef_out);
407 
408 /* predictor */
414 static inline void mmc_enable_pred(MMC_Type *base, uint8_t index)
415 {
416  base->BR[index].BR_CTRL |= MMC_BR_BR_CTRL_BR_EN_MASK;
417 }
418 
424 static inline void mmc_disable_pred(MMC_Type *base, uint8_t index)
425 {
426  base->BR[index].BR_CTRL &= ~MMC_BR_BR_CTRL_BR_EN_MASK;
427 }
428 
435 static inline void mmc_pred_set_open_loop_mode(MMC_Type *base, uint8_t index, bool open_loop)
436 {
437  if (open_loop) {
439  } else {
441  }
442 }
443 
450 static inline void mmc_pred_set_pred_time(MMC_Type *base, uint8_t index, mmc_pred_time_t time)
451 {
452  base->BR[index].BR_CTRL &= ~MMC_BR_BR_CTRL_PRED_MODE_MASK;
453  base->BR[index].BR_CTRL |= MMC_BR_BR_CTRL_PRED_MODE_SET(time);
454 }
455 
462 static inline void mmc_pred_enable_interrupt(MMC_Type *base, uint8_t index, uint32_t int_mask)
463 {
464  base->BR[index].BR_CTRL |= int_mask;
465 }
466 
473 static inline void mmc_pred_disable_interrupt(MMC_Type *base, uint8_t index, uint32_t int_mask)
474 {
475  base->BR[index].BR_CTRL &= ~int_mask;
476 }
477 
484 static inline uint32_t mmc_pred_get_status(MMC_Type *base, uint8_t index)
485 {
486  return base->BR[index].BR_ST;
487 }
488 
495 static inline void mmc_pred_clear_status(MMC_Type *base, uint8_t index, uint32_t clr_mask)
496 {
497  base->BR[index].BR_ST = clr_mask;
498 }
499 
506 
513 void mmc_pred_config_mode(MMC_Type *base, uint8_t index, mmc_pred_mode_t *config);
514 
524 void mmc_pred_config_pos_para(MMC_Type *base, uint8_t index, mmc_pos_or_delta_pos_input_t *para, bool req_reload);
525 
532 {
534  base->CR |= cmd << MMC_CR_INI_BR1_POS_REQ_SHIFT;
535 }
536 
543 void mmc_pred_config_delta_para(MMC_Type *base, uint8_t index, mmc_pos_or_delta_pos_input_t *para);
544 
551 void mmc_pred_config_period_time(MMC_Type *base, uint8_t index, mmc_pred_period_time_t *time);
552 
559 void mmc_pred_config_position_trig(MMC_Type *base, uint8_t index, mmc_pos_trig_t *trig);
560 
567 void mmc_pred_config_speed_trig(MMC_Type *base, uint8_t index, mmc_speed_trig_t *trig);
568 
574 static inline void mmc_pred_disable_position_trig(MMC_Type *base, uint8_t index)
575 {
577 }
578 
584 static inline void mmc_pred_disable_speed_trig(MMC_Type *base, uint8_t index)
585 {
587 }
588 
595 void mmc_pred_get_result(MMC_Type *base, uint8_t index, mmc_pos_out_t *pos_out);
596 
603 
604 
605 #ifdef __cplusplus
606 }
607 #endif
611 #endif /* HPM_MMC_DRV_H */
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:77
uint32_t coef_time
Definition: hpm_mmc_drv.h:78
double coef_a
Definition: hpm_mmc_drv.h:81
double coef_p
Definition: hpm_mmc_drv.h:79
double coef_i
Definition: hpm_mmc_drv.h:80
uint32_t cmd_mask
Definition: hpm_mmc_drv.h:82
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:67
uint32_t cmd_mask
Definition: hpm_mmc_drv.h:73
double accel
Definition: hpm_mmc_drv.h:72
uint32_t trigger
Definition: hpm_mmc_drv.h:74
uint32_t pos_time
Definition: hpm_mmc_drv.h:68
int32_t revolution
Definition: hpm_mmc_drv.h:70
double speed
Definition: hpm_mmc_drv.h:71
uint32_t position
Definition: hpm_mmc_drv.h:69
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