HPM SDK
HPMicro Software Development Kit
hpm_qeiv2_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_QEIV2_DRV_H
9 #define HPM_QEIV2_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_soc_feature.h"
13 #include "hpm_qeiv2_regs.h"
14 #include "hpm_qeiv2_soc_drv.h"
21 #define QEIV2_EVENT_WDOG_FLAG_MASK (1U << 31U)
22 #define QEIV2_EVENT_HOME_FLAG_MASK (1U << 30U)
23 #define QEIV2_EVENT_POSITION_COMPARE_FLAG_MASK (1U << 29U)
24 #define QEIV2_EVENT_Z_PHASE_FLAG_MASK (1U << 28U)
25 #define QEIV2_EVENT_Z_MISS_FLAG_MASK (1U << 27U)
26 #define QEIV2_EVENT_WIDTH_TIME_FLAG_MASK (1U << 26U)
27 #define QEIV2_EVENT_POSITION2_COMPARE_FLAG_MASK (1U << 25U)
28 #define QEIV2_EVENT_DIR_CHG_FLAG_MASK (1U << 24U)
29 #define QEIV2_EVENT_CYCLE0_FLAG_MASK (1U << 23U)
30 #define QEIV2_EVENT_CYCLE1_FLAG_MASK (1U << 22U)
31 #define QEIV2_EVENT_PULSE0_FLAG_MASK (1U << 21U)
32 #define QEIV2_EVENT_PULSE1_FLAG_MASK (1U << 20U)
33 #define QEIV2_EVENT_HOME2_FLAG_MASK (1U << 19U)
34 #define QEIV2_EVENT_FAULT_FLAG_MASK (1U << 18U)
40 typedef enum qeiv2_work_mode {
49 
54 typedef enum qeiv2_spd_tmr_content {
58 
63 typedef enum qeiv2_rotate_dir {
72 typedef enum qeiv2_position_dir {
85 
90 typedef enum qeiv2_counter_type {
96 
101 typedef enum qeiv2_filter_mode {
108 
113 typedef enum qeiv2_filter_phase {
126 typedef enum qeiv2_uvw_pos_opt {
130 
131 typedef enum qeiv2_uvw_pos_sel {
141 #define QEIV2_UVW_POS_OPT_CUR_SEL_LOW 0u
142 #define QEIV2_UVW_POS_OPT_CUR_SEL_HIGH 1u
143 #define QEIV2_UVW_POS_OPT_CUR_SEL_EDGE 2u
144 #define QEIV2_UVW_POS_OPT_NEX_SEL_LOW 0u
145 #define QEIV2_UVW_POS_OPT_NEX_SEL_HIGH 3u
146 
147 typedef enum qeiv2_uvw_pos_idx {
156 #if defined(HPM_IP_FEATURE_QEIV2_ADC_SW_INJECT) && HPM_IP_FEATURE_QEIV2_ADC_SW_INJECT
157 typedef enum qeiv2_adc_sw_inject_en {
158  qeiv2_sw_inject_adcx = QEIV2_ADC_INJECT_CTRL_ADCX_INJ_VALID_MASK,
160 } qeiv2_adc_sw_inject_en_t;
161 #endif
162 
166 typedef struct {
169  qeiv2_z_count_work_mode_t z_count_inc_mode;
170  uint32_t phcnt_max;
171  bool z_cali_enable;
172  bool z_cali_ignore_ab;
173  uint32_t phcnt_idx;
179 typedef struct {
193 typedef struct {
204 typedef struct {
205  uint32_t phcnt_cmp_value;
209  uint32_t zcmp_value;
211 
216 typedef struct {
217  uint32_t pos_cmp_value;
221 
225 typedef struct {
227  qeiv2_uvw_pos_sel_t u_pos_sel[6];
228  qeiv2_uvw_pos_sel_t v_pos_sel[6];
229  qeiv2_uvw_pos_sel_t w_pos_sel[6];
230  uint32_t pos_cfg[6];
232 
236 typedef struct {
237  uint8_t adc_select;
238  uint8_t adc_channel;
239  int16_t param0;
240  int16_t param1;
241  uint32_t offset;
243 
244 #ifdef __cplusplus
245 extern "C" {
246 #endif
247 
254 {
255  qeiv2_x->CR |= QEIV2_CR_READ_MASK;
256 }
257 
267 {
268  qeiv2_x->CR = (qeiv2_x->CR & ~QEIV2_CR_ZCNTCFG_MASK) | QEIV2_CR_ZCNTCFG_SET(mode);
269 }
270 
278 static inline void qeiv2_config_phmax_phparam(QEIV2_Type *qeiv2_x, uint32_t phmax)
279 {
280  uint32_t tmp;
281 
282  if (phmax > 0u) {
283  phmax--;
284  }
285  qeiv2_x->PHCFG = QEIV2_PHCFG_PHMAX_SET(phmax);
286  if (phmax == 0u) {
287  qeiv2_x->PHASE_PARAM = 0xFFFFFFFFu;
288  } else {
289  tmp = (0x80000000u / (phmax + 1u));
290  tmp <<= 1u;
292  }
293 }
294 
301 static inline void qeiv2_config_phmax(QEIV2_Type *qeiv2_x, uint32_t phmax)
302 {
303  if (phmax > 0u) {
304  phmax--;
305  }
306  qeiv2_x->PHCFG = QEIV2_PHCFG_PHMAX_SET(phmax);
307 }
308 
315 static inline void qeiv2_config_phparam(QEIV2_Type *qeiv2_x, uint32_t phmax)
316 {
317  uint32_t tmp;
318 
319  if (phmax > 0u) {
320  phmax--;
321  }
322  if (phmax == 0u) {
323  qeiv2_x->PHASE_PARAM = 0xFFFFFFFFu;
324  } else {
325  tmp = (0x80000000u / (phmax + 1u));
326  tmp <<= 1u;
328  }
329 }
330 
339 static inline void qeiv2_config_z_phase_calibration(QEIV2_Type *qeiv2_x, uint32_t phidx, bool enable, bool ignore_ab)
340 {
341  uint32_t tmp = qeiv2_x->CR;
342  qeiv2_x->PHIDX = QEIV2_PHIDX_PHIDX_SET(phidx);
343  if (enable) {
344  tmp |= QEIV2_CR_PHCALIZ_MASK;
345  } else {
346  tmp &= ~QEIV2_CR_PHCALIZ_MASK;
347  }
348  if (ignore_ab) {
350  } else {
351  tmp &= ~QEIV2_CR_Z_ONLY_EN_MASK;
352  }
353  qeiv2_x->CR = tmp;
354 }
355 
367 static inline void qeiv2_pause_counter(QEIV2_Type *qeiv2_x, uint32_t counter_mask, bool enable)
368 {
369  if (enable) {
370  qeiv2_x->CR |= counter_mask;
371  } else {
372  qeiv2_x->CR &= ~counter_mask;
373  }
374 }
375 
382 static inline void qeiv2_pause_pos_counter_on_fault(QEIV2_Type *qeiv2_x, bool enable)
383 {
384  if (enable) {
385  qeiv2_x->CR |= QEIV2_CR_FAULTPOS_MASK;
386  } else {
387  qeiv2_x->CR &= ~QEIV2_CR_FAULTPOS_MASK;
388  }
389 }
390 
396 static inline void qeiv2_enable_snap(QEIV2_Type *qeiv2_x)
397 {
398  qeiv2_x->CR |= QEIV2_CR_SNAPEN_MASK;
399 }
400 
406 static inline void qeiv2_disable_snap(QEIV2_Type *qeiv2_x)
407 {
408  qeiv2_x->CR &= ~QEIV2_CR_SNAPEN_MASK;
409 }
410 
416 static inline void qeiv2_reset_counter(QEIV2_Type *qeiv2_x)
417 {
418  qeiv2_x->CR |= QEIV2_CR_RSTCNT_MASK;
419 }
420 
426 static inline void qeiv2_release_counter(QEIV2_Type *qeiv2_x)
427 {
428  qeiv2_x->CR &= ~QEIV2_CR_RSTCNT_MASK;
429 }
430 
438 {
439  qeiv2_x->CR = (qeiv2_x->CR & ~QEIV2_CR_RD_SEL_MASK) | QEIV2_CR_RD_SEL_SET(content);
440 }
441 
448 static inline bool qeiv2_check_spd_tmr_as_pos_angle(QEIV2_Type *qeiv2_x)
449 {
450  return ((qeiv2_x->CR & QEIV2_CR_RD_SEL_MASK) != 0) ? true : false;
451 }
452 
459 static inline void qeiv2_set_work_mode(QEIV2_Type *qeiv2_x, qeiv2_work_mode_t mode)
460 {
461  qeiv2_x->CR = (qeiv2_x->CR & ~QEIV2_CR_ENCTYP_MASK) | QEIV2_CR_ENCTYP_SET(mode);
462 }
463 
474 static inline void qeiv2_config_wdog(QEIV2_Type *qeiv2_x, uint32_t timeout, uint8_t clr_phcnt, bool enable)
475 {
476  uint32_t tmp;
477  tmp = QEIV2_WDGCFG_WDGTO_SET(timeout) | QEIV2_WDGCFG_WDOG_CFG_SET(clr_phcnt);
478  if (enable) {
480  } else {
481  tmp &= ~QEIV2_WDGCFG_WDGEN_MASK;
482  }
483  qeiv2_x->WDGCFG = tmp;
484 }
485 
506 static inline void qeiv2_enable_trig_out_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
507 {
508  qeiv2_x->TRGOEN |= event_mask;
509 }
510 
531 static inline void qeiv2_disable_trig_out_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
532 {
533  qeiv2_x->TRGOEN &= ~event_mask;
534 }
535 
556 static inline void qeiv2_enable_load_read_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
557 {
558  qeiv2_x->READEN |= event_mask;
559 }
560 
581 static inline void qeiv2_disable_load_read_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
582 {
583  qeiv2_x->READEN &= ~event_mask;
584 }
585 
606 static inline void qeiv2_enable_dma_request(QEIV2_Type *qeiv2_x, uint32_t mask)
607 {
608  qeiv2_x->DMAEN |= mask;
609 }
610 
631 static inline void qeiv2_disable_dma_request(QEIV2_Type *qeiv2_x, uint32_t mask)
632 {
633  qeiv2_x->DMAEN &= ~mask;
634 }
635 
656 static inline void qeiv2_clear_status(QEIV2_Type *qeiv2_x, uint32_t mask)
657 {
658  qeiv2_x->SR = mask;
659 }
660 
681 static inline uint32_t qeiv2_get_status(QEIV2_Type *qeiv2_x)
682 {
683  return qeiv2_x->SR;
684 }
685 
707 static inline bool qeiv2_get_bit_status(QEIV2_Type *qeiv2_x, uint32_t mask)
708 {
709  return ((qeiv2_x->SR & mask) == mask) ? true : false;
710 }
711 
732 static inline void qeiv2_enable_irq(QEIV2_Type *qeiv2_x, uint32_t mask)
733 {
734  qeiv2_x->IRQEN |= mask;
735 }
736 
757 static inline void qeiv2_disable_irq(QEIV2_Type *qeiv2_x, uint32_t mask)
758 {
759  qeiv2_x->IRQEN &= ~mask;
760 }
761 
769 static inline uint32_t qeiv2_get_current_count(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
770 {
771  return *(&qeiv2_x->COUNT[QEIV2_COUNT_CURRENT].Z + type);
772 }
773 
780 static inline uint32_t qeiv2_get_current_phase_phcnt(QEIV2_Type *qeiv2_x)
781 {
783 }
784 
791 static inline bool qeiv2_get_current_phase_a_level(QEIV2_Type *qeiv2_x)
792 {
794 }
795 
802 static inline bool qeiv2_get_current_phase_b_level(QEIV2_Type *qeiv2_x)
803 {
805 }
806 
813 static inline bool qeiv2_get_current_phase_dir(QEIV2_Type *qeiv2_x)
814 {
816 }
817 
818 
826 static inline uint32_t qeiv2_get_count_on_read_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
827 {
828  return *(&(qeiv2_x->COUNT[QEIV2_COUNT_READ].Z) + type);
829 }
830 
838 static inline uint32_t qeiv2_get_count_on_snap0_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
839 {
840  return *(&qeiv2_x->COUNT[QEIV2_COUNT_SNAP0].Z + type);
841 }
842 
850 static inline uint32_t qeiv2_get_count_on_snap1_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
851 {
852  return *(&qeiv2_x->COUNT[QEIV2_COUNT_SNAP1].Z + type);
853 }
854 
861 static inline void qeiv2_set_z_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
862 {
863  qeiv2_x->ZCMP = QEIV2_ZCMP_ZCMP_SET(cmp);
864 }
865 
872 static inline void qeiv2_set_phcnt_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
873 {
874  qeiv2_x->PHCMP = QEIV2_PHCMP_PHCMP_SET(cmp);
875 }
876 
885 static inline void qeiv2_set_spd_pos_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
886 {
887  qeiv2_x->SPDCMP = QEIV2_SPDCMP_SPDCMP_SET(cmp);
888 }
889 
904 static inline void qeiv2_set_cmp_match_option(QEIV2_Type *qeiv2_x, bool ignore_zcmp, bool ignore_phcmp, bool ignore_spdposcmp,
905  bool ignore_rotate_dir, qeiv2_rotate_dir_t rotate_dir, bool ignore_pos_dir, qeiv2_position_dir_t pos_dir)
906 {
911  | QEIV2_MATCH_CFG_SPDCMPDIS_SET(ignore_spdposcmp)
912  | QEIV2_MATCH_CFG_DIRCMPDIS_SET(ignore_rotate_dir) | QEIV2_MATCH_CFG_DIRCMP_SET(rotate_dir)
914 }
915 
922 static inline void qeiv2_set_z_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
923 {
924  qeiv2_x->ZCMP2 = QEIV2_ZCMP2_ZCMP2_SET(cmp);
925 }
926 
933 static inline void qeiv2_set_phcnt_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
934 {
935  qeiv2_x->PHCMP2 = QEIV2_PHCMP2_PHCMP2_SET(cmp);
936 }
937 
944 static inline void qeiv2_set_spd_pos_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
945 {
946  qeiv2_x->SPDCMP2 = QEIV2_SPDCMP2_SPDCMP2_SET(cmp);
947 }
948 
963 static inline void qeiv2_set_cmp2_match_option(QEIV2_Type *qeiv2_x, bool ignore_zcmp, bool ignore_phcmp, bool ignore_spdposcmp,
964  bool ignore_rotate_dir, qeiv2_rotate_dir_t rotate_dir, bool ignore_pos_dir, qeiv2_position_dir_t pos_dir)
965 {
970  | QEIV2_MATCH_CFG_SPDCMP2DIS_SET(ignore_spdposcmp)
971  | QEIV2_MATCH_CFG_DIRCMP2DIS_SET(ignore_rotate_dir) | QEIV2_MATCH_CFG_DIRCMP2_SET(rotate_dir)
973 }
974 
985 static inline void qeiv2_config_abz_uvw_signal_edge(QEIV2_Type *qeiv2_x, bool siga_en, bool sigb_en, bool sigz_en, bool posedge_en, bool negedge_en)
986 {
990  | QEIV2_QEI_CFG_POSIDGE_EN_SET(posedge_en) | QEIV2_QEI_CFG_NEGEDGE_EN_SET(negedge_en));
991 }
992 
999 static inline void qeiv2_set_pulse0_num(QEIV2_Type *qeiv2_x, uint32_t pulse_num)
1000 {
1001  qeiv2_x->PULSE0_NUM = QEIV2_PULSE0_NUM_PULSE0_NUM_SET(pulse_num);
1002 }
1003 
1010 static inline uint32_t qeiv2_get_pulse0_cycle_snap0(QEIV2_Type *qeiv2_x)
1011 {
1012  return qeiv2_x->CYCLE0_SNAP0;
1013 }
1014 
1021 static inline uint32_t qeiv2_get_pulse0_cycle_snap1(QEIV2_Type *qeiv2_x)
1022 {
1023  return qeiv2_x->CYCLE0_SNAP1;
1024 }
1025 
1032 static inline void qeiv2_set_pulse1_num(QEIV2_Type *qeiv2_x, uint32_t pulse_num)
1033 {
1034  qeiv2_x->PULSE1_NUM = QEIV2_PULSE1_NUM_PULSE1_NUM_SET(pulse_num);
1035 }
1036 
1043 static inline uint32_t qeiv2_get_pulse1_cycle_snap0(QEIV2_Type *qeiv2_x)
1044 {
1045  return qeiv2_x->CYCLE1_SNAP0;
1046 }
1047 
1054 static inline uint32_t qeiv2_get_pulse1_cycle_snap1(QEIV2_Type *qeiv2_x)
1055 {
1056  return qeiv2_x->CYCLE1_SNAP1;
1057 }
1058 
1065 static inline void qeiv2_set_cycle0_num(QEIV2_Type *qeiv2_x, uint32_t cycle_num)
1066 {
1067  qeiv2_x->CYCLE0_NUM = QEIV2_CYCLE0_NUM_CYCLE0_NUM_SET(cycle_num);
1068 }
1069 
1076 static inline uint32_t qeiv2_get_cycle0_pulse_snap0(QEIV2_Type *qeiv2_x)
1077 {
1078  return qeiv2_x->PULSE0_SNAP0;
1079 }
1080 
1087 static inline uint32_t qeiv2_get_cycle0_pulse_snap1(QEIV2_Type *qeiv2_x)
1088 {
1089  return qeiv2_x->PULSE0_SNAP1;
1090 }
1091 
1098 static inline uint32_t qeiv2_get_cycle0_pulse0cycle_snap0(QEIV2_Type *qeiv2_x)
1099 {
1100  return qeiv2_x->PULSE0CYCLE_SNAP0;
1101 }
1102 
1109 static inline uint32_t qeiv2_get_cycle0_pulse0cycle_snap1(QEIV2_Type *qeiv2_x)
1110 {
1111  return qeiv2_x->PULSE0CYCLE_SNAP1;
1112 }
1113 
1120 static inline void qeiv2_set_cycle1_num(QEIV2_Type *qeiv2_x, uint32_t cycle_num)
1121 {
1122  qeiv2_x->CYCLE1_NUM = QEIV2_CYCLE1_NUM_CYCLE1_NUM_SET(cycle_num);
1123 }
1124 
1125 #if defined(HPM_IP_FEATURE_QEIV2_ONESHOT_MODE) && HPM_IP_FEATURE_QEIV2_ONESHOT_MODE
1130 static inline void qeiv2_disable_cycle0_oneshot_mode(QEIV2_Type *qeiv2_x)
1131 {
1133 }
1134 
1139 static inline void qeiv2_enable_cycle0_oneshot_mode(QEIV2_Type *qeiv2_x)
1140 {
1142 }
1143 
1148 static inline void qeiv2_disable_cycle1_oneshot_mode(QEIV2_Type *qeiv2_x)
1149 {
1151 }
1152 
1157 static inline void qeiv2_enable_cycle1_oneshot_mode(QEIV2_Type *qeiv2_x)
1158 {
1160 }
1161 
1166 static inline void qeiv2_disable_pulse0_oneshot_mode(QEIV2_Type *qeiv2_x)
1167 {
1169 }
1170 
1175 static inline void qeiv2_enable_pulse0_oneshot_mode(QEIV2_Type *qeiv2_x)
1176 {
1178 }
1179 
1184 static inline void qeiv2_disable_pulse1_oneshot_mode(QEIV2_Type *qeiv2_x)
1185 {
1187 }
1188 
1193 static inline void qeiv2_enable_pulse1_oneshot_mode(QEIV2_Type *qeiv2_x)
1194 {
1196 }
1197 #endif
1198 
1199 #if defined(HPM_IP_FEATURE_QEIV2_SW_RESTART_TRG) && HPM_IP_FEATURE_QEIV2_SW_RESTART_TRG
1204 static inline void qeiv2_disable_trig_cycle0(QEIV2_Type *qeiv2_x)
1205 {
1207 }
1208 
1213 static inline void qeiv2_enable_trig_cycle0(QEIV2_Type *qeiv2_x)
1214 {
1216 }
1217 
1222 static inline void qeiv2_disable_trig_cycle1(QEIV2_Type *qeiv2_x)
1223 {
1225 }
1226 
1231 static inline void qeiv2_enable_trig_cycle1(QEIV2_Type *qeiv2_x)
1232 {
1234 }
1235 
1240 static inline void qeiv2_disable_trig_pulse0(QEIV2_Type *qeiv2_x)
1241 {
1243 }
1244 
1249 static inline void qeiv2_enable_trig_pulse0(QEIV2_Type *qeiv2_x)
1250 {
1252 }
1253 
1258 static inline void qeiv2_disable_trig_pulse1(QEIV2_Type *qeiv2_x)
1259 {
1261 }
1262 
1267 static inline void qeiv2_enable_trig_pulse1(QEIV2_Type *qeiv2_x)
1268 {
1270 }
1271 
1276 static inline void qeiv2_sw_restart_cycle0(QEIV2_Type *qeiv2_x)
1277 {
1279 }
1280 
1285 static inline void qeiv2_sw_restart_cycle1(QEIV2_Type *qeiv2_x)
1286 {
1288 }
1289 
1294 static inline void qeiv2_sw_restart_pulse0(QEIV2_Type *qeiv2_x)
1295 {
1297 }
1298 
1303 static inline void qeiv2_sw_restart_pulse1(QEIV2_Type *qeiv2_x)
1304 {
1306 }
1307 #endif
1308 
1315 static inline uint32_t qeiv2_get_cycle1_pulse_snap0(QEIV2_Type *qeiv2_x)
1316 {
1317  return qeiv2_x->PULSE1_SNAP0;
1318 }
1319 
1326 static inline uint32_t qeiv2_get_cycle1_pulse_snap1(QEIV2_Type *qeiv2_x)
1327 {
1328  return qeiv2_x->PULSE1_SNAP1;
1329 }
1330 
1337 static inline uint32_t qeiv2_get_cycle1_pulse1cycle_snap0(QEIV2_Type *qeiv2_x)
1338 {
1339  return qeiv2_x->PULSE1CYCLE_SNAP0;
1340 }
1341 
1348 static inline uint32_t qeiv2_get_cycle1_pulse1cycle_snap1(QEIV2_Type *qeiv2_x)
1349 {
1350  return qeiv2_x->PULSE1CYCLE_SNAP1;
1351 }
1352 
1359 static inline void qeiv2_clear_counter_when_dir_chg(QEIV2_Type *qeiv2_x, bool enable)
1360 {
1361  if (enable) {
1363  } else {
1365  }
1366 }
1367 
1375 static inline void qeiv2_config_adcx(QEIV2_Type *qeiv2_x, qeiv2_adc_config_t *config, bool enable)
1376 {
1377  uint32_t tmp;
1380  qeiv2_x->ADCX_CFG2 = QEIV2_ADCX_CFG2_X_OFFSET_SET(config->offset);
1381  if (enable) {
1383  } else {
1385  }
1386  qeiv2_x->ADCX_CFG0 = tmp;
1387 }
1388 
1396 static inline void qeiv2_config_adcy(QEIV2_Type *qeiv2_x, qeiv2_adc_config_t *config, bool enable)
1397 {
1398  uint32_t tmp;
1401  qeiv2_x->ADCY_CFG2 = QEIV2_ADCY_CFG2_Y_OFFSET_SET(config->offset);
1402  if (enable) {
1404  } else {
1406  }
1407  qeiv2_x->ADCY_CFG0 = tmp;
1408 }
1409 
1421 void qeiv2_config_adcx_adcy_param(QEIV2_Type *qeiv2_x, float tan_delta, float cos_delta, float x_magnification, float y_magnification);
1422 
1429 static inline void qeiv2_set_adc_xy_delay(QEIV2_Type *qeiv2_x, uint32_t delay)
1430 {
1431  qeiv2_x->CAL_CFG = QEIV2_CAL_CFG_XY_DELAY_SET(delay);
1432 }
1433 
1441 static inline void qeiv2_set_position_threshold(QEIV2_Type *qeiv2_x, uint32_t threshold)
1442 {
1444 }
1445 
1453 {
1455 }
1456 
1483 static inline void qeiv2_set_uvw_position_sel(QEIV2_Type *qeiv2_x, qeiv2_uvw_pos_idx_t idx, uint8_t u_pos_sel, uint8_t v_pos_sel,
1484  uint8_t w_pos_sel, bool enable)
1485 {
1486  uint32_t tmp;
1487  tmp = QEIV2_UVW_POS_CFG_U_POS_SEL_SET(u_pos_sel)
1488  | QEIV2_UVW_POS_CFG_V_POS_SEL_SET(v_pos_sel)
1489  | QEIV2_UVW_POS_CFG_W_POS_SEL_SET(w_pos_sel);
1490  if (enable) {
1492  } else {
1494  }
1495  qeiv2_x->UVW_POS_CFG[idx] = tmp;
1496 }
1497 
1506 static inline void qeiv2_set_uvw_position(QEIV2_Type *qeiv2_x, qeiv2_uvw_pos_idx_t idx, uint32_t pos)
1507 {
1508  qeiv2_x->UVW_POS[idx] = pos;
1509 }
1510 
1517 static inline void qeiv2_set_z_phase(QEIV2_Type *qeiv2_x, uint32_t cnt)
1518 {
1519  qeiv2_x->COUNT[QEIV2_COUNT_CURRENT].Z = cnt;
1520 }
1521 
1528 static inline uint32_t qeiv2_get_z_phase(QEIV2_Type *qeiv2_x)
1529 {
1530  return qeiv2_x->COUNT[QEIV2_COUNT_CURRENT].Z;
1531 }
1532 
1539 static inline void qeiv2_set_phase_cnt(QEIV2_Type *qeiv2_x, uint32_t cnt)
1540 {
1541  qeiv2_x->PHASE_CNT = cnt;
1542 }
1543 
1550 static inline uint32_t qeiv2_get_phase_cnt(QEIV2_Type *qeiv2_x)
1551 {
1552  return qeiv2_x->PHASE_CNT;
1553 }
1554 
1563 static inline void qeiv2_update_phase_cnt(QEIV2_Type *qeiv2_x, bool inc, bool dec, uint32_t value)
1564 {
1566 }
1567 
1574 static inline void qeiv2_set_position(QEIV2_Type *qeiv2_x, uint32_t pos)
1575 {
1576  qeiv2_x->POSITION = pos;
1577 }
1578 
1585 static inline uint32_t qeiv2_get_postion(QEIV2_Type *qeiv2_x)
1586 {
1587  return qeiv2_x->POSITION;
1588 }
1589 
1598 static inline void qeiv2_update_position(QEIV2_Type *qeiv2_x, bool inc, bool dec, uint32_t value)
1599 {
1601 }
1602 
1609 static inline uint32_t qeiv2_get_angle(QEIV2_Type *qeiv2_x)
1610 {
1611  return qeiv2_x->ANGLE;
1612 }
1613 
1621 static inline void qeiv2_config_position_timeout(QEIV2_Type *qeiv2_x, uint32_t tm, bool enable)
1622 {
1623  uint32_t tmp;
1625  if (enable) {
1627  } else {
1629  }
1630  qeiv2_x->POS_TIMEOUT = tmp;
1631 }
1632 
1633 #if defined (HPM_IP_FEATURE_QEIV2_SIN_TOGI) && HPM_IP_FEATURE_QEIV2_SIN_TOGI
1640 static inline void qeiv2_set_togi_enable(QEIV2_Type *qeiv2_x, bool enable)
1641 {
1643 }
1644 
1655 void qeiv2_config_togi_w_param(QEIV2_Type *qeiv2_x, uint32_t signal_hz, uint32_t adc_sample_rate);
1656 #endif
1657 
1658 #if defined(HPM_IP_FEATURE_QEIV2_POS_ADJ) && HPM_IP_FEATURE_QEIV2_POS_ADJ
1665 static inline void qeiv2_set_position_adjust_value(QEIV2_Type *qeiv2_x, int32_t pos_adj)
1666 {
1667  qeiv2_x->POS_ADJ = QEIV2_POS_ADJ_POS_ADJ_SET(pos_adj);
1668 }
1669 #endif
1670 
1671 #if defined(HPM_IP_FEATURE_QEIV2_ADC_SW_INJECT) && HPM_IP_FEATURE_QEIV2_ADC_SW_INJECT
1677 static inline void qeiv2_enable_adc_sw_inject(QEIV2_Type *qeiv2_x)
1678 {
1680 }
1681 
1687 static inline void qeiv2_disable_adc_sw_inject(QEIV2_Type *qeiv2_x)
1688 {
1690 }
1691 
1702 static inline void qeiv2_inject_sw_adc(QEIV2_Type *qeiv2_x, uint32_t adcx, uint32_t adcy, qeiv2_adc_sw_inject_en_t en)
1703 {
1704  qeiv2_x->ADCX_VAL_SW = adcx;
1705  qeiv2_x->ADCY_VAL_SW = adcy;
1706  qeiv2_x->ADC_INJECT_CTRL |= en;
1707 }
1708 
1716 static inline bool qeiv2_is_pos_calc_finished(QEIV2_Type *qeiv2_x)
1717 {
1718  return (QEIV2_CALC_STATE_STATE_GET(qeiv2_x->CALC_STATE) == 0) ? true : false;
1719 }
1720 #endif
1721 
1728 void qeiv2_config_mode(QEIV2_Type *qeiv2_x, qeiv2_mode_config_t *config);
1729 
1737 
1744 void qeiv2_config_pause(QEIV2_Type *qeiv2_x, qeiv2_pause_config_t *config);
1745 
1754 
1763 
1772 
1781 
1788 
1797 
1809 void qeiv2_config_filter(QEIV2_Type *qeiv2_x, qeiv2_filter_phase_t phase, bool outinv, qeiv2_filter_mode_t mode, bool sync, uint32_t filtlen);
1810 
1811 #ifdef __cplusplus
1812 }
1813 #endif
1817 #endif /* HPM_QEIV2_DRV_H */
#define QEIV2_WDGCFG_WDGEN_MASK
Definition: hpm_qeiv2_regs.h:320
#define QEIV2_MATCH_CFG_ZCMP2DIS_SET(x)
Definition: hpm_qeiv2_regs.h:1252
#define QEIV2_ADCX_CFG1_X_PARAM0_SET(x)
Definition: hpm_qeiv2_regs.h:1697
#define QEIV2_MATCH_CFG_PHASE_MATCH_DIS_SET(x)
Definition: hpm_qeiv2_regs.h:1225
#define QEIV2_MATCH_CFG_ZCMPDIS_MASK
Definition: hpm_qeiv2_regs.h:1184
#define QEIV2_ZCMP2_ZCMP2_SET(x)
Definition: hpm_qeiv2_regs.h:1155
#define QEIV2_CR_ZCNTCFG_SET(x)
Definition: hpm_qeiv2_regs.h:111
#define QEIV2_ADCY_CFG1_Y_PARAM0_SET(x)
Definition: hpm_qeiv2_regs.h:1754
#define QEIV2_COUNT_PH_DIR_GET(x)
Definition: hpm_qeiv2_regs.h:1066
#define QEIV2_MATCH_CFG_DIRCMPDIS_SET(x)
Definition: hpm_qeiv2_regs.h:1196
#define QEIV2_ADCX_CFG1_X_PARAM1_SET(x)
Definition: hpm_qeiv2_regs.h:1688
#define QEIV2_PULSE1_NUM_PULSE1_NUM_SET(x)
Definition: hpm_qeiv2_regs.h:1450
#define QEIV2_PHASE_UPDATE_VALUE_SET(x)
Definition: hpm_qeiv2_regs.h:1884
#define QEIV2_MATCH_CFG_POS_MATCH2_OPT_MASK
Definition: hpm_qeiv2_regs.h:1304
#define QEIV2_QEI_CFG_SIGZ_EN_SET(x)
Definition: hpm_qeiv2_regs.h:1411
#define QEIV2_POSITION_UPDATE_DEC_SET(x)
Definition: hpm_qeiv2_regs.h:1915
#define QEIV2_MATCH_CFG_DIRCMP_MASK
Definition: hpm_qeiv2_regs.h:1205
#define QEIV2_QEI_CFG_NEGEDGE_EN_SET(x)
Definition: hpm_qeiv2_regs.h:1393
#define QEIV2_QEI_CFG_SIGZ_EN_MASK
Definition: hpm_qeiv2_regs.h:1409
#define QEIV2_QEI_CFG_SPEED_DIR_CHG_EN_MASK
Definition: hpm_qeiv2_regs.h:1362
#define QEIV2_CYCLE0_NUM_CYCLE0_NUM_SET(x)
Definition: hpm_qeiv2_regs.h:1532
#define QEIV2_UVW_POS_CFG_POS_EN_MASK
Definition: hpm_qeiv2_regs.h:1814
#define QEIV2_MATCH_CFG_ZCMP2DIS_MASK
Definition: hpm_qeiv2_regs.h:1250
#define QEIV2_MATCH_CFG_DIRCMP2_MASK
Definition: hpm_qeiv2_regs.h:1268
#define QEIV2_WDGCFG_WDGTO_SET(x)
Definition: hpm_qeiv2_regs.h:344
#define QEIV2_ADCY_CFG0_Y_ADCSEL_SET(x)
Definition: hpm_qeiv2_regs.h:1717
#define QEIV2_POS_TIMEOUT_ENABLE_MASK
Definition: hpm_qeiv2_regs.h:1943
#define QEIV2_CR_Z_ONLY_EN_MASK
Definition: hpm_qeiv2_regs.h:129
#define QEIV2_COUNT_PH_ASTAT_GET(x)
Definition: hpm_qeiv2_regs.h:1076
#define QEIV2_QEI_CFG_SIGA_EN_MASK
Definition: hpm_qeiv2_regs.h:1427
#define QEIV2_MATCH_CFG_DIRCMP2DIS_SET(x)
Definition: hpm_qeiv2_regs.h:1261
#define QEIV2_POSITION_UPDATE_VALUE_SET(x)
Definition: hpm_qeiv2_regs.h:1925
#define QEIV2_CR_ENCTYP_MASK
Definition: hpm_qeiv2_regs.h:298
#define QEIV2_QEI_CFG_SIGA_EN_SET(x)
Definition: hpm_qeiv2_regs.h:1429
#define QEIV2_ADCX_CFG0_X_CHAN_SET(x)
Definition: hpm_qeiv2_regs.h:1678
#define QEIV2_QEI_CFG_UVW_POS_OPT0_MASK
Definition: hpm_qeiv2_regs.h:1373
#define QEIV2_PHASE_UPDATE_DEC_SET(x)
Definition: hpm_qeiv2_regs.h:1874
#define QEIV2_UVW_POS_CFG_V_POS_SEL_SET(x)
Definition: hpm_qeiv2_regs.h:1834
#define QEIV2_MATCH_CFG_POS_MATCH2_DIR_MASK
Definition: hpm_qeiv2_regs.h:1295
#define QEIV2_PHCMP_PHCMP_SET(x)
Definition: hpm_qeiv2_regs.h:639
#define QEIV2_MATCH_CFG_DIRCMP2DIS_MASK
Definition: hpm_qeiv2_regs.h:1259
#define QEIV2_MATCH_CFG_POS_MATCH2_OPT_SET(x)
Definition: hpm_qeiv2_regs.h:1306
#define QEIV2_ADCX_CFG0_X_ADCSEL_SET(x)
Definition: hpm_qeiv2_regs.h:1660
#define QEIV2_CR_ENCTYP_SET(x)
Definition: hpm_qeiv2_regs.h:300
#define QEIV2_MATCH_CFG_SPDCMP2DIS_SET(x)
Definition: hpm_qeiv2_regs.h:1279
#define QEIV2_MATCH_CFG_POS_MATCH_DIR_SET(x)
Definition: hpm_qeiv2_regs.h:1234
#define QEIV2_SPDCMP_SPDCMP_SET(x)
Definition: hpm_qeiv2_regs.h:650
#define QEIV2_QEI_CFG_POSIDGE_EN_MASK
Definition: hpm_qeiv2_regs.h:1400
#define QEIV2_COUNT_SNAP1
Definition: hpm_qeiv2_regs.h:1964
#define QEIV2_QEI_CFG_NEGEDGE_EN_MASK
Definition: hpm_qeiv2_regs.h:1391
#define QEIV2_MATCH_CFG_POS_MATCH_OPT_SET(x)
Definition: hpm_qeiv2_regs.h:1243
#define QEIV2_CR_FAULTPOS_MASK
Definition: hpm_qeiv2_regs.h:254
#define QEIV2_QEI_CFG_SIGB_EN_SET(x)
Definition: hpm_qeiv2_regs.h:1420
#define QEIV2_ADCY_CFG0_Y_ADC_ENABLE_MASK
Definition: hpm_qeiv2_regs.h:1724
#define QEIV2_CR_ZCNTCFG_MASK
Definition: hpm_qeiv2_regs.h:109
#define QEIV2_UVW_POS_CFG_W_POS_SEL_SET(x)
Definition: hpm_qeiv2_regs.h:1843
#define QEIV2_MATCH_CFG_DIRCMP_SET(x)
Definition: hpm_qeiv2_regs.h:1207
#define QEIV2_COUNT_PH_BSTAT_GET(x)
Definition: hpm_qeiv2_regs.h:1086
#define QEIV2_QEI_CFG_SIGB_EN_MASK
Definition: hpm_qeiv2_regs.h:1418
#define QEIV2_QEI_CFG_POSIDGE_EN_SET(x)
Definition: hpm_qeiv2_regs.h:1402
#define QEIV2_MATCH_CFG_PHASE_MATCH_DIS2_MASK
Definition: hpm_qeiv2_regs.h:1286
#define QEIV2_CR_RD_SEL_SET(x)
Definition: hpm_qeiv2_regs.h:289
#define QEIV2_PHCFG_PHMAX_SET(x)
Definition: hpm_qeiv2_regs.h:311
#define QEIV2_PHASE_PARAM_PHASE_PARAM_SET(x)
Definition: hpm_qeiv2_regs.h:1786
#define QEIV2_CR_RSTCNT_MASK
Definition: hpm_qeiv2_regs.h:274
#define QEIV2_POSITION_UPDATE_INC_SET(x)
Definition: hpm_qeiv2_regs.h:1905
#define QEIV2_COUNT_CURRENT
Definition: hpm_qeiv2_regs.h:1961
#define QEIV2_COUNT_READ
Definition: hpm_qeiv2_regs.h:1962
#define QEIV2_MATCH_CFG_DIRCMP2_SET(x)
Definition: hpm_qeiv2_regs.h:1270
#define QEIV2_MATCH_CFG_SPDCMPDIS_SET(x)
Definition: hpm_qeiv2_regs.h:1216
#define QEIV2_WDGCFG_WDOG_CFG_SET(x)
Definition: hpm_qeiv2_regs.h:334
#define QEIV2_CR_SNAPEN_MASK
Definition: hpm_qeiv2_regs.h:264
#define QEIV2_SPDCMP2_SPDCMP2_SET(x)
Definition: hpm_qeiv2_regs.h:1175
#define QEIV2_CR_PHCALIZ_MASK
Definition: hpm_qeiv2_regs.h:119
#define QEIV2_COUNT_PH_PHCNT_GET(x)
Definition: hpm_qeiv2_regs.h:1095
#define QEIV2_ADCY_CFG1_Y_PARAM1_SET(x)
Definition: hpm_qeiv2_regs.h:1745
#define QEIV2_CAL_CFG_XY_DELAY_SET(x)
Definition: hpm_qeiv2_regs.h:1776
#define QEIV2_PHCMP2_PHCMP2_SET(x)
Definition: hpm_qeiv2_regs.h:1165
#define QEIV2_MATCH_CFG_POS_MATCH2_DIR_SET(x)
Definition: hpm_qeiv2_regs.h:1297
#define QEIV2_POS_TIMEOUT_TIMEOUT_SET(x)
Definition: hpm_qeiv2_regs.h:1955
#define QEIV2_ADCY_CFG0_Y_CHAN_SET(x)
Definition: hpm_qeiv2_regs.h:1735
#define QEIV2_ZCMP_ZCMP_SET(x)
Definition: hpm_qeiv2_regs.h:628
#define QEIV2_COUNT_SNAP0
Definition: hpm_qeiv2_regs.h:1963
#define QEIV2_ADCX_CFG0_X_ADC_ENABLE_MASK
Definition: hpm_qeiv2_regs.h:1667
#define QEIV2_MATCH_CFG_POS_MATCH_OPT_MASK
Definition: hpm_qeiv2_regs.h:1241
#define QEIV2_CYCLE1_NUM_CYCLE1_NUM_SET(x)
Definition: hpm_qeiv2_regs.h:1542
#define QEIV2_ADCX_CFG2_X_OFFSET_SET(x)
Definition: hpm_qeiv2_regs.h:1707
#define QEIV2_MATCH_CFG_SPDCMPDIS_MASK
Definition: hpm_qeiv2_regs.h:1214
#define QEIV2_POS_THRESHOLD_POS_THRESHOLD_SET(x)
Definition: hpm_qeiv2_regs.h:1796
#define QEIV2_PHASE_UPDATE_INC_SET(x)
Definition: hpm_qeiv2_regs.h:1864
#define QEIV2_MATCH_CFG_SPDCMP2DIS_MASK
Definition: hpm_qeiv2_regs.h:1277
#define QEIV2_QEI_CFG_UVW_POS_OPT0_SET(x)
Definition: hpm_qeiv2_regs.h:1375
#define QEIV2_PHIDX_PHIDX_SET(x)
Definition: hpm_qeiv2_regs.h:355
#define QEIV2_MATCH_CFG_POS_MATCH_DIR_MASK
Definition: hpm_qeiv2_regs.h:1232
#define QEIV2_PULSE0_NUM_PULSE0_NUM_SET(x)
Definition: hpm_qeiv2_regs.h:1440
#define QEIV2_UVW_POS_CFG_U_POS_SEL_SET(x)
Definition: hpm_qeiv2_regs.h:1825
#define QEIV2_ADCY_CFG2_Y_OFFSET_SET(x)
Definition: hpm_qeiv2_regs.h:1764
#define QEIV2_MATCH_CFG_DIRCMPDIS_MASK
Definition: hpm_qeiv2_regs.h:1194
#define QEIV2_CR_RD_SEL_MASK
Definition: hpm_qeiv2_regs.h:287
#define QEIV2_MATCH_CFG_PHASE_MATCH_DIS2_SET(x)
Definition: hpm_qeiv2_regs.h:1288
#define QEIV2_MATCH_CFG_ZCMPDIS_SET(x)
Definition: hpm_qeiv2_regs.h:1186
#define QEIV2_CR_READ_MASK
Definition: hpm_qeiv2_regs.h:98
#define QEIV2_MATCH_CFG_PHASE_MATCH_DIS_MASK
Definition: hpm_qeiv2_regs.h:1223
#define QEIV2_TOGI_CFG0_SIN_TOGI_MASK
Definition: hpm_qeiv2_regs.h:2203
#define QEIV2_QEI_CFG_PULSE0_ONESHOT_MASK
Definition: hpm_qeiv2_regs.h:1415
#define QEIV2_QEI_CFG_CYCLE1_ONESHOT_MASK
Definition: hpm_qeiv2_regs.h:1443
#define QEIV2_QEI_CFG_SW_PULSE0_RESTART_MASK
Definition: hpm_qeiv2_regs.h:1377
#define QEIV2_CALC_STATE_STATE_GET(x)
Definition: hpm_qeiv2_regs.h:2195
#define QEIV2_ADC_INJECT_CTRL_ADCX_INJ_VALID_MASK
Definition: hpm_qeiv2_regs.h:1992
#define QEIV2_QEI_CFG_TRIG_PULSE0_EN_MASK
Definition: hpm_qeiv2_regs.h:1463
#define QEIV2_TOGI_CFG0_SIN_TOGI_SET(x)
Definition: hpm_qeiv2_regs.h:2205
#define QEIV2_QEI_CFG_SW_CYCLE0_RESTART_MASK
Definition: hpm_qeiv2_regs.h:1396
#define QEIV2_QEI_CFG_SW_CYCLE1_RESTART_MASK
Definition: hpm_qeiv2_regs.h:1405
#define QEIV2_ADC_INJECT_CTRL_ADC_INJECT_EN_MASK
Definition: hpm_qeiv2_regs.h:1972
#define QEIV2_QEI_CFG_SW_PULSE1_RESTART_MASK
Definition: hpm_qeiv2_regs.h:1386
#define QEIV2_QEI_CFG_TRIG_CYCLE0_EN_MASK
Definition: hpm_qeiv2_regs.h:1482
#define QEIV2_ADC_INJECT_CTRL_ADCY_INJ_VALID_MASK
Definition: hpm_qeiv2_regs.h:1982
#define QEIV2_POS_ADJ_POS_ADJ_SET(x)
Definition: hpm_qeiv2_regs.h:2014
#define QEIV2_QEI_CFG_TRIG_PULSE1_EN_MASK
Definition: hpm_qeiv2_regs.h:1472
#define QEIV2_QEI_CFG_CYCLE0_ONESHOT_MASK
Definition: hpm_qeiv2_regs.h:1434
#define QEIV2_QEI_CFG_TRIG_CYCLE1_EN_MASK
Definition: hpm_qeiv2_regs.h:1491
#define QEIV2_QEI_CFG_PULSE1_ONESHOT_MASK
Definition: hpm_qeiv2_regs.h:1424
uint32_t hpm_stat_t
Definition: hpm_common.h:135
static void qeiv2_enable_irq(QEIV2_Type *qeiv2_x, uint32_t mask)
enable qeiv2 irq
Definition: hpm_qeiv2_drv.h:732
static void qeiv2_config_z_phase_calibration(QEIV2_Type *qeiv2_x, uint32_t phidx, bool enable, bool ignore_ab)
config phcnt calibration trigged by z phase
Definition: hpm_qeiv2_drv.h:339
enum qeiv2_position_dir qeiv2_position_dir_t
compare match position direction
static void qeiv2_update_phase_cnt(QEIV2_Type *qeiv2_x, bool inc, bool dec, uint32_t value)
update phase counter value
Definition: hpm_qeiv2_drv.h:1563
static void qeiv2_clear_status(QEIV2_Type *qeiv2_x, uint32_t mask)
clear qeiv2 status register
Definition: hpm_qeiv2_drv.h:656
static void qeiv2_enable_snap(QEIV2_Type *qeiv2_x)
enable load phcnt, zcnt, spdcnt and tmrcnt into their snap registers
Definition: hpm_qeiv2_drv.h:396
hpm_stat_t qeiv2_config_position_cmp_match_condition(QEIV2_Type *qeiv2_x, qeiv2_pos_cmp_match_config_t *config)
config position compare match condition
Definition: hpm_qeiv2_drv.c:99
static void qeiv2_set_uvw_position_sel(QEIV2_Type *qeiv2_x, qeiv2_uvw_pos_idx_t idx, uint8_t u_pos_sel, uint8_t v_pos_sel, uint8_t w_pos_sel, bool enable)
set config uvw position
Definition: hpm_qeiv2_drv.h:1483
static uint32_t qeiv2_get_pulse0_cycle_snap1(QEIV2_Type *qeiv2_x)
get cycle0 snap1 value
Definition: hpm_qeiv2_drv.h:1021
enum qeiv2_rotate_dir qeiv2_rotate_dir_t
compare match rotate direction
qeiv2_uvw_pos_opt
uvw position option
Definition: hpm_qeiv2_drv.h:126
static void qeiv2_set_z_phase(QEIV2_Type *qeiv2_x, uint32_t cnt)
set z phase counter value
Definition: hpm_qeiv2_drv.h:1517
enum qeiv2_uvw_pos_sel qeiv2_uvw_pos_sel_t
static void qeiv2_set_pulse0_num(QEIV2_Type *qeiv2_x, uint32_t pulse_num)
set pulse0 value
Definition: hpm_qeiv2_drv.h:999
hpm_stat_t qeiv2_config_phcnt_cmp_match_condition(QEIV2_Type *qeiv2_x, qeiv2_phcnt_cmp_match_config_t *config)
config phcnt compare match condition
Definition: hpm_qeiv2_drv.c:87
qeiv2_filter_phase
filter type
Definition: hpm_qeiv2_drv.h:113
enum qeiv2_filter_mode qeiv2_filter_mode_t
filter mode
static void qeiv2_config_phmax_phparam(QEIV2_Type *qeiv2_x, uint32_t phmax)
config phase max value and phase param(for position calculation). It is recommended used without z-ph...
Definition: hpm_qeiv2_drv.h:278
static uint32_t qeiv2_get_pulse1_cycle_snap0(QEIV2_Type *qeiv2_x)
get cycle1 snap0 value
Definition: hpm_qeiv2_drv.h:1043
static uint32_t qeiv2_get_cycle0_pulse0cycle_snap1(QEIV2_Type *qeiv2_x)
get pulse0cycle snap1 value
Definition: hpm_qeiv2_drv.h:1109
enum qeiv2_uvw_pos_idx qeiv2_uvw_pos_idx_t
static void qeiv2_set_phase_cnt(QEIV2_Type *qeiv2_x, uint32_t cnt)
set phase counter value
Definition: hpm_qeiv2_drv.h:1539
enum qeiv2_z_count_work_mode qeiv2_z_count_work_mode_t
counting mode of Z-phase counter
enum qeiv2_spd_tmr_content qeiv2_spd_tmr_content_t
spd and tmr read selection
static uint32_t qeiv2_get_status(QEIV2_Type *qeiv2_x)
get qeiv2 status
Definition: hpm_qeiv2_drv.h:681
static void qeiv2_set_position(QEIV2_Type *qeiv2_x, uint32_t pos)
set position value
Definition: hpm_qeiv2_drv.h:1574
enum qeiv2_counter_type qeiv2_counter_type_t
counter type
enum qeiv2_filter_phase qeiv2_filter_phase_t
filter type
static void qeiv2_set_cmp_match_option(QEIV2_Type *qeiv2_x, bool ignore_zcmp, bool ignore_phcmp, bool ignore_spdposcmp, bool ignore_rotate_dir, qeiv2_rotate_dir_t rotate_dir, bool ignore_pos_dir, qeiv2_position_dir_t pos_dir)
set compare match options
Definition: hpm_qeiv2_drv.h:904
static void qeiv2_update_position(QEIV2_Type *qeiv2_x, bool inc, bool dec, uint32_t value)
update position value
Definition: hpm_qeiv2_drv.h:1598
static uint32_t qeiv2_get_count_on_snap1_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
read the value of each phase snapshot 1 counter
Definition: hpm_qeiv2_drv.h:850
static void qeiv2_reset_counter(QEIV2_Type *qeiv2_x)
reset zcnt, spdcnt and tmrcnt to 0, reset phcnt to phidx.
Definition: hpm_qeiv2_drv.h:416
static void qeiv2_enable_load_read_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
enable load read trigger event
Definition: hpm_qeiv2_drv.h:556
static void qeiv2_set_z_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set zcnt compare value
Definition: hpm_qeiv2_drv.h:861
hpm_stat_t qeiv2_config_phcnt_cmp2_match_condition(QEIV2_Type *qeiv2_x, qeiv2_phcnt_cmp_match_config_t *config)
config phcnt compare2 match condition
Definition: hpm_qeiv2_drv.c:109
static uint32_t qeiv2_get_current_phase_phcnt(QEIV2_Type *qeiv2_x)
get current phcnt value
Definition: hpm_qeiv2_drv.h:780
static bool qeiv2_get_bit_status(QEIV2_Type *qeiv2_x, uint32_t mask)
get qeiv2 bit status
Definition: hpm_qeiv2_drv.h:707
static void qeiv2_set_adc_xy_delay(QEIV2_Type *qeiv2_x, uint32_t delay)
set adcx and adcy delay
Definition: hpm_qeiv2_drv.h:1429
static void qeiv2_disable_load_read_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
disable load read trigger event
Definition: hpm_qeiv2_drv.h:581
qeiv2_filter_mode
filter mode
Definition: hpm_qeiv2_drv.h:101
void qeiv2_config_h_phase(QEIV2_Type *qeiv2_x, qeiv2_h_phase_config_t *config)
config h phase signal
Definition: hpm_qeiv2_drv.c:34
qeiv2_counter_type
counter type
Definition: hpm_qeiv2_drv.h:90
static void qeiv2_config_phparam(QEIV2_Type *qeiv2_x, uint32_t phmax)
config phase param for position calculation.
Definition: hpm_qeiv2_drv.h:315
void qeiv2_config_adcx_adcy_param(QEIV2_Type *qeiv2_x, float tan_delta, float cos_delta, float x_magnification, float y_magnification)
Configures the orthogonal delta and magnification for ADCX and ADCY.
Definition: hpm_qeiv2_drv.c:236
static uint32_t qeiv2_get_cycle1_pulse_snap1(QEIV2_Type *qeiv2_x)
get pulse1 snap1 value
Definition: hpm_qeiv2_drv.h:1326
static void qeiv2_set_work_mode(QEIV2_Type *qeiv2_x, qeiv2_work_mode_t mode)
set qeiv2 work mode
Definition: hpm_qeiv2_drv.h:459
static uint32_t qeiv2_get_z_phase(QEIV2_Type *qeiv2_x)
get z phase counter value
Definition: hpm_qeiv2_drv.h:1528
static uint32_t qeiv2_get_cycle0_pulse0cycle_snap0(QEIV2_Type *qeiv2_x)
get pulse0cycle snap0 value
Definition: hpm_qeiv2_drv.h:1098
static void qeiv2_select_spd_tmr_register_content(QEIV2_Type *qeiv2_x, qeiv2_spd_tmr_content_t content)
select spd and tmr register content
Definition: hpm_qeiv2_drv.h:437
static void qeiv2_load_counter_to_read_registers(QEIV2_Type *qeiv2_x)
load phcnt, zcnt, spdcnt and tmrcnt into their read registers
Definition: hpm_qeiv2_drv.h:253
static bool qeiv2_get_current_phase_dir(QEIV2_Type *qeiv2_x)
get current phase dir
Definition: hpm_qeiv2_drv.h:813
qeiv2_work_mode
qeiv2 work mode
Definition: hpm_qeiv2_drv.h:40
static void qeiv2_set_position_threshold(QEIV2_Type *qeiv2_x, uint32_t threshold)
set position threshold
Definition: hpm_qeiv2_drv.h:1441
static bool qeiv2_get_current_phase_a_level(QEIV2_Type *qeiv2_x)
get current a phase level
Definition: hpm_qeiv2_drv.h:791
static void qeiv2_config_z_phase_counter_mode(QEIV2_Type *qeiv2_x, qeiv2_z_count_work_mode_t mode)
config z phase counter increment and decrement mode
Definition: hpm_qeiv2_drv.h:266
hpm_stat_t qeiv2_config_position_cmp2_match_condition(QEIV2_Type *qeiv2_x, qeiv2_pos_cmp_match_config_t *config)
config position compare2 match condition
Definition: hpm_qeiv2_drv.c:121
enum qeiv2_uvw_pos_opt qeiv2_uvw_pos_opt_t
uvw position option
static void qeiv2_disable_dma_request(QEIV2_Type *qeiv2_x, uint32_t mask)
disable qeiv2 dma
Definition: hpm_qeiv2_drv.h:631
static void qeiv2_release_counter(QEIV2_Type *qeiv2_x)
release counter.
Definition: hpm_qeiv2_drv.h:426
static uint32_t qeiv2_get_angle(QEIV2_Type *qeiv2_x)
get angle value
Definition: hpm_qeiv2_drv.h:1609
static void qeiv2_config_wdog(QEIV2_Type *qeiv2_x, uint32_t timeout, uint8_t clr_phcnt, bool enable)
config watchdog
Definition: hpm_qeiv2_drv.h:474
qeiv2_z_count_work_mode
counting mode of Z-phase counter
Definition: hpm_qeiv2_drv.h:81
qeiv2_uvw_pos_idx
Definition: hpm_qeiv2_drv.h:147
qeiv2_spd_tmr_content
spd and tmr read selection
Definition: hpm_qeiv2_drv.h:54
qeiv2_position_dir
compare match position direction
Definition: hpm_qeiv2_drv.h:72
static uint32_t qeiv2_get_postion(QEIV2_Type *qeiv2_x)
get position value
Definition: hpm_qeiv2_drv.h:1585
static void qeiv2_set_cycle0_num(QEIV2_Type *qeiv2_x, uint32_t cycle_num)
set cycle0 value
Definition: hpm_qeiv2_drv.h:1065
enum qeiv2_work_mode qeiv2_work_mode_t
qeiv2 work mode
static void qeiv2_pause_pos_counter_on_fault(QEIV2_Type *qeiv2_x, bool enable)
pause pos counter when fault assert
Definition: hpm_qeiv2_drv.h:382
static void qeiv2_set_spd_pos_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set spdcnt or position compare2 value. It's selected by CR register rd_sel bit.
Definition: hpm_qeiv2_drv.h:944
void qeiv2_config_mode(QEIV2_Type *qeiv2_x, qeiv2_mode_config_t *config)
config qei mode
Definition: hpm_qeiv2_drv.c:12
static void qeiv2_config_phmax(QEIV2_Type *qeiv2_x, uint32_t phmax)
config phase max value
Definition: hpm_qeiv2_drv.h:301
static void qeiv2_enable_trig_out_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
enable trig out trigger event
Definition: hpm_qeiv2_drv.h:506
static void qeiv2_disable_irq(QEIV2_Type *qeiv2_x, uint32_t mask)
disable qeiv2 irq
Definition: hpm_qeiv2_drv.h:757
static void qeiv2_set_z_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set zcnt compare2 value
Definition: hpm_qeiv2_drv.h:922
static bool qeiv2_get_current_phase_b_level(QEIV2_Type *qeiv2_x)
get current b phase level
Definition: hpm_qeiv2_drv.h:802
static uint32_t qeiv2_get_cycle0_pulse_snap0(QEIV2_Type *qeiv2_x)
get pulse0 snap0 value
Definition: hpm_qeiv2_drv.h:1076
static void qeiv2_set_spd_pos_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set spdcnt or position compare value. It's selected by CR register rd_sel bit.
Definition: hpm_qeiv2_drv.h:885
static uint32_t qeiv2_get_cycle0_pulse_snap1(QEIV2_Type *qeiv2_x)
get pulse0 snap1 value
Definition: hpm_qeiv2_drv.h:1087
static uint32_t qeiv2_get_phase_cnt(QEIV2_Type *qeiv2_x)
get phase counter value
Definition: hpm_qeiv2_drv.h:1550
static uint32_t qeiv2_get_cycle1_pulse1cycle_snap0(QEIV2_Type *qeiv2_x)
get pulse1cycle snap0 value
Definition: hpm_qeiv2_drv.h:1337
static void qeiv2_set_phcnt_cmp_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set phcnt compare value
Definition: hpm_qeiv2_drv.h:872
hpm_stat_t qeiv2_config_uvw_position(QEIV2_Type *qeiv2_x, qeiv2_uvw_config_t *config)
config uvw position
Definition: hpm_qeiv2_drv.c:167
static uint32_t qeiv2_get_count_on_read_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
get read event count value
Definition: hpm_qeiv2_drv.h:826
static void qeiv2_set_cmp2_match_option(QEIV2_Type *qeiv2_x, bool ignore_zcmp, bool ignore_phcmp, bool ignore_spdposcmp, bool ignore_rotate_dir, qeiv2_rotate_dir_t rotate_dir, bool ignore_pos_dir, qeiv2_position_dir_t pos_dir)
set compare2 match options
Definition: hpm_qeiv2_drv.h:963
qeiv2_rotate_dir
compare match rotate direction
Definition: hpm_qeiv2_drv.h:63
static void qeiv2_set_phcnt_cmp2_value(QEIV2_Type *qeiv2_x, uint32_t cmp)
set phcnt compare2 value
Definition: hpm_qeiv2_drv.h:933
static void qeiv2_enable_dma_request(QEIV2_Type *qeiv2_x, uint32_t mask)
enable dma request
Definition: hpm_qeiv2_drv.h:606
static uint32_t qeiv2_get_cycle1_pulse1cycle_snap1(QEIV2_Type *qeiv2_x)
get pulse1cycle snap1 value
Definition: hpm_qeiv2_drv.h:1348
static void qeiv2_pause_counter(QEIV2_Type *qeiv2_x, uint32_t counter_mask, bool enable)
pause counter when pause assert
Definition: hpm_qeiv2_drv.h:367
static void qeiv2_config_abz_uvw_signal_edge(QEIV2_Type *qeiv2_x, bool siga_en, bool sigb_en, bool sigz_en, bool posedge_en, bool negedge_en)
config signal enablement and edge for speed and position measurement
Definition: hpm_qeiv2_drv.h:985
static uint32_t qeiv2_get_pulse1_cycle_snap1(QEIV2_Type *qeiv2_x)
get cycle1 snap1 value
Definition: hpm_qeiv2_drv.h:1054
static uint32_t qeiv2_get_count_on_snap0_event(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
read the value of each phase snapshot 0 counter
Definition: hpm_qeiv2_drv.h:838
static uint32_t qeiv2_get_pulse0_cycle_snap0(QEIV2_Type *qeiv2_x)
get cycle0 snap0 value
Definition: hpm_qeiv2_drv.h:1010
static void qeiv2_set_cycle1_num(QEIV2_Type *qeiv2_x, uint32_t cycle_num)
set cycle1 value
Definition: hpm_qeiv2_drv.h:1120
static uint32_t qeiv2_get_cycle1_pulse_snap0(QEIV2_Type *qeiv2_x)
get pulse1 snap0 value
Definition: hpm_qeiv2_drv.h:1315
static void qeiv2_set_uvw_position(QEIV2_Type *qeiv2_x, qeiv2_uvw_pos_idx_t idx, uint32_t pos)
set uvw position
Definition: hpm_qeiv2_drv.h:1506
static void qeiv2_set_uvw_position_opt(QEIV2_Type *qeiv2_x, qeiv2_uvw_pos_opt_t opt)
set uvw position option
Definition: hpm_qeiv2_drv.h:1452
static bool qeiv2_check_spd_tmr_as_pos_angle(QEIV2_Type *qeiv2_x)
check spd and tmr register content as pos and angle
Definition: hpm_qeiv2_drv.h:448
qeiv2_uvw_pos_sel
Definition: hpm_qeiv2_drv.h:131
static void qeiv2_disable_trig_out_trigger_event(QEIV2_Type *qeiv2_x, uint32_t event_mask)
disable trig out trigger event
Definition: hpm_qeiv2_drv.h:531
static void qeiv2_config_adcx(QEIV2_Type *qeiv2_x, qeiv2_adc_config_t *config, bool enable)
adcx config
Definition: hpm_qeiv2_drv.h:1375
static void qeiv2_set_pulse1_num(QEIV2_Type *qeiv2_x, uint32_t pulse_num)
set pulse1 value
Definition: hpm_qeiv2_drv.h:1032
void qeiv2_config_pause(QEIV2_Type *qeiv2_x, qeiv2_pause_config_t *config)
config pause signal
Definition: hpm_qeiv2_drv.c:67
static void qeiv2_clear_counter_when_dir_chg(QEIV2_Type *qeiv2_x, bool enable)
enable or disable clear counter if detect direction change
Definition: hpm_qeiv2_drv.h:1359
static uint32_t qeiv2_get_current_count(QEIV2_Type *qeiv2_x, qeiv2_counter_type_t type)
get current counter value
Definition: hpm_qeiv2_drv.h:769
void qeiv2_config_filter(QEIV2_Type *qeiv2_x, qeiv2_filter_phase_t phase, bool outinv, qeiv2_filter_mode_t mode, bool sync, uint32_t filtlen)
config signal filter
Definition: hpm_qeiv2_drv.c:196
static void qeiv2_disable_snap(QEIV2_Type *qeiv2_x)
disable snap
Definition: hpm_qeiv2_drv.h:406
static void qeiv2_config_adcy(QEIV2_Type *qeiv2_x, qeiv2_adc_config_t *config, bool enable)
adcy config
Definition: hpm_qeiv2_drv.h:1396
void qeiv2_get_uvw_position_defconfig(qeiv2_uvw_config_t *config)
get uvw position default config
Definition: hpm_qeiv2_drv.c:131
static void qeiv2_config_position_timeout(QEIV2_Type *qeiv2_x, uint32_t tm, bool enable)
config position timeout for mmc module
Definition: hpm_qeiv2_drv.h:1621
@ qeiv2_uvw_pos_opt_current
Definition: hpm_qeiv2_drv.h:127
@ qeiv2_uvw_pos_opt_next
Definition: hpm_qeiv2_drv.h:128
@ qeiv2_filter_phase_h
Definition: hpm_qeiv2_drv.h:117
@ qeiv2_filter_phase_z
Definition: hpm_qeiv2_drv.h:116
@ qeiv2_filter_phase_f
Definition: hpm_qeiv2_drv.h:119
@ qeiv2_filter_phase_b
Definition: hpm_qeiv2_drv.h:115
@ qeiv2_filter_phase_h2
Definition: hpm_qeiv2_drv.h:118
@ qeiv2_filter_phase_a
Definition: hpm_qeiv2_drv.h:114
@ qeiv2_filter_mode_bypass
Definition: hpm_qeiv2_drv.h:102
@ qeiv2_filter_mode_burr
Definition: hpm_qeiv2_drv.h:103
@ qeiv2_filter_mode_delay
Definition: hpm_qeiv2_drv.h:104
@ qeiv2_filter_mode_peak
Definition: hpm_qeiv2_drv.h:105
@ qeiv2_filter_mode_valley
Definition: hpm_qeiv2_drv.h:106
@ qeiv2_counter_type_phase
Definition: hpm_qeiv2_drv.h:92
@ qeiv2_counter_type_timer
Definition: hpm_qeiv2_drv.h:94
@ qeiv2_counter_type_speed
Definition: hpm_qeiv2_drv.h:93
@ qeiv2_counter_type_z
Definition: hpm_qeiv2_drv.h:91
@ qeiv2_work_mode_single
Definition: hpm_qeiv2_drv.h:45
@ qeiv2_work_mode_pd
Definition: hpm_qeiv2_drv.h:42
@ qeiv2_work_mode_sincos
Definition: hpm_qeiv2_drv.h:47
@ qeiv2_work_mode_abz
Definition: hpm_qeiv2_drv.h:41
@ qeiv2_work_mode_uvw
Definition: hpm_qeiv2_drv.h:44
@ qeiv2_work_mode_sin
Definition: hpm_qeiv2_drv.h:46
@ qeiv2_work_mode_ud
Definition: hpm_qeiv2_drv.h:43
@ qeiv2_z_count_inc_on_z_input_assert
Definition: hpm_qeiv2_drv.h:82
@ qeiv2_z_count_inc_on_phase_count_max
Definition: hpm_qeiv2_drv.h:83
@ qeiv2_uvw_pos0
Definition: hpm_qeiv2_drv.h:148
@ qeiv2_uvw_pos3
Definition: hpm_qeiv2_drv.h:151
@ qeiv2_uvw_pos1
Definition: hpm_qeiv2_drv.h:149
@ qeiv2_uvw_pos4
Definition: hpm_qeiv2_drv.h:152
@ qeiv2_uvw_pos2
Definition: hpm_qeiv2_drv.h:150
@ qeiv2_uvw_pos5
Definition: hpm_qeiv2_drv.h:153
@ qeiv2_spd_tmr_as_spd_tm
Definition: hpm_qeiv2_drv.h:55
@ qeiv2_spd_tmr_as_pos_angle
Definition: hpm_qeiv2_drv.h:56
@ qeiv2_pos_dir_decrease
Definition: hpm_qeiv2_drv.h:73
@ qeiv2_pos_dir_increase
Definition: hpm_qeiv2_drv.h:74
@ qeiv2_rotate_dir_forward
Definition: hpm_qeiv2_drv.h:64
@ qeiv2_rotate_dir_reverse
Definition: hpm_qeiv2_drv.h:65
@ qeiv2_uvw_pos_sel_low
Definition: hpm_qeiv2_drv.h:132
@ qeiv2_uvw_pos_sel_high
Definition: hpm_qeiv2_drv.h:133
@ qeiv2_uvw_pos_sel_edge
Definition: hpm_qeiv2_drv.h:134
Definition: hpm_qeiv2_regs.h:12
__RW uint32_t PHCFG
Definition: hpm_qeiv2_regs.h:14
__RW uint32_t ADCX_CFG2
Definition: hpm_qeiv2_regs.h:68
__R uint32_t CYCLE1_SNAP1
Definition: hpm_qeiv2_regs.h:49
__RW uint32_t CYCLE1_NUM
Definition: hpm_qeiv2_regs.h:52
__R uint32_t PULSE0CYCLE_SNAP0
Definition: hpm_qeiv2_regs.h:58
struct QEIV2_Type::@333 COUNT[4]
__RW uint32_t SPDCMP
Definition: hpm_qeiv2_regs.h:21
__R uint32_t CYCLE0_SNAP1
Definition: hpm_qeiv2_regs.h:47
__RW uint32_t TOGI_CFG0
Definition: hpm_qeiv2_regs.h:97
__RW uint32_t ADCX_VAL_SW
Definition: hpm_qeiv2_regs.h:73
__R uint32_t PULSE0_SNAP0
Definition: hpm_qeiv2_regs.h:57
__RW uint32_t PULSE0_NUM
Definition: hpm_qeiv2_regs.h:40
__RW uint32_t ZCMP2
Definition: hpm_qeiv2_regs.h:32
__R uint32_t ANGLE
Definition: hpm_qeiv2_regs.h:87
__RW uint32_t PHIDX
Definition: hpm_qeiv2_regs.h:16
__RW uint32_t PHASE_CNT
Definition: hpm_qeiv2_regs.h:83
__RW uint32_t PHASE_PARAM
Definition: hpm_qeiv2_regs.h:76
__W uint32_t POSITION_UPDATE
Definition: hpm_qeiv2_regs.h:86
__RW uint32_t CYCLE0_NUM
Definition: hpm_qeiv2_regs.h:51
__RW uint32_t WDGCFG
Definition: hpm_qeiv2_regs.h:15
__RW uint32_t IRQEN
Definition: hpm_qeiv2_regs.h:24
__R uint32_t CYCLE1_SNAP0
Definition: hpm_qeiv2_regs.h:48
__RW uint32_t ADCX_CFG1
Definition: hpm_qeiv2_regs.h:67
__R uint32_t PULSE0CYCLE_SNAP1
Definition: hpm_qeiv2_regs.h:60
__RW uint32_t POS_THRESHOLD
Definition: hpm_qeiv2_regs.h:78
__RW uint32_t TRGOEN
Definition: hpm_qeiv2_regs.h:17
__R uint32_t PULSE1_SNAP0
Definition: hpm_qeiv2_regs.h:61
__RW uint32_t ADCY_CFG1
Definition: hpm_qeiv2_regs.h:71
__RW uint32_t POS_ADJ
Definition: hpm_qeiv2_regs.h:82
__RW uint32_t PULSE1_NUM
Definition: hpm_qeiv2_regs.h:41
__RW uint32_t DMAEN
Definition: hpm_qeiv2_regs.h:22
__RW uint32_t PHCMP
Definition: hpm_qeiv2_regs.h:20
__RW uint32_t ADCY_CFG2
Definition: hpm_qeiv2_regs.h:72
__RW uint32_t PHCMP2
Definition: hpm_qeiv2_regs.h:33
__RW uint32_t UVW_POS_CFG[6]
Definition: hpm_qeiv2_regs.h:81
__RW uint32_t POSITION
Definition: hpm_qeiv2_regs.h:85
__RW uint32_t ZCMP
Definition: hpm_qeiv2_regs.h:19
__RW uint32_t UVW_POS[6]
Definition: hpm_qeiv2_regs.h:80
__RW uint32_t CAL_CFG
Definition: hpm_qeiv2_regs.h:74
__R uint32_t PULSE1CYCLE_SNAP1
Definition: hpm_qeiv2_regs.h:64
__RW uint32_t READEN
Definition: hpm_qeiv2_regs.h:18
__W uint32_t PHASE_UPDATE
Definition: hpm_qeiv2_regs.h:84
__RW uint32_t MATCH_CFG
Definition: hpm_qeiv2_regs.h:35
__RW uint32_t ADCY_VAL_SW
Definition: hpm_qeiv2_regs.h:77
__R uint32_t PULSE1CYCLE_SNAP0
Definition: hpm_qeiv2_regs.h:62
__RW uint32_t POS_TIMEOUT
Definition: hpm_qeiv2_regs.h:88
__RW uint32_t CR
Definition: hpm_qeiv2_regs.h:13
__RW uint32_t SPDCMP2
Definition: hpm_qeiv2_regs.h:34
__RW uint32_t Z
Definition: hpm_qeiv2_regs.h:26
__RW uint32_t ADC_INJECT_CTRL
Definition: hpm_qeiv2_regs.h:79
__RW uint32_t ADCY_CFG0
Definition: hpm_qeiv2_regs.h:70
__RW uint32_t ADCX_CFG0
Definition: hpm_qeiv2_regs.h:66
__R uint32_t PULSE0_SNAP1
Definition: hpm_qeiv2_regs.h:59
__RW uint32_t SR
Definition: hpm_qeiv2_regs.h:23
__R uint32_t CALC_STATE
Definition: hpm_qeiv2_regs.h:95
__R uint32_t PULSE1_SNAP1
Definition: hpm_qeiv2_regs.h:63
__RW uint32_t QEI_CFG
Definition: hpm_qeiv2_regs.h:38
__R uint32_t CYCLE0_SNAP0
Definition: hpm_qeiv2_regs.h:46
adc config structure
Definition: hpm_qeiv2_drv.h:236
uint8_t adc_channel
Definition: hpm_qeiv2_drv.h:238
uint8_t adc_select
Definition: hpm_qeiv2_drv.h:237
int16_t param0
Definition: hpm_qeiv2_drv.h:239
int16_t param1
Definition: hpm_qeiv2_drv.h:240
uint32_t offset
Definition: hpm_qeiv2_drv.h:241
qeiv2 H phase config structure
Definition: hpm_qeiv2_drv.h:179
bool h_fall_dir_forward
Definition: hpm_qeiv2_drv.h:180
bool h_rise_dir_reverse
Definition: hpm_qeiv2_drv.h:183
bool h2_rise_dir_reverse
Definition: hpm_qeiv2_drv.h:187
bool h2_fall_dir_reverse
Definition: hpm_qeiv2_drv.h:185
bool h2_rise_dir_forward
Definition: hpm_qeiv2_drv.h:186
bool h2_fall_dir_forward
Definition: hpm_qeiv2_drv.h:184
bool h_rise_dir_forward
Definition: hpm_qeiv2_drv.h:182
bool h_fall_dir_reverse
Definition: hpm_qeiv2_drv.h:181
qeiv2 mode config structure
Definition: hpm_qeiv2_drv.h:166
uint32_t phcnt_max
Definition: hpm_qeiv2_drv.h:170
uint32_t phcnt_idx
Definition: hpm_qeiv2_drv.h:173
qeiv2_spd_tmr_content_t spd_tmr_content_sel
Definition: hpm_qeiv2_drv.h:168
qeiv2_work_mode_t work_mode
Definition: hpm_qeiv2_drv.h:167
qeiv2 pause config structure
Definition: hpm_qeiv2_drv.h:193
bool pause_valid_pause_phcnt
Definition: hpm_qeiv2_drv.h:196
bool pause_valid_pause_position
Definition: hpm_qeiv2_drv.h:194
bool pause_valid_pause_spdcnt
Definition: hpm_qeiv2_drv.h:195
bool pause_valid_pause_zcnt
Definition: hpm_qeiv2_drv.h:197
phase counter compare match config structure
Definition: hpm_qeiv2_drv.h:204
bool ignore_zcmp
Definition: hpm_qeiv2_drv.h:208
qeiv2_rotate_dir_t rotate_dir
Definition: hpm_qeiv2_drv.h:207
uint32_t zcmp_value
Definition: hpm_qeiv2_drv.h:209
uint32_t phcnt_cmp_value
Definition: hpm_qeiv2_drv.h:205
bool ignore_rotate_dir
Definition: hpm_qeiv2_drv.h:206
position compare match config structure
Definition: hpm_qeiv2_drv.h:216
uint32_t pos_cmp_value
Definition: hpm_qeiv2_drv.h:217
qeiv2_position_dir_t pos_dir
Definition: hpm_qeiv2_drv.h:219
bool ignore_pos_dir
Definition: hpm_qeiv2_drv.h:218
uvw config structure
Definition: hpm_qeiv2_drv.h:225
qeiv2_uvw_pos_opt_t pos_opt
Definition: hpm_qeiv2_drv.h:226