AM263Px MCU+ SDK  09.01.00
resolver/v0/resolver.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
42 #ifndef RESOLVER_V1_H_
43 #define RESOLVER_V1_H_
44 
45 //*****************************************************************************
46 //
47 // If building with a C++ compiler, make all of the definitions in this header
48 // have a C binding.
49 //
50 //*****************************************************************************
51 #ifdef __cplusplus
52 extern "C"
53 {
54 #endif
55 
56 //*****************************************************************************
57 //
59 //
60 //*****************************************************************************
61 #include <stdint.h>
62 #include <stdbool.h>
63 #include <drivers/hw_include/hw_types.h>
64 #include <drivers/hw_include/cslr_soc.h>
65 #include <kernel/dpl/DebugP.h>
66 #include <drivers/hw_include/cslr_resolver.h>
67 
68 //*****************************************************************************
69 //
70 // Defines for the API.
71 //
72 //*****************************************************************************
73 //*****************************************************************************
74 //
76 //
77 //*****************************************************************************
78 #define RDC_CORE_OFFSET (CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_1 - CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_0)
79 
82 #define RDC_EXCITATION_FREQUENCY_MIN_PHASE (0U)
83 
85 #define RDC_EXCITATION_FREQUENCY_MAX_PHASE (7999U)
86 
89 #define RDC_MAX_EXCITATION_AMPLITUDE (249U)
90 
93 #define RDC_RESOLVER_CORE0 (0U)
94 
96 #define RDC_RESOLVER_CORE1 (1U)
97 
98 
99 #define RDC_ADC_CAL_CHANNEL0 (0U)
100 #define RDC_ADC_CAL_CHANNEL1 (1U)
101 #define RDC_ADC_CAL_CHANNEL2 (2U)
102 #define RDC_ADC_CAL_CHANNEL3 (3U)
103 
104 
105 #define RDC_DC_OFFSET_SIN_ESTIMATION (0U)
106 #define RDC_DC_OFFSET_COS_ESTIMATION (1U)
107 
108 
109 #define RDC_MIN_IDEAL_SAMPLE_PEAK_AVG_LIMIT (0U)
110 #define RDC_MAX_IDEAL_SAMPLE_PEAK_AVG_LIMIT (7U)
111 
112 #define RDC_MAX_IDEAL_SAMPLE_BPF_ADJUST (0x0000001FU)
113 
114 #define RDC_SINGALMODE_SINGLE_ENDED (0U)
115 #define RDC_SINGALMODE_DIFFERENTIAL_ENDED (1U)
116 
117 
118 //*****************************************************************************
119 //
123 //
124 //*****************************************************************************
127 #define RDC_ADC_BURST_COUNT_DISABLE (1U)
128 
130 #define RDC_ADC_BURST_COUNT_2 (2U)
131 
133 #define RDC_ADC_BURST_COUNT_4 (4U)
134 
136 #define RDC_ADC_BURST_COUNT_8 (8U)
137 
139 #define RDC_ADC_BURST_COUNT_16 (16U)
140 
142 #define RDC_ADC_BURST_COUNT_32 (32U)
143 
144 
145 //*****************************************************************************
146 //
150 //
152 //
153 //*****************************************************************************
157 #define RDC_SEQUENCER_MODE_0 (0U)
158 
161 #define RDC_SEQUENCER_MODE_1 (1U)
162 
166 #define RDC_SEQUENCER_MODE_2 (2U)
167 
174 #define RDC_SEQUENCER_MODE_3 (3U)
175 
182 #define RDC_SEQUENCER_MODE_4 (4U)
183 
189 #define RDC_SEQUENCER_MODE_5 (5U)
190 
191 
192 //*****************************************************************************
193 //
197 //
199 //
200 //*****************************************************************************
203 #define RDC_EXCITATION_FREQUENCY_5K (50)
204 
206 #define RDC_EXCITATION_FREQUENCY_10K (100)
207 
209 #define RDC_EXCITATION_FREQUENCY_20K (200)
210 
211 
212 //*****************************************************************************
213 //
217 //
219 //
220 //*****************************************************************************
225 #define OVERSAMPLING_RATIO_16 (8)
226 
230 #define OVERSAMPLING_RATIO_20 (10)
231 
232 //*****************************************************************************
233 //
238 //
241 //
242 //*****************************************************************************
247 #define RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR (0x00000001U)
248 #define RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_COS_FAULT_ERR (0x00000002U)
249 #define RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_SIN_FAULT_ERR (0x00000004U)
250 #define RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR (0x00000008U)
251 #define RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR (0x00000010U)
252 #define RDC_INTERRUPT_SOURCE_COS_MULTI_ZC_ERROR_ERR (0x00000020U)
253 #define RDC_INTERRUPT_SOURCE_SIN_MULTI_ZC_ERROR_ERR (0x00000040U)
254 #define RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR (0x00000080U)
255 #define RDC_INTERRUPT_SOURCE_COS_POS_ZC_PEAK_MISMATCH_ERR (0x00000100U)
256 #define RDC_INTERRUPT_SOURCE_SIN_NEG_ZC_PEAK_MISMATCH_ERR (0x00000200U)
257 #define RDC_INTERRUPT_SOURCE_SIN_POS_ZC_PEAK_MISMATCH_ERR (0x00000400U)
258 #define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_SIN_LO_ERR (0x00000800U)
259 #define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_COS_LO_ERR (0x00001000U)
260 #define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR (0x00002000U)
261 #define RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR (0x00004000U)
262 #define RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR (0x00008000U)
263 #define RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR (0x00010000U)
264 #define RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR (0x00020000U)
265 #define RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR (0x00040000U)
266 #define RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR (0x00080000U)
267 #define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_LO_ERR (0x00100000U)
268 #define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_HI_ERR (0x00200000U)
269 #define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_LO_ERR (0x00400000U)
270 #define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_HI_ERR (0x00800000U)
271 #define RDC_INTERRUPT_SOURCE_TRACK_LOCK_ERR (0x01000000U)
272 
273 #define RDC_INTERRUPT_SOURCE_ALL (RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR | \
274  RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_COS_FAULT_ERR | \
275  RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_SIN_FAULT_ERR | \
276  RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR | \
277  RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR | \
278  RDC_INTERRUPT_SOURCE_COS_MULTI_ZC_ERROR_ERR | \
279  RDC_INTERRUPT_SOURCE_SIN_MULTI_ZC_ERROR_ERR | \
280  RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR | \
281  RDC_INTERRUPT_SOURCE_COS_POS_ZC_PEAK_MISMATCH_ERR | \
282  RDC_INTERRUPT_SOURCE_SIN_NEG_ZC_PEAK_MISMATCH_ERR | \
283  RDC_INTERRUPT_SOURCE_SIN_POS_ZC_PEAK_MISMATCH_ERR | \
284  RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_SIN_LO_ERR | \
285  RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_COS_LO_ERR | \
286  RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR | \
287  RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR | \
288  RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR | \
289  RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR | \
290  RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR | \
291  RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR | \
292  RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR | \
293  RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_LO_ERR | \
294  RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_HI_ERR | \
295  RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_LO_ERR | \
296  RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_HI_ERR | \
297  RDC_INTERRUPT_SOURCE_TRACK_LOCK_ERR)
298 
299 //*****************************************************************************
300 //
304 //
305 //*****************************************************************************
308 #define RDC_CAL_ADC0 (0U)
309 
311 #define RDC_CAL_ADC1 (1U)
312 
313 //*****************************************************************************
314 //
318 //
319 //*****************************************************************************
323 #define RDC_IDEAL_SAMPLE_TIME_MODE_0_AUTO_DETECT (0U)
324 
327 #define RDC_IDEAL_SAMPLE_TIME_MODE_1_AUTO_DETECT_ON_SIN (1U)
328 
331 #define RDC_IDEAL_SAMPLE_TIME_MODE_2_AUTO_DETECT_ON_COS (2U)
332 
335 #define RDC_IDEAL_SAMPLE_TIME_MODE_3_AUTO_DETECT_OFF (3U)
336 
337 //*****************************************************************************
338 //
342 //
343 //*****************************************************************************
344 
349 typedef struct
350 {
351  uint8_t kvelfilt;
353 
354 //*****************************************************************************
355 //
360 //
361 //*****************************************************************************
366 typedef struct
367 {
376 
377 //*****************************************************************************
378 //
383 //
384 //*****************************************************************************
389 typedef struct
390 {
400 
401 //*****************************************************************************
402 //
407 //
408 //*****************************************************************************
413 typedef struct
414 {
422 
423 //*****************************************************************************
424 //
429 //
430 //*****************************************************************************
435 typedef struct
436 {
441  uint16_t excfreq_level;
448 
449 //*****************************************************************************
450 //
455 //
456 //*****************************************************************************
461 typedef struct
462 {
471  uint16_t rotpeak_level;
472  uint16_t rotfreq_level;
475 
476 
477 //*****************************************************************************
478 //
483 //
484 //*****************************************************************************
489 typedef struct
490 {
499 
500 //*****************************************************************************
501 //
506 //
507 //*****************************************************************************
512 typedef struct
513 {
521 
522 //*****************************************************************************
523 //
528 //
529 //*****************************************************************************
534 typedef struct
535 {
542 
543 
544 //*****************************************************************************
545 //
550 //
551 //*****************************************************************************
563 typedef struct
564 {
565  int16_t cos_adc;
566  int16_t sin_adc;
567  int16_t cos_rec;
568  int16_t sin_rec;
569  int16_t cos_dc;
570  int16_t sin_dc;
571  int16_t cos_pgc;
572  int16_t sin_pgc;
574 
575 
581 typedef struct
582 {
589 
595 
598 
604 
607 
615 typedef struct
616 {
619  uint8_t Input_socWidth;
622 
623  uint8_t ExcFrq_freqSel;
624  uint16_t ExcFrq_phase;
627  uint16_t ExcFrq_socDelay;
628 
631 
635 
637 
643 typedef struct
644 {
645  uint8_t adcParam1;
646  uint8_t IdealParam2;
647  uint8_t DcParam3;
648  uint16_t PgParam4;
649  uint8_t t2Param5;
650  uint8_t t2Param6;
651  uint8_t t2Param7;
652  uint8_t t2Param8;
653  bool t2Param9;
655 
656 //*****************************************************************************
657 //
661 //
662 //*****************************************************************************
669 typedef struct
670 {
671  uint8_t peakHistgoramBucket[20];
673 
674 //*****************************************************************************
675 // GLOBAL CONFIGURATIONS
676 //*****************************************************************************
683  static inline void
684  RDC_setAdcSocWidth(uint32_t base, uint8_t socWidth)
685  {
686  HW_WR_REG32(
687  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
688  (HW_RD_REG32(
689  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
690  ~CSL_RESOLVER_REGS_GLOBAL_CFG_SOC_WIDTH_MASK) |
691  (((uint8_t)socWidth) << CSL_RESOLVER_REGS_GLOBAL_CFG_SOC_WIDTH_SHIFT));
692  }
706  static inline void
707  RDC_setAdcBurstCount(uint32_t base, uint8_t burstCount)
708  {
709  HW_WR_REG32(
710  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
711  (HW_RD_REG32(
712  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
713  ~CSL_RESOLVER_REGS_GLOBAL_CFG_BURST_CNT_MASK) |
714  ((uint32_t)(((uint8_t)burstCount) << CSL_RESOLVER_REGS_GLOBAL_CFG_BURST_CNT_SHIFT)));
715  }
716 
723  static inline void
725  {
726  HW_WR_REG32(
727  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
728  (HW_RD_REG32(
729  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
730  ~CSL_RESOLVER_REGS_GLOBAL_CFG_SINGLE_EN_MASK) |
731  ((uint32_t)((1U) << CSL_RESOLVER_REGS_GLOBAL_CFG_SINGLE_EN_SHIFT)));
732  }
733 
740  static inline void
742  {
743  HW_WR_REG32(
744  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
745  (HW_RD_REG32(
746  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
747  ~CSL_RESOLVER_REGS_GLOBAL_CFG_SINGLE_EN_MASK));
748  }
749 
750 
769  static inline uint32_t
771  {
772  return ((HW_RD_REG32(
773  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
774  CSL_RESOLVER_REGS_GLOBAL_CFG_MODE_MASK) >>
775  CSL_RESOLVER_REGS_GLOBAL_CFG_MODE_SHIFT);
776  }
777 
797  static inline void
798  RDC_setAdcSequencerOperationalMode(uint32_t base, uint8_t operationalMode)
799  {
801  (operationalMode >= RDC_SEQUENCER_MODE_0) &&
802  (operationalMode <= RDC_SEQUENCER_MODE_5));
803 
804  HW_WR_REG32(
805  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
806  (HW_RD_REG32(
807  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
808  ~CSL_RESOLVER_REGS_GLOBAL_CFG_MODE_MASK) |
809  ((uint32_t)((operationalMode) << CSL_RESOLVER_REGS_GLOBAL_CFG_MODE_SHIFT)));
810  }
817  static inline void
818  RDC_enableResolver(uint32_t base)
819  {
820  HW_WR_REG32(
821  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
822  (HW_RD_REG32(
823  base + CSL_RESOLVER_REGS_GLOBAL_CFG) &
824  ~CSL_RESOLVER_REGS_GLOBAL_CFG_MASTER_EN_MASK) |
825  ((uint32_t)((1U) << CSL_RESOLVER_REGS_GLOBAL_CFG_MASTER_EN_SHIFT)));
826  }
833  static inline void
834  RDC_disableResolver(uint32_t base)
835  {
836  HW_WR_REG32(
837  base + CSL_RESOLVER_REGS_GLOBAL_CFG,
838  (HW_RD_REG32(
839  base + CSL_RESOLVER_REGS_GLOBAL_CFG) |
840  CSL_RESOLVER_REGS_GLOBAL_CFG_MASTER_EN_MASK) &
841  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_GLOBAL_CFG_MASTER_EN_SHIFT)));
842  }
843 
844 //*****************************************************************************
845 // EXCITATION FREQUENCY AND SAMPLING CONFIGURATIONS
846 //*****************************************************************************
847 
855  static inline void
856  RDC_setExcitationSignalPhase(uint32_t base, uint16_t phase)
857  {
860  HW_WR_REG32(
861  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1,
862  (HW_RD_REG32(
863  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1) &
864  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_PHASE_CFG_MASK) |
865  ((uint32_t)(phase << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_PHASE_CFG_SHIFT)));
866  }
867 
875  static inline uint32_t
877  {
878  return (
879  (HW_RD_REG32(
880  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1) &
881  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_PHASE_CFG_MASK) >>
882  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_PHASE_CFG_SHIFT);
883  }
884 
894  static inline void
895  RDC_setExcitationSignalFrequencySelect(uint32_t base, uint8_t FrequencySel)
896  {
898  (FrequencySel == RDC_EXCITATION_FREQUENCY_5K) ||
899  (FrequencySel == RDC_EXCITATION_FREQUENCY_10K) ||
900  (FrequencySel == RDC_EXCITATION_FREQUENCY_20K));
901  HW_WR_REG32(
902  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1,
903  (HW_RD_REG32(
904  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1) &
905  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_SEL_MASK) |
906  ((uint32_t)(FrequencySel << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_SEL_SHIFT)));
907  }
908 
918  static inline uint32_t
920  {
921  return (
922  (HW_RD_REG32(
923  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1) &
924  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_SEL_MASK) >>
925  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_EXC_FREQ_SEL_SHIFT);
926  }
927 
934  static inline uint32_t
935  RDC_getAdcSampleRate(uint32_t base)
936  {
937  return (
938  (HW_RD_REG32(
939  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1) &
940  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_ADC_SAMPLE_RATE_MASK) >>
941  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG1_ADC_SAMPLE_RATE_SHIFT);
942  }
943 
949  static inline void
951  {
952  HW_WR_REG32(
953  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2,
954  (HW_RD_REG32(
955  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) &
956  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EN_MASK) |
957  ((uint32_t)((1U) << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EN_SHIFT)));
958  }
959 
965  static inline void
967  {
968  HW_WR_REG32(
969  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2,
970  (HW_RD_REG32(
971  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) |
972  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EN_MASK) &
973  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EN_SHIFT)));
974  }
975 
986  static inline uint32_t
988  {
989  return (
990  (HW_RD_REG32(
991  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) &
992  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EVENT_MASK) >>
993  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EVENT_SHIFT);
994  }
995 
1001  static inline void
1003  {
1004  HW_WR_REG32(
1005  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2,
1006  (HW_RD_REG32(
1007  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) &
1008  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EVENT_MASK) |
1009  ((uint32_t)((1U) << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_SYNC_IN_EVENT_SHIFT)));
1010  }
1011 
1019  static inline uint32_t
1021  {
1022  return (
1023  (HW_RD_REG32(
1024  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) &
1025  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_PHASE_INFO_MASK) >>
1026  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_PHASE_INFO_SHIFT);
1027  }
1028 
1035  static inline void
1036  RDC_setExcitationSignalSocDelay(uint32_t base, uint16_t socDelay)
1037  {
1038  HW_WR_REG32(
1039  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2,
1040  (HW_RD_REG32(
1041  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2) &
1042  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_TO_SOC_DLY_START_MASK) |
1043  ((uint32_t)(socDelay << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG2_PWM_TO_SOC_DLY_START_SHIFT)));
1044  }
1045 
1046 
1047 
1054  static inline void
1055  RDC_setExcitationSignalAmplitudeControl(uint32_t base, uint8_t amplitude)
1056  {
1058  HW_WR_REG32(
1059  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3,
1060  (HW_RD_REG32(
1061  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3) &
1062  ~CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3_EXC_AMP_CTRL_MASK) |
1063  ((uint32_t)(amplitude << CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3_EXC_AMP_CTRL_SHIFT)));
1064  }
1065 
1072  static inline uint32_t
1074  {
1075  return (
1076  (HW_RD_REG32(
1077  base + CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3) &
1078  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3_EXC_AMP_CTRL_MASK) >>
1079  CSL_RESOLVER_REGS_EXCIT_SAMPLE_CFG3_EXC_AMP_CTRL_SHIFT);
1080  }
1081 
1082  //*****************************************************************************
1083  // INTERRUPT CONFIGURATIONS
1084  //*****************************************************************************
1085 
1091  static inline void
1093  {
1094  HW_WR_REG32(
1095  base + CSL_RESOLVER_REGS_IRQSTATUS_SYS,
1096  (HW_RD_REG32(
1097  base + CSL_RESOLVER_REGS_IRQSTATUS_SYS) &
1098  ~CSL_RESOLVER_REGS_IRQSTATUS_SYS_SEQ_ERR_MASK) |
1099  ((uint32_t)((1U) << CSL_RESOLVER_REGS_IRQSTATUS_SYS_SEQ_ERR_SHIFT)));
1100  }
1101 
1107  static inline void
1109  {
1110  HW_WR_REG32(
1111  base + CSL_RESOLVER_REGS_IRQENABLE_CLR_SYS,
1112  (HW_RD_REG32(
1113  base + CSL_RESOLVER_REGS_IRQENABLE_CLR_SYS) &
1114  ~CSL_RESOLVER_REGS_IRQENABLE_CLR_SYS_SEQ_ERR_MASK) |
1115  ((uint32_t)((1U) << CSL_RESOLVER_REGS_IRQENABLE_CLR_SYS_SEQ_ERR_SHIFT)));
1116  }
1117 
1123  static inline void
1125  {
1126  HW_WR_REG32(
1127  base + CSL_RESOLVER_REGS_IRQSTATUS_SYS,
1128  (HW_RD_REG32(
1129  base + CSL_RESOLVER_REGS_IRQSTATUS_SYS) &
1130  ~CSL_RESOLVER_REGS_IRQSTATUS_SYS_SEQ_ERR_MASK) |
1131  ((uint32_t)((1U) << CSL_RESOLVER_REGS_IRQSTATUS_SYS_SEQ_ERR_SHIFT)));
1132  }
1133 
1139  static inline void
1141  {
1142  HW_WR_REG32(
1143  base + CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS,
1144  (HW_RD_REG32(
1145  base + CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS) &
1146  ~CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_SEQ_ERR_MASK) |
1147  ((uint32_t)((1U) << CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_SEQ_ERR_SHIFT)));
1148  }
1149 
1155  static inline uint32_t
1157  {
1158  return (
1159  (HW_RD_REG32(
1160  base + CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS) &
1161  ~CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_SEQ_ERR_MASK) |
1162  ((uint32_t)((1U) << CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_SEQ_ERR_SHIFT)));
1163  }
1164 
1165 
1173  static inline void
1174  RDC_enableCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
1175  {
1176  DebugP_assert((ResolverCore == RDC_RESOLVER_CORE0) || (ResolverCore == RDC_RESOLVER_CORE1));
1177  DebugP_assert((interruptSource & (~((uint32_t)RDC_INTERRUPT_SOURCE_ALL))) == 0);
1178 
1179  uint32_t regOffset = CSL_RESOLVER_REGS_IRQENABLE_SET_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1180 
1181  HW_WR_REG32(
1182  base + regOffset,
1183  HW_RD_REG32(
1184  base + regOffset) |
1185  ((uint32_t)interruptSource));
1186  }
1187 
1195  static inline uint32_t
1196  RDC_getCoreEnabledInterruptSources(uint32_t base, uint8_t ResolverCore)
1197  {
1198  uint32_t regOffset = CSL_RESOLVER_REGS_IRQENABLE_SET_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1199  return (
1200  HW_RD_REG32(
1201  base + regOffset));
1202  }
1203 
1211  static inline void
1212  RDC_disableCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
1213  {
1214  DebugP_assert((ResolverCore == RDC_RESOLVER_CORE0) || (ResolverCore == RDC_RESOLVER_CORE1));
1215  DebugP_assert((interruptSource & (~((uint32_t)RDC_INTERRUPT_SOURCE_ALL))) == 0);
1216 
1217  uint32_t regOffset = CSL_RESOLVER_REGS_IRQENABLE_CLR_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1218 
1219  HW_WR_REG32(
1220  base + regOffset,
1221  HW_RD_REG32(
1222  base + regOffset) |
1223  ((uint32_t)interruptSource));
1224  }
1225 
1233  static inline void
1234  RDC_clearCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
1235  {
1236  DebugP_assert((ResolverCore == RDC_RESOLVER_CORE0) || (ResolverCore == RDC_RESOLVER_CORE1));
1237  DebugP_assert((interruptSource & (~((uint32_t)RDC_INTERRUPT_SOURCE_ALL))) == 0);
1238 
1239  uint32_t regOffset = CSL_RESOLVER_REGS_IRQSTATUS_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1240 
1241  HW_WR_REG32(
1242  base + regOffset,
1243  (HW_RD_REG32(
1244  base + regOffset) &
1245  ~((uint32_t)RDC_INTERRUPT_SOURCE_ALL)) |
1246  interruptSource);
1247  }
1248 
1256  static inline void
1257  RDC_forceCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
1258  {
1259  DebugP_assert((ResolverCore == RDC_RESOLVER_CORE0) || (ResolverCore == RDC_RESOLVER_CORE1));
1260  DebugP_assert((interruptSource & (~((uint32_t)RDC_INTERRUPT_SOURCE_ALL))) == 0);
1261 
1262  uint32_t regOffset = CSL_RESOLVER_REGS_IRQSTATUS_RAW_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1263 
1264  HW_WR_REG32(
1265  base + regOffset,
1266  (HW_RD_REG32(
1267  base + regOffset) &
1268  ~((uint32_t)RDC_INTERRUPT_SOURCE_ALL)) |
1269  interruptSource);
1270  }
1271 
1278  static inline uint32_t
1279  RDC_getCoreInterruptStatus(uint32_t base, uint32_t ResolverCore)
1280  {
1281  DebugP_assert((ResolverCore == RDC_RESOLVER_CORE0) || (ResolverCore == RDC_RESOLVER_CORE1));
1282 
1283  uint32_t regOffset = CSL_RESOLVER_REGS_IRQSTATUS_SYS_0 + (ResolverCore * RDC_CORE_OFFSET);
1284 
1285  return (
1286  (HW_RD_REG32(
1287  base + regOffset) &
1288  ((uint32_t)RDC_INTERRUPT_SOURCE_ALL)));
1289  }
1290 
1291  //*****************************************************************************
1292  // CALIBRATION CONFIGURATIONS
1293  //*****************************************************************************
1294 
1301  static inline bool
1303  {
1304  return (
1305  (((HW_RD_REG32(
1306  base + CSL_RESOLVER_REGS_CAL_CFG) &
1307  CSL_RESOLVER_REGS_CAL_CFG_CAL_DONE_MASK) >>
1308  CSL_RESOLVER_REGS_CAL_CFG_CAL_DONE_SHIFT) &
1309  (1U)) != 0U);
1310  }
1311 
1317  static inline void
1319  {
1320  HW_WR_REG32(
1321  base + CSL_RESOLVER_REGS_CAL_CFG,
1322  (HW_RD_REG32(
1323  base + CSL_RESOLVER_REGS_CAL_CFG) &
1324  ~CSL_RESOLVER_REGS_CAL_CFG_CAL_DONE_MASK) |
1325  ((uint32_t)((1U) << CSL_RESOLVER_REGS_CAL_CFG_CAL_DONE_SHIFT)));
1326  }
1327 
1334  static inline void
1335  RDC_selectCalibrationChannel(uint32_t base, uint8_t calChannel)
1336  {
1337  HW_WR_REG32(
1338  base + CSL_RESOLVER_REGS_CAL_CFG,
1339  (HW_RD_REG32(
1340  base + CSL_RESOLVER_REGS_CAL_CFG) &
1341  ~CSL_RESOLVER_REGS_CAL_CFG_CAL_CHSEL_MASK) |
1342  ((uint32_t)(calChannel << CSL_RESOLVER_REGS_CAL_CFG_CAL_CHSEL_SHIFT)));
1343  }
1344 
1350  static inline void
1351  RDC_enableCalibration(uint32_t base)
1352  {
1353  HW_WR_REG32(
1354  base + CSL_RESOLVER_REGS_CAL_CFG,
1355  (HW_RD_REG32(
1356  base + CSL_RESOLVER_REGS_CAL_CFG) &
1357  ~CSL_RESOLVER_REGS_CAL_CFG_CAL_EN_MASK) |
1358  ((uint32_t)((1U) << CSL_RESOLVER_REGS_CAL_CFG_CAL_EN_SHIFT)));
1359  }
1360 
1368  static inline uint32_t
1369  RDC_getCalibrationData(uint32_t base, uint8_t CalAdc)
1370  {
1371  uint32_t regData = HW_RD_REG32(
1372  base + CSL_RESOLVER_REGS_CAL_OBS) &
1373  (CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC0_DATA_MASK |
1374  CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC1_DATA_MASK);
1375  if (CalAdc == RDC_CAL_ADC0)
1376  {
1377  return ((regData & CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC0_DATA_MASK) >>
1378  CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC0_DATA_SHIFT);
1379  }
1380  return ((regData & CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC1_DATA_MASK) >>
1381  CSL_RESOLVER_REGS_CAL_OBS_CAL_ADC1_DATA_SHIFT);
1382  }
1383 
1384  //*****************************************************************************
1385  // DC OFFSET AND BAND PASS FILTER CONFIGURATIONS
1386  //*****************************************************************************
1387 
1397  static inline void
1398  RDC_setDcOffsetCalCoef(uint32_t base, uint8_t core, uint8_t coef1, uint8_t coef2)
1399  {
1400  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1401  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG1_0 + (core * RDC_CORE_OFFSET);
1402  uint32_t mask = (CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFF_CAL_COEF1_MASK |
1403  CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFF_CAL_COEF2_MASK);
1404 
1405  uint32_t value = (coef1 << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFF_CAL_COEF1_SHIFT) |
1406  (coef2 << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFF_CAL_COEF2_SHIFT);
1407  value &= mask;
1408 
1409  HW_WR_REG32(
1410  base + regOffset,
1411  (HW_RD_REG32(
1412  base + regOffset) &
1413  (~mask)) |
1414  value);
1415  }
1416 
1427  static inline void
1428  RDC_enableBPF(uint32_t base, uint8_t core)
1429  {
1430  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1431  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG1_0 + (core * RDC_CORE_OFFSET);
1432 
1433  HW_WR_REG32(
1434  base + regOffset,
1435  (HW_RD_REG32(
1436  base + regOffset) &
1437  ~CSL_RESOLVER_REGS_DC_OFF_CFG1_0_BANDPASSFILTER_ON_MASK) |
1438  ((uint32_t)((1U) << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_BANDPASSFILTER_ON_SHIFT)));
1439  }
1440 
1447  static inline void
1448  RDC_disableBPF(uint32_t base, uint8_t core)
1449  {
1450  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1451  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG1_0 + (core * RDC_CORE_OFFSET);
1452 
1453  HW_WR_REG32(
1454  base + regOffset,
1455  (HW_RD_REG32(
1456  base + regOffset) |
1457  CSL_RESOLVER_REGS_DC_OFF_CFG1_0_BANDPASSFILTER_ON_MASK) &
1458  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_BANDPASSFILTER_ON_SHIFT)));
1459  }
1460 
1469  static inline void
1470  RDC_disableDcOffsetAutoCorrection(uint32_t base, uint8_t core)
1471  {
1472  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1473  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG1_0 + (core * RDC_CORE_OFFSET);
1474 
1475  HW_WR_REG32(
1476  base + regOffset,
1477  (HW_RD_REG32(
1478  base + regOffset) &
1479  ~CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFFSET_CORR_ON_MASK) |
1480  ((uint32_t)((1U) << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFFSET_CORR_ON_SHIFT)));
1481  }
1482 
1491  static inline void
1492  RDC_enableDcOffsetAutoCorrection(uint32_t base, uint8_t core)
1493  {
1494  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1495  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG1_0 + (core * RDC_CORE_OFFSET);
1496 
1497  HW_WR_REG32(
1498  base + regOffset,
1499  (HW_RD_REG32(
1500  base + regOffset) |
1501  CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFFSET_CORR_ON_MASK) &
1502  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_DC_OFF_CFG1_0_OFFSET_CORR_ON_SHIFT)));
1503  }
1504 
1515  static inline void
1516  RDC_setDcOffsetManualCorrectionValue(uint32_t base, uint8_t core, int16_t sin, int16_t cos)
1517  {
1518  DebugP_assert((core == RDC_RESOLVER_CORE0) || (core == RDC_RESOLVER_CORE1));
1519  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF_CFG2_0 + (core * RDC_CORE_OFFSET);
1520  uint32_t mask = (CSL_RESOLVER_REGS_DC_OFF_CFG2_0_SIN_MAN_OFF_ADJ_MASK |
1521  CSL_RESOLVER_REGS_DC_OFF_CFG2_0_COS_MAN_OFF_ADJ_MASK);
1522 
1523  uint32_t value = (((uint32_t)((uint16_t)sin)) << CSL_RESOLVER_REGS_DC_OFF_CFG2_0_SIN_MAN_OFF_ADJ_SHIFT) |
1524  (((uint32_t)((uint16_t)cos)) << CSL_RESOLVER_REGS_DC_OFF_CFG2_0_COS_MAN_OFF_ADJ_SHIFT);
1525  value &= mask;
1526 
1527  HW_WR_REG32(
1528  base + regOffset,
1529  (HW_RD_REG32(
1530  base + regOffset) &
1531  (~mask)) |
1532  value);
1533  }
1534 
1546  static inline int16_t
1547  RDC_getDcOffsetEstimatedValues(uint32_t base, uint8_t core, uint8_t sinCosValue)
1548  {
1549  uint32_t regOffset = CSL_RESOLVER_REGS_DC_OFF0 + (core * RDC_CORE_OFFSET);
1550  uint32_t mask = CSL_RESOLVER_REGS_DC_OFF0_SIN_OFFSET_MASK | CSL_RESOLVER_REGS_DC_OFF0_COS_OFFSET_MASK;
1551  DebugP_assert((sinCosValue == RDC_DC_OFFSET_SIN_ESTIMATION) || (sinCosValue == RDC_DC_OFFSET_COS_ESTIMATION));
1552  return ((int16_t)(HW_RD_REG32(
1553  base + regOffset) &
1554  mask) >>
1555  (sinCosValue * CSL_RESOLVER_REGS_DC_OFF0_COS_OFFSET_SHIFT));
1556  }
1557 
1558  //*****************************************************************************
1559  // Ideal Sample Time Configurations
1560  //*****************************************************************************
1561 
1570  static inline void
1571  RDC_overrideIdealSampleTime(uint32_t base, uint8_t core, uint8_t overrideValue)
1572  {
1573  uint32_t regOffset = CSL_RESOLVER_REGS_SAMPLE_CFG1_0 + (core * RDC_CORE_OFFSET);
1574  HW_WR_REG32(
1575  base + regOffset,
1576  (HW_RD_REG32(
1577  base + regOffset) &
1578  ~CSL_RESOLVER_REGS_SAMPLE_CFG1_0_IDEAL_SAMPLE_TIME_OVR_MASK) |
1579  ((uint32_t)(overrideValue << CSL_RESOLVER_REGS_SAMPLE_CFG1_0_IDEAL_SAMPLE_TIME_OVR_SHIFT)));
1580  }
1581 
1590  static inline uint8_t
1591  RDC_getIdealSampleTime(uint32_t base, uint8_t core)
1592  {
1593  uint32_t regOffset = CSL_RESOLVER_REGS_SAMPLE_CFG1_0 + (core * RDC_CORE_OFFSET);
1594  return (
1595  (HW_RD_REG32(
1596  base + regOffset) &
1597  CSL_RESOLVER_REGS_SAMPLE_CFG1_0_IDEAL_SAMPLE_TIME_MASK) >>
1598  CSL_RESOLVER_REGS_SAMPLE_CFG1_0_IDEAL_SAMPLE_TIME_SHIFT);
1599  }
1600 
1612  static inline void
1613  RDC_setIdealSampleDetectionThreshold(uint32_t base, uint8_t core, uint16_t absThresholdValue)
1614  {
1615  uint32_t regOffset = CSL_RESOLVER_REGS_SAMPLE_CFG2_0 + (core * RDC_CORE_OFFSET);
1616  HW_WR_REG32(
1617  base + regOffset,
1618  (HW_RD_REG32(
1619  base + regOffset) &
1620  ~CSL_RESOLVER_REGS_SAMPLE_CFG2_0_SAMPLE_DET_THRESHOLD_MASK) |
1621  ((uint32_t)(absThresholdValue << CSL_RESOLVER_REGS_SAMPLE_CFG2_0_SAMPLE_DET_THRESHOLD_SHIFT)));
1622  }
1623 
1633  static inline void
1634  RDC_setIdealSampleBpfAdjust(uint32_t base, uint8_t core, uint8_t sampleAdjustCount)
1635  {
1636  uint32_t regOffset = CSL_RESOLVER_REGS_SAMPLE_CFG2_0 + (core * RDC_CORE_OFFSET);
1637  DebugP_assert(sampleAdjustCount <= RDC_MAX_IDEAL_SAMPLE_BPF_ADJUST);
1638  HW_WR_REG32(
1639  base + regOffset,
1640  (HW_RD_REG32(
1641  base + regOffset) &
1642  ~CSL_RESOLVER_REGS_SAMPLE_CFG2_0_BANDPASSFILTERSAMPLEADJUST_MASK) |
1643  ((uint32_t)(sampleAdjustCount << CSL_RESOLVER_REGS_SAMPLE_CFG2_0_BANDPASSFILTERSAMPLEADJUST_SHIFT)));
1644  }
1645 
1655  static inline bool
1656  RDC_getIdealSamplePeakAvgLimitStatus(uint32_t base, uint8_t core)
1657  {
1658  uint32_t regOffset = CSL_RESOLVER_REGS_SAMPLE_CFG2_0 + (core * RDC_CORE_OFFSET);
1659  return (
1660  ((HW_RD_REG32(
1661  base + regOffset) &
1662  CSL_RESOLVER_REGS_SAMPLE_CFG2_0_PEAK_AVG_LIMIT_DONE_MASK) &
1663  ((uint32_t)((1U) << CSL_RESOLVER_REGS_SAMPLE_CFG2_0_PEAK_AVG_LIMIT_DONE_SHIFT))) != 0U);
1664  }
1665 
1678  static inline void
1679  RDC_setIdealSampleMode(uint32_t base, uint8_t core, uint8_t mode)
1680  {
1681  uint32_t regOffset = CSL_RESOLVER_REGS_DEC_GF_CFG0 + (core * RDC_CORE_OFFSET);
1682  DebugP_assert(
1683  (mode & ~(CSL_RESOLVER_REGS_DEC_GF_CFG0_IDEAL_SAMPLE_MODE_MAX)) == 0U);
1684  HW_WR_REG32(
1685  base + regOffset,
1686  (HW_RD_REG32(
1687  base + regOffset) &
1688  ~CSL_RESOLVER_REGS_DEC_GF_CFG0_IDEAL_SAMPLE_MODE_MASK) |
1689  ((uint32_t)(mode << CSL_RESOLVER_REGS_DEC_GF_CFG0_IDEAL_SAMPLE_MODE_SHIFT)));
1690  }
1691 
1701  static inline void
1702  RDC_enableIdealSampleBottomSampling(uint32_t base, uint8_t core)
1703  {
1704  uint32_t regOffset = CSL_RESOLVER_REGS_DEC_GF_CFG0 + (core * RDC_CORE_OFFSET);
1705  HW_WR_REG32(
1706  base + regOffset,
1707  (HW_RD_REG32(
1708  base + regOffset) &
1709  ~CSL_RESOLVER_REGS_DEC_GF_CFG0_ENABLE_BOTTOM_MASK) |
1710  ((uint32_t)((1U) << CSL_RESOLVER_REGS_DEC_GF_CFG0_ENABLE_BOTTOM_SHIFT)));
1711  }
1712 
1720  static inline void
1721  RDC_disableIdealSampleBottomSampling(uint32_t base, uint8_t core)
1722  {
1723  uint32_t regOffset = CSL_RESOLVER_REGS_DEC_GF_CFG0 + (core * RDC_CORE_OFFSET);
1724  HW_WR_REG32(
1725  base + regOffset,
1726  (HW_RD_REG32(
1727  base + regOffset) |
1728  CSL_RESOLVER_REGS_DEC_GF_CFG0_ENABLE_BOTTOM_MASK) &
1729  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_DEC_GF_CFG0_ENABLE_BOTTOM_SHIFT)));
1730  }
1731 
1732  //*****************************************************************************
1733  // PHASE GAIN ESTIMATION AND CORRECTION CONFIGURAITONS
1734  //*****************************************************************************
1735 
1745  static inline bool
1746  RDC_getPhaseGainEstimationStatus(uint32_t base, uint8_t core)
1747  {
1748  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG1_0 + (core * RDC_CORE_OFFSET);
1749  return (
1750  ((HW_RD_REG32(
1751  base + regOffset) &
1752  CSL_RESOLVER_REGS_PG_EST_CFG1_0_AUTOPHASEGAINREADYDONE_MASK) &
1753  ((uint32_t)((1U) << CSL_RESOLVER_REGS_PG_EST_CFG1_0_AUTOPHASEGAINREADYDONE_SHIFT))) != 0U);
1754  }
1755 
1765  static inline void
1766  RDC_setPhaseGainEstimationTrainLimit(uint32_t base, uint8_t core, uint8_t pgEstimationLimit)
1767  {
1768  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG1_0 + (core * RDC_CORE_OFFSET);
1769  DebugP_assert(pgEstimationLimit <= CSL_RESOLVER_REGS_PG_EST_CFG1_0_PG_TRAIN_LIMIT_MAX);
1770  HW_WR_REG32(
1771  base + regOffset,
1772  (HW_RD_REG32(
1773  base + regOffset) &
1774  ~CSL_RESOLVER_REGS_PG_EST_CFG1_0_PG_TRAIN_LIMIT_MASK) |
1775  ((uint32_t)(pgEstimationLimit << CSL_RESOLVER_REGS_PG_EST_CFG1_0_PG_TRAIN_LIMIT_SHIFT)));
1776  }
1777 
1786  static inline void
1787  RDC_setCosPhaseBypass(uint32_t base, uint8_t core, uint16_t cosPhaseBypass)
1788  {
1789  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1790  DebugP_assert((cosPhaseBypass & (~CSL_RESOLVER_REGS_PG_EST_CFG2_0_PHASECOSBYP0_MAX)) == 0U);
1791  HW_WR_REG32(
1792  base + regOffset,
1793  (HW_RD_REG32(
1794  base + regOffset) &
1795  ~CSL_RESOLVER_REGS_PG_EST_CFG2_0_PHASECOSBYP0_MASK) |
1796  ((uint32_t)(cosPhaseBypass << CSL_RESOLVER_REGS_PG_EST_CFG2_0_PHASECOSBYP0_SHIFT)));
1797  }
1798 
1806  static inline void
1807  RDC_enablePhaseGainEstimation(uint32_t base, uint8_t core)
1808  {
1809  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1810  HW_WR_REG32(
1811  base + regOffset,
1812  (HW_RD_REG32(
1813  base + regOffset) |
1814  CSL_RESOLVER_REGS_PG_EST_CFG2_0_BYPASSPHASEGAINCORR0_MASK) &
1815  ~((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_BYPASSPHASEGAINCORR0_SHIFT));
1816 
1817  }
1818 
1826  static inline void
1827  RDC_disablePhaseGainEstimation(uint32_t base, uint8_t core)
1828  {
1829  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1830  HW_WR_REG32(
1831  base + regOffset,
1832  (HW_RD_REG32(
1833  base + regOffset) &
1834  ~CSL_RESOLVER_REGS_PG_EST_CFG2_0_BYPASSPHASEGAINCORR0_MASK) |
1835  ((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_BYPASSPHASEGAINCORR0_SHIFT));
1836  }
1837 
1845  static inline void
1846  RDC_enablePhaseAutoCorrection(uint32_t base, uint8_t core)
1847  {
1848  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1849  HW_WR_REG32(
1850  base + regOffset,
1851  (HW_RD_REG32(
1852  base + regOffset) &
1853  ~CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOPHASECONTROL0_MASK) |
1854  ((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOPHASECONTROL0_SHIFT));
1855  }
1856 
1864  static inline void
1865  RDC_disablePhaseAutoCorrection(uint32_t base, uint8_t core)
1866  {
1867  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1868  HW_WR_REG32(
1869  base + regOffset,
1870  (HW_RD_REG32(
1871  base + regOffset) |
1872  CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOPHASECONTROL0_MASK) &
1873  ~((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOPHASECONTROL0_SHIFT));
1874  }
1875 
1883  static inline void
1884  RDC_enableGainAutoCorrection(uint32_t base, uint8_t core)
1885  {
1886  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1887  HW_WR_REG32(
1888  base + regOffset,
1889  (HW_RD_REG32(
1890  base + regOffset) &
1891  ~CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOGAINCONTROL0_MASK) |
1892  ((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOGAINCONTROL0_SHIFT));
1893  }
1894 
1902  static inline void
1903  RDC_disableGainAutoCorrection(uint32_t base, uint8_t core)
1904  {
1905  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG2_0 + (core * RDC_CORE_OFFSET);
1906  HW_WR_REG32(
1907  base + regOffset,
1908  (HW_RD_REG32(
1909  base + regOffset) |
1910  CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOGAINCONTROL0_MASK) &
1911  ~((1U) << CSL_RESOLVER_REGS_PG_EST_CFG2_0_AUTOGAINCONTROL0_SHIFT));
1912  }
1913 
1923  static inline void
1924  RDC_setGainBypassValue(uint32_t base, uint8_t core, int16_t sinGainBypass, int16_t cosGainBypass)
1925  {
1926  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG3_0 + (core * RDC_CORE_OFFSET);
1927  DebugP_assert(sinGainBypass >= 0);
1928  uint32_t value = ((uint32_t)(((uint16_t)cosGainBypass) << 16)) | ((uint32_t)((uint16_t)sinGainBypass));
1929 
1930  HW_WR_REG32(
1931  base + regOffset, value);
1932  }
1933 
1943  static inline int16_t // TODO : CHECK IF UNSINGED
1944  RDC_getPhaseEstimation(uint32_t base, uint8_t core)
1945  {
1946  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG4_0 + (core * RDC_CORE_OFFSET);
1947  return (
1948  (HW_RD_REG32(
1949  base + regOffset) &
1950  CSL_RESOLVER_REGS_PG_EST_CFG4_0_PHASEESTIMATEFINAL_MASK) >>
1951  CSL_RESOLVER_REGS_PG_EST_CFG4_0_PHASEESTIMATEFINAL_SHIFT);
1952  }
1953 
1963  static inline void
1964  RDC_getGainEstimation(uint32_t base, uint8_t core, int16_t *sinGainEstimate, int16_t *cosGainEstimate)
1965  {
1966  uint32_t regOffset = CSL_RESOLVER_REGS_PG_EST_CFG5_0 + (core * RDC_CORE_OFFSET);
1967  uint32_t value = HW_RD_REG32(base + regOffset);
1968 
1969  *cosGainEstimate = (int16_t)(value >> 16);
1970  *sinGainEstimate = (int16_t)value;
1971  }
1972 
1973  //*****************************************************************************
1974  // TRACK2 CONFIGURATIONS
1975  //*****************************************************************************
1976 
1977 
1988  static inline void
1989  RDC_setTrack2Constants(uint32_t base, uint8_t core, Track2Constants_t *track2Constants)
1990  {
1991  uint8_t kvelfilt = track2Constants->kvelfilt;
1992  uint32_t cfg1 = (kvelfilt << CSL_RESOLVER_REGS_TRACK2_CFG1_0_KVELFILT_SHIFT);
1993 
1994  uint32_t mask_cfg1 = (CSL_RESOLVER_REGS_TRACK2_CFG1_0_KVELFILT_MASK);
1995 
1996  uint32_t regOffset_cfg1 = CSL_RESOLVER_REGS_TRACK2_CFG1_0 + (core * RDC_CORE_OFFSET);
1997  HW_WR_REG32(
1998  base + regOffset_cfg1,
1999  (HW_RD_REG32(
2000  base + regOffset_cfg1) &
2001  (~mask_cfg1)) |
2002  cfg1);
2003  }
2004 
2012  static inline void
2013  RDC_enableTrack2Boost(uint32_t base, uint8_t core)
2014  {
2015  uint32_t regOffset = CSL_RESOLVER_REGS_TRACK2_CFG2_0 + (core * RDC_CORE_OFFSET);
2016 
2017  HW_WR_REG32(
2018  base + regOffset,
2019  (HW_RD_REG32(
2020  base + regOffset) &
2021  ~CSL_RESOLVER_REGS_TRACK2_CFG2_0_BOOST_MASK) |
2022  ((uint32_t)((1U) << CSL_RESOLVER_REGS_TRACK2_CFG2_0_BOOST_SHIFT)));
2023  }
2031  static inline void
2032  RDC_disableTrack2Boost(uint32_t base, uint8_t core)
2033  {
2034  uint32_t regOffset = CSL_RESOLVER_REGS_TRACK2_CFG2_0 + (core * RDC_CORE_OFFSET);
2035 
2036  HW_WR_REG32(
2037  base + regOffset,
2038  (HW_RD_REG32(
2039  base + regOffset) |
2040  CSL_RESOLVER_REGS_TRACK2_CFG2_0_BOOST_MASK) &
2041  ~((uint32_t)((1U) << CSL_RESOLVER_REGS_TRACK2_CFG2_0_BOOST_SHIFT)));
2042  }
2043 
2054  static inline int16_t
2055  RDC_getArcTanAngle(uint32_t base, uint8_t core)
2056  {
2057  uint32_t regOffset = CSL_RESOLVER_REGS_ANGLE_ARCTAN_0 + (core * RDC_CORE_OFFSET);
2058  return (
2059  (int16_t)HW_RD_REG16(
2060  base + regOffset));
2061  }
2062 
2072  static inline int16_t
2073  RDC_getTrack2Angle(uint32_t base, uint8_t core)
2074  {
2075  uint32_t regOffset = CSL_RESOLVER_REGS_ANGLE_TRACK2_0 + (core * RDC_CORE_OFFSET);
2076  return (
2077  (int16_t)HW_RD_REG16(
2078  base + regOffset));
2079  }
2080 
2091  static inline int32_t
2092  RDC_getTrack2Velocity(uint32_t base, uint8_t core)
2093  {
2094  uint32_t regOffset = CSL_RESOLVER_REGS_VELOCITY_TRACK2_0 + (core * RDC_CORE_OFFSET);
2095  return (
2096  (int32_t)HW_RD_REG32(
2097  base + regOffset));
2098  }
2099 
2100  //*****************************************************************************
2101  // DIAGNOSTIC RELATED APIS
2102  //*****************************************************************************
2103 
2118  static inline void
2120  uint8_t resolverCore,
2121  Diag_Mon_SinCos_Offset_drift_data *monitorData)
2122  {
2123  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG1_0 + (RDC_CORE_OFFSET * resolverCore);
2124  uint32_t value = HW_RD_REG32(base + regOffset);
2125  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2126  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2127 
2128  monitorData->offset_drift_threshold_hi = (int16_t)((uint16_t)((value &
2129  CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_HI_MASK) >>
2130  CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_HI_SHIFT));
2131  monitorData->offset_drift_threshold_lo = (int16_t)((uint16_t)((value &
2132  CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_LO_MASK) >>
2133  CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_LO_SHIFT));
2134 
2135  monitorData->offset_drift_cos_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_HI_ERR) != 0);
2136  monitorData->offset_drift_sin_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_HI_ERR) != 0);
2137  monitorData->offset_drift_cos_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_LO_ERR) != 0);
2138  monitorData->offset_drift_sin_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_LO_ERR) != 0);
2139  monitorData->offset_drift_en = ((enabledInterruptSources &
2144  }
2145 
2160  static inline void
2162  uint8_t resolverCore,
2163  Diag_Mon_SinCos_Offset_drift_data *monitorData)
2164  {
2165  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG1_0 + (RDC_CORE_OFFSET * resolverCore);
2166  uint32_t value = (((uint32_t)((uint16_t)(monitorData->offset_drift_threshold_hi))) << CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_HI_SHIFT) |
2167  (((uint32_t)((uint16_t)(monitorData->offset_drift_threshold_lo))) << CSL_RESOLVER_REGS_DIAG1_0_OFFSETDRIFT_THRESHOLD_LO_SHIFT);
2168  uint32_t interruptSource = 0;
2169  /* if interrupt needs to be enabled */
2170  RDC_disableCoreInterrupt(base, resolverCore,
2175 
2176  /* writing the "value" */
2177  HW_WR_REG32(
2178  base + regOffset, value);
2179 
2180  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2181 
2182  if (monitorData->offset_drift_en)
2183  {
2184  if (monitorData->offset_drift_cos_hi)
2185  {
2187  }
2188 
2189  if (monitorData->offset_drift_sin_hi)
2190  {
2192  }
2193 
2194  if (monitorData->offset_drift_cos_lo)
2195  {
2197  }
2198 
2199  if (monitorData->offset_drift_sin_lo)
2200  {
2202  }
2203 
2204  RDC_enableCoreInterrupt(base, resolverCore, (interruptSource | enabledInterruptSources));
2205  }
2206  }
2207 
2223  static inline void
2225  uint8_t resolverCore,
2226  Diag_Mon_SinCos_Gain_drift_data *monitorData)
2227  {
2228  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG14_0 + (RDC_CORE_OFFSET * resolverCore);
2229 
2230  uint32_t value = HW_RD_REG32(base + regOffset);
2231 
2232  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2233  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2234 
2235  monitorData->gain_drift_threshold_hi = (int16_t)((uint16_t)((value &
2236  CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_HI_MASK) >>
2237  CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_HI_SHIFT));
2238  monitorData->gain_drift_threshold_lo = (int16_t)((uint16_t)((value &
2239  CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_LO_MASK) >>
2240  CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_LO_SHIFT));
2241 
2242  monitorData->gain_drift_cos_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR) != 0);
2243  monitorData->gain_drift_cos_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR) != 0);
2244  monitorData->gain_drift_sin_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR) != 0);
2245  monitorData->gain_drift_sin_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR) != 0);
2246 
2247  /* getting the glitch count value*/
2248  regOffset = CSL_RESOLVER_REGS_DIAG15_0 + (RDC_CORE_OFFSET * resolverCore);
2249  monitorData->gain_drift_glitch_count = (uint8_t)HW_RD_REG32(base + regOffset);
2250 
2251  monitorData->gaindrift_en = ((enabledInterruptSources &
2256  }
2257 
2273  static inline void
2275  uint8_t resolverCore,
2276  Diag_Mon_SinCos_Gain_drift_data *monitorData)
2277  {
2278  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG14_0 + (RDC_CORE_OFFSET * resolverCore);
2279  uint32_t value = (((uint32_t)((uint16_t)(monitorData->gain_drift_threshold_hi))) << CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_HI_SHIFT) |
2280  (((uint32_t)((uint16_t)(monitorData->gain_drift_threshold_lo))) << CSL_RESOLVER_REGS_DIAG14_0_GAINDRIFT_THRESHOLD_LO_SHIFT);
2281 
2282  uint32_t interruptSource = 0;
2283 
2284  /* if interrupt needs to be enabled */
2285  RDC_disableCoreInterrupt(base, resolverCore,
2290 
2291  /* setting the glitch count value */
2292  regOffset = CSL_RESOLVER_REGS_DIAG15_0 + (RDC_CORE_OFFSET * resolverCore);
2293  HW_WR_REG32(
2294  base + regOffset, monitorData->gain_drift_glitch_count);
2295 
2296  /* writing the "value" */
2297  HW_WR_REG32(
2298  base + regOffset, value);
2299 
2300  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2301 
2302  if (monitorData->gaindrift_en)
2303  {
2304  if (monitorData->gain_drift_cos_hi)
2305  {
2306  interruptSource |= RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR;
2307  }
2308 
2309  if (monitorData->gain_drift_sin_hi)
2310  {
2311  interruptSource |= RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR;
2312  }
2313 
2314  if (monitorData->gain_drift_cos_lo)
2315  {
2316  interruptSource |= RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR;
2317  }
2318 
2319  if (monitorData->gain_drift_sin_lo)
2320  {
2321  interruptSource |= RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR;
2322  }
2323 
2324  RDC_enableCoreInterrupt(base, resolverCore, (interruptSource | enabledInterruptSources));
2325  }
2326  }
2327 
2328 
2342  static inline void
2344  uint8_t resolverCore,
2345  Diag_Mon_Cos_Phase_drift_data *monitorData)
2346  {
2347  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG16_0 + (RDC_CORE_OFFSET * resolverCore);
2348 
2349  uint32_t value = HW_RD_REG32(base + regOffset);
2350 
2351  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2352  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2353 
2354  monitorData->phase_drift_threshold_hi = (int16_t)((uint16_t)((value &
2355  CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_HI_MASK) >>
2356  CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_HI_SHIFT));
2357  monitorData->phase_drift_threshold_lo = (int16_t)((uint16_t)((value &
2358  CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_LO_MASK) >>
2359  CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_LO_SHIFT));
2360 
2361  monitorData->phase_drift_cos_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR) != 0);
2362  monitorData->phase_drift_cos_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR) != 0);
2363 
2364  /* getting the glitch count value*/
2365  regOffset = CSL_RESOLVER_REGS_DIAG17_0 + (RDC_CORE_OFFSET * resolverCore);
2366  monitorData->phase_drift_glitch_count = (uint8_t)HW_RD_REG32(base + regOffset);
2367 
2368  monitorData->phase_drift_en = ((enabledInterruptSources &
2371  }
2372 
2386  static inline void
2388  uint8_t resolverCore,
2389  Diag_Mon_Cos_Phase_drift_data *monitorData)
2390  {
2391  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG16_0 + (RDC_CORE_OFFSET * resolverCore);
2392  uint32_t value = (((uint32_t)((uint16_t)(monitorData->phase_drift_threshold_hi))) << CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_HI_SHIFT) |
2393  (((uint32_t)((uint16_t)(monitorData->phase_drift_threshold_lo))) << CSL_RESOLVER_REGS_DIAG16_0_PHASEDRIFT_THRESHOLD_LO_SHIFT);
2394 
2395  uint32_t interruptSource = 0;
2396  /* if interrupt needs to be enabled */
2397  RDC_disableCoreInterrupt(base, resolverCore,
2400  /* writing the glitch count value */
2401  regOffset = CSL_RESOLVER_REGS_DIAG17_0 + (RDC_CORE_OFFSET * resolverCore);
2402  HW_WR_REG32(
2403  base + regOffset, monitorData->phase_drift_glitch_count);
2404 
2405  /* writing the "value" */
2406  HW_WR_REG32(
2407  base + regOffset, value);
2408 
2409  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2410 
2411  if (monitorData->phase_drift_en)
2412  {
2413  if (monitorData->phase_drift_cos_hi)
2414  {
2415  interruptSource |= RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR;
2416  }
2417 
2418  if (monitorData->phase_drift_cos_lo)
2419  {
2420  interruptSource |= RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR;
2421  }
2422 
2423  RDC_enableCoreInterrupt(base, resolverCore, (interruptSource | enabledInterruptSources));
2424  }
2425  }
2426 
2427 
2428 
2446  static inline void
2448  uint8_t resolverCore,
2450  {
2451  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG2_0 + (RDC_CORE_OFFSET * resolverCore);
2452 
2453  uint32_t value = HW_RD_REG32(base + regOffset);
2454 
2455  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2456  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2457 
2458  monitorData->excfreqdetected_sin = ((uint16_t)((value &
2459  CSL_RESOLVER_REGS_DIAG2_0_EXCFREQDETECTED_SIN_MASK) >>
2460  CSL_RESOLVER_REGS_DIAG2_0_EXCFREQDETECTED_SIN_SHIFT));
2461  monitorData->excfreqdetected_cos = ((uint16_t)((value &
2462  CSL_RESOLVER_REGS_DIAG2_0_EXCFREQDETECTED_COS_MASK) >>
2463  CSL_RESOLVER_REGS_DIAG2_0_EXCFREQDETECTED_COS_SHIFT));
2464 
2465  regOffset = CSL_RESOLVER_REGS_DIAG3_0 + (RDC_CORE_OFFSET * resolverCore);
2466  value = HW_RD_REG32(base + regOffset);
2467 
2468  monitorData->excfreqdrift_threshold_hi = ((uint16_t)((value &
2469  CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_HI_MASK) >>
2470  CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_HI_SHIFT));
2471  monitorData->excfreqdrift_threshold_lo = ((uint16_t)((value &
2472  CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_LO_MASK) >>
2473  CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_LO_SHIFT));
2474 
2475  regOffset = CSL_RESOLVER_REGS_DIAG4_0 + (RDC_CORE_OFFSET * resolverCore);
2476  value = HW_RD_REG32(base + regOffset);
2477 
2478  monitorData->excfreq_level = ((uint16_t)((value &
2479  CSL_RESOLVER_REGS_DIAG4_0_EXCFREQ_LEVEL_MASK) >>
2480  CSL_RESOLVER_REGS_DIAG4_0_EXCFREQ_LEVEL_SHIFT));
2481  monitorData->excfreqdrift_glitchcount = ((uint8_t)((value &
2482  CSL_RESOLVER_REGS_DIAG4_0_EXCFREQDRIFT_GLITCHCOUNT_MASK) >>
2483  CSL_RESOLVER_REGS_DIAG4_0_EXCFREQDRIFT_GLITCHCOUNT_SHIFT));
2484 
2485  monitorData->excfreqdrift_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR) != 0);
2486  monitorData->excfreqdrift_cos_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_COS_LO_ERR) != 0);
2487  monitorData->excfreqdrift_sin_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_SIN_LO_ERR) != 0);
2488 
2489  monitorData->excfreqdrift_en = ((enabledInterruptSources &
2493  }
2494 
2512  static inline void
2514  uint8_t resolverCore,
2516  {
2517  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG2_0 + (RDC_CORE_OFFSET * resolverCore);
2518  uint32_t value = (((uint32_t)((uint16_t)(monitorData->excfreqdrift_threshold_hi))) << CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_HI_SHIFT) |
2519  (((uint32_t)((uint16_t)(monitorData->excfreqdrift_threshold_lo))) << CSL_RESOLVER_REGS_DIAG3_0_EXCFREQDRIFT_THRESHOLD_LO_SHIFT);
2520  uint32_t interruptSource = 0;
2521 
2522  RDC_disableCoreInterrupt(base, resolverCore,
2526 
2527  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2528 
2529  HW_WR_REG32(
2530  base + regOffset, value);
2531 
2532  regOffset = CSL_RESOLVER_REGS_DIAG3_0 + (RDC_CORE_OFFSET * resolverCore);
2533  value = (((uint32_t)((uint16_t)(monitorData->excfreq_level))) << CSL_RESOLVER_REGS_DIAG4_0_EXCFREQ_LEVEL_SHIFT) |
2534  (((uint32_t)((uint16_t)(monitorData->excfreqdrift_glitchcount))) << CSL_RESOLVER_REGS_DIAG4_0_EXCFREQDRIFT_GLITCHCOUNT_SHIFT);
2535 
2536  HW_WR_REG32(
2537  base + regOffset, value);
2538 
2539  if (monitorData->excfreqdrift_en)
2540  {
2541  if (monitorData->excfreqdrift_hi)
2542  {
2543  interruptSource |= RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR;
2544  }
2545 
2546  if (monitorData->excfreqdrift_cos_lo)
2547  {
2549  }
2550 
2551  if (monitorData->excfreqdrift_sin_lo)
2552  {
2554  }
2555  RDC_enableCoreInterrupt(base, resolverCore, (interruptSource | enabledInterruptSources));
2556  }
2557  }
2558 
2576  static inline void
2578  uint8_t resolverCore,
2580  {
2581  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG13_0 + (RDC_CORE_OFFSET * resolverCore);
2582  uint32_t value = HW_RD_REG32(
2583  base + regOffset);
2584 
2585  monitorData->sin_multi_zc_error_count = (uint8_t)((value & CSL_RESOLVER_REGS_DIAG13_0_SIN_MULTI_ZC_ERROR_COUNT_MASK) >> CSL_RESOLVER_REGS_DIAG13_0_SIN_MULTI_ZC_ERROR_COUNT_SHIFT);
2586 
2587  monitorData->cos_multi_zc_error_count = (uint8_t)((value & CSL_RESOLVER_REGS_DIAG13_0_COS_MULTI_ZC_ERROR_COUNT_MASK) >> CSL_RESOLVER_REGS_DIAG13_0_COS_MULTI_ZC_ERROR_COUNT_SHIFT);
2588 
2589  regOffset = CSL_RESOLVER_REGS_DIAG12_0 + (RDC_CORE_OFFSET * resolverCore);
2590  value = HW_RD_REG32(
2591  base + regOffset);
2592  monitorData->rotpeak_level = (value & CSL_RESOLVER_REGS_DIAG12_0_ROTPEAK_LEVEL_MASK) >> CSL_RESOLVER_REGS_DIAG12_0_ROTPEAK_LEVEL_SHIFT;
2593  monitorData->rotpeak_level = (value & CSL_RESOLVER_REGS_DIAG12_0_ROTFREQ_LEVEL_MASK) >> CSL_RESOLVER_REGS_DIAG12_0_ROTFREQ_LEVEL_SHIFT;
2594 
2595  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2596  monitorData->cos_neg_zc_peak_mismatch_err = ((interruptStatus & RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR) != 0);
2597  monitorData->cos_pos_zc_peak_mismatch_err = ((interruptStatus & RDC_INTERRUPT_SOURCE_COS_POS_ZC_PEAK_MISMATCH_ERR) != 0);
2598  monitorData->sin_neg_zc_peak_mismatch_err = ((interruptStatus & RDC_INTERRUPT_SOURCE_SIN_NEG_ZC_PEAK_MISMATCH_ERR) != 0);
2599  monitorData->sin_pos_zc_peak_mismatch_err = ((interruptStatus & RDC_INTERRUPT_SOURCE_SIN_POS_ZC_PEAK_MISMATCH_ERR) != 0);
2600 
2601 
2602  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2603  monitorData->zero_cross_rot_en = (enabledInterruptSources & (RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR |
2607  }
2608 
2626  static inline void
2628  uint8_t resolverCore,
2630  {
2631  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG12_0 + (RDC_CORE_OFFSET * resolverCore);
2632  uint32_t value = (((uint32_t)((uint16_t)(monitorData->rotpeak_level))) << CSL_RESOLVER_REGS_DIAG12_0_ROTPEAK_LEVEL_SHIFT) |
2633  (((uint32_t)((uint16_t)(monitorData->rotfreq_level))) << CSL_RESOLVER_REGS_DIAG12_0_ROTFREQ_LEVEL_SHIFT);
2634  HW_WR_REG32(
2635  base + regOffset,
2636  value);
2638  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2639  uint32_t interruptSources = 0;
2640 
2641  if (monitorData->zero_cross_rot_en)
2642  {
2643  if (monitorData->cos_neg_zc_peak_mismatch_err)
2644  {
2646  }
2647 
2648  if (monitorData->cos_pos_zc_peak_mismatch_err)
2649  {
2651  }
2652 
2653  if (monitorData->sin_neg_zc_peak_mismatch_err)
2654  {
2656  }
2657 
2658  if (monitorData->sin_pos_zc_peak_mismatch_err)
2659  {
2661  }
2662 
2663  RDC_enableCoreInterrupt(base, resolverCore, (interruptSources | enabledInterruptSources));
2664  }
2665  }
2666 
2680  static inline void
2682  uint32_t base,
2683  uint32_t resolverCore,
2685  {
2686  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG9_0 + (resolverCore * RDC_CORE_OFFSET);
2687  uint32_t value = HW_RD_REG32(
2688  base + regOffset);
2689 
2690  monitorData->sinsqcossq_threshold_hi = (value & CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_HI_MASK) >>
2691  CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_HI_SHIFT;
2692  monitorData->sinsqcossq_threshold_lo = (value & CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_LO_MASK) >>
2693  CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_LO_SHIFT;
2694 
2695  regOffset = CSL_RESOLVER_REGS_DIAG10_0 + (resolverCore * RDC_CORE_OFFSET);
2696  value = HW_RD_REG32(
2697  base + regOffset);
2698 
2699  monitorData->sinsqcossq_cossq = (value & CSL_RESOLVER_REGS_DIAG10_0_SINSQCOSSQ_COSSQ_MASK) >>
2700  CSL_RESOLVER_REGS_DIAG10_0_SINSQCOSSQ_COSSQ_SHIFT;
2701  monitorData->sinsqcossq_sinsq = (value & CSL_RESOLVER_REGS_DIAG10_0_SINSQCOSSQ_SINSQ_MASK) >>
2702  CSL_RESOLVER_REGS_DIAG10_0_SINSQCOSSQ_SINSQ_SHIFT;
2703 
2704  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2705 
2706  regOffset = CSL_RESOLVER_REGS_DIAG11_0 + (resolverCore * RDC_CORE_OFFSET);
2707  monitorData->sinsqcossq_glitchcount = (uint8_t)((HW_RD_REG32(
2708  base + regOffset) &
2709  CSL_RESOLVER_REGS_DIAG11_0_SINSQCOSSQ_GLITCHCOUNT_MASK) >>
2710  CSL_RESOLVER_REGS_DIAG11_0_SINSQCOSSQ_GLITCHCOUNT_SHIFT);
2711 
2712  monitorData->sinsqcossq_hi = ((interruptStatus & RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR) != 0);
2713  monitorData->sinsqcossq_lo = ((interruptStatus & RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR) != 0);
2714  }
2715 
2729  static inline void
2731  uint32_t base,
2732  uint32_t resolverCore,
2734  {
2735  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG9_0 + (resolverCore * RDC_CORE_OFFSET);
2736  uint32_t value = (((uint32_t)((uint16_t)(monitorData->sinsqcossq_threshold_hi))) << CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_HI_SHIFT) |
2737  (((uint32_t)((uint16_t)(monitorData->sinsqcossq_threshold_lo))) << CSL_RESOLVER_REGS_DIAG9_0_SINSQCOSSQ_THRESHOLD_LO_SHIFT);
2738  HW_WR_REG32(
2739  base + regOffset, value);
2740 
2741  regOffset = CSL_RESOLVER_REGS_DIAG11_0 + (resolverCore * RDC_CORE_OFFSET);
2742  HW_WR_REG32(
2743  base + regOffset, (uint32_t)(monitorData->sinsqcossq_glitchcount));
2744 
2745  RDC_disableCoreInterrupt(base, resolverCore,
2747  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2748  uint32_t interruptSources = 0;
2749 
2750  if (monitorData->sinsqcossq_hi)
2751  {
2752  interruptSources |= RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR;
2753  }
2754  if (monitorData->sinsqcossq_lo)
2755  {
2756  interruptSources |= RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR;
2757  }
2758  RDC_enableCoreInterrupt(base, resolverCore, (enabledInterruptSources | interruptSources));
2759  }
2760 
2761 
2762 
2775  static inline void
2777  uint32_t base,
2778  uint8_t resolverCore,
2779  Diag_Mon_Sin_Cos_High_Amplitude *monitorData)
2780  {
2781  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG7_0 + (resolverCore * RDC_CORE_OFFSET);
2782  uint32_t value = HW_RD_REG32(
2783  base + regOffset);
2784  uint32_t interruptStatus = RDC_getCoreInterruptStatus(base, resolverCore);
2785 
2786  monitorData->highAmplitude_glitchcount = (value & CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_GLITCHCOUNT_MASK) >>
2787  CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_GLITCHCOUNT_SHIFT;
2788 
2789  monitorData->highAmplitude_threshold = (value & CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_THRESHOLD_MASK) >>
2790  CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_THRESHOLD_SHIFT;
2791  regOffset = CSL_RESOLVER_REGS_DIAG8_0 + (resolverCore * RDC_CORE_OFFSET);
2792  value = HW_RD_REG32(
2793  base + regOffset);
2794 
2795  monitorData->highAmplitude_sin_value = (int16_t) ((value & CSL_RESOLVER_REGS_DIAG8_1_HIGHAMPLITUDE_SIN_MASK) >> \
2796  CSL_RESOLVER_REGS_DIAG8_1_HIGHAMPLITUDE_SIN_SHIFT);
2797 
2798  monitorData->highAmplitude_cos_value = (int16_t) ((value & CSL_RESOLVER_REGS_DIAG8_1_HIGHAMPLITUDE_COS_MASK) >> \
2799  CSL_RESOLVER_REGS_DIAG8_1_HIGHAMPLITUDE_COS_SHIFT);
2800  monitorData->highAmplitude_cos_error = ((interruptStatus & RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_COS_FAULT_ERR) != 0);
2801  monitorData->highAmplitude_sin_error = ((interruptStatus & RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_SIN_FAULT_ERR) != 0);
2802  }
2803 
2816  static inline void
2818  uint32_t base,
2819  uint8_t resolverCore,
2820  Diag_Mon_Sin_Cos_High_Amplitude* monitorData)
2821  {
2822  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG7_0 + (resolverCore * RDC_CORE_OFFSET);
2823  uint32_t value = (((uint32_t)((uint16_t)(monitorData->highAmplitude_glitchcount))) << CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_GLITCHCOUNT_SHIFT) |
2824  (((uint32_t)((uint16_t)(monitorData->highAmplitude_threshold))) << CSL_RESOLVER_REGS_DIAG7_1_HIGHAMPLITUDE_THRESHOLD_SHIFT);
2825  uint32_t enabledInterruptSources = 0;
2826  uint32_t interruptSources = 0;
2827  HW_WR_REG32(
2828  base + regOffset,
2829  value);
2831  enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2832 
2833  if(monitorData->highAmplitude_cos_error)
2834  {
2836  }
2837  if(monitorData->highAmplitude_sin_error)
2838  {
2840  }
2841  RDC_enableCoreInterrupt(base, resolverCore, (interruptSources | enabledInterruptSources));
2842  }
2843 
2855  static inline void
2857  uint32_t base,
2858  uint8_t resolverCore,
2859  Diag_Mon_Sin_Cos_Weak_Amplitude * monitorData
2860  )
2861  {
2862  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG5_0 + (resolverCore * RDC_CORE_OFFSET);
2863  uint32_t interruptSources = RDC_getCoreInterruptStatus(base, resolverCore);
2864  uint32_t value = HW_RD_REG32(
2865  base + regOffset);
2866  monitorData->lowAmplitude_threshold = (value & CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_THRESHOLD_MASK) >>
2867  CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_THRESHOLD_SHIFT;
2868  monitorData->lowAmplitude_glitchcount = (value & CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_GLITCHCOUNT_MASK) >>
2869  CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_GLITCHCOUNT_SHIFT;
2870 
2871  monitorData->lowAmplitude_error = ((interruptSources & RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR) != 0U);
2872 
2873  regOffset = CSL_RESOLVER_REGS_DIAG6_0 + (resolverCore * RDC_CORE_OFFSET);
2874  value = HW_RD_REG32(
2875  base + regOffset);
2876  monitorData->lowAmplitude_cos_value = (int16_t)((value & CSL_RESOLVER_REGS_DIAG6_1_LOWAMPLITUDE_COS_MASK) >>\
2877  CSL_RESOLVER_REGS_DIAG6_1_LOWAMPLITUDE_COS_SHIFT);
2878 
2879  monitorData->lowAmplitude_sin_value = (int16_t)((value & CSL_RESOLVER_REGS_DIAG6_1_LOWAMPLITUDE_SIN_MASK) >>\
2880  CSL_RESOLVER_REGS_DIAG6_1_LOWAMPLITUDE_SIN_SHIFT);
2881  }
2882 
2894  static inline void
2896  uint32_t base,
2897  uint8_t resolverCore,
2898  Diag_Mon_Sin_Cos_Weak_Amplitude * monitorData
2899  )
2900  {
2901  uint32_t regOffset = CSL_RESOLVER_REGS_DIAG5_0 + (resolverCore * RDC_CORE_OFFSET);
2902  uint32_t value = ((uint32_t)(monitorData->lowAmplitude_glitchcount << CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_GLITCHCOUNT_SHIFT)) |
2903  ((uint32_t) (monitorData->lowAmplitude_threshold << CSL_RESOLVER_REGS_DIAG5_1_LOWAMPLITUDE_GLITCHCOUNT_SHIFT));
2904  uint32_t enabledInterruptSources = RDC_getCoreEnabledInterruptSources(base, resolverCore);
2905 
2906  HW_WR_REG32(
2907  base + regOffset, value);
2908 
2909  if(monitorData->lowAmplitude_error)
2910  {
2911  RDC_enableCoreInterrupt(base, resolverCore, (enabledInterruptSources | RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR));
2912  }
2913  else
2914  {
2916  }
2917  }
2918 
2919  //*****************************************************************************
2920  // Observational Data
2921  //*****************************************************************************
2922 
2937  static inline void
2939  uint32_t base,
2940  uint8_t resolverCore,
2941  ADC_observationalData * AdcData)
2942  {
2943  uint32_t regOffset = CSL_RESOLVER_REGS_OBS_ADC_0 + (resolverCore * RDC_CORE_OFFSET);
2944  uint32_t value = HW_RD_REG32(
2945  base + regOffset);
2946  AdcData->cos_adc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_1_COS_ADC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_1_COS_ADC_SHIFT);
2947  AdcData->sin_adc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_1_SIN_ADC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_1_SIN_ADC_SHIFT);
2948 
2949  regOffset = CSL_RESOLVER_REGS_OBS_ADC_REC_0 + (resolverCore * RDC_CORE_OFFSET);
2950  value = HW_RD_REG32(
2951  base + regOffset);
2952  AdcData->cos_rec = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_REC_1_COS_REC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_REC_1_COS_REC_SHIFT);
2953  AdcData->sin_rec = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_REC_1_SIN_REC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_REC_1_SIN_REC_SHIFT);
2954 
2955  regOffset = CSL_RESOLVER_REGS_OBS_ADC_DC_0 + (resolverCore * RDC_CORE_OFFSET);
2956  value = HW_RD_REG32(
2957  base + regOffset);
2958  AdcData->cos_dc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_DC_1_COS_DC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_DC_1_COS_DC_SHIFT);
2959  AdcData->sin_dc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_DC_1_SIN_DC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_DC_1_SIN_DC_SHIFT);
2960 
2961  regOffset = CSL_RESOLVER_REGS_OBS_ADC_PGC_0 + (resolverCore * RDC_CORE_OFFSET);
2962  value = HW_RD_REG32(
2963  base + regOffset);
2964  AdcData->cos_pgc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_PGC_1_COS_PGC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_PGC_1_COS_PGC_SHIFT);
2965  AdcData->sin_pgc = (int16_t)((value & CSL_RESOLVER_REGS_OBS_ADC_PGC_1_SIN_PGC_MASK)>>CSL_RESOLVER_REGS_OBS_ADC_PGC_1_SIN_PGC_SHIFT);
2966  }
2967 
2975  static inline void
2976  RDC_getPeakHistogramObservationalData(uint32_t base, uint8_t resolverCore, PeakHistogram_observationalData* histogram)
2977  {
2978  uint32_t regOffset = CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0 + (resolverCore * RDC_CORE_OFFSET);
2979  uint32_t value = HW_RD_REG32(
2980  base + regOffset);
2981  histogram->peakHistgoramBucket[0] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM0_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM0_0_SHIFT);
2982  histogram->peakHistgoramBucket[1] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM1_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM1_0_SHIFT);
2983  histogram->peakHistgoramBucket[2] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM2_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM2_0_SHIFT);
2984  histogram->peakHistgoramBucket[3] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM3_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM3_0_0_PEAKHISTOGRAM3_0_SHIFT);
2985 
2986  regOffset = CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0 + (resolverCore * RDC_CORE_OFFSET);
2987  value = HW_RD_REG32(
2988  base + regOffset);
2989  histogram->peakHistgoramBucket[4] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM4_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM4_0_SHIFT);
2990  histogram->peakHistgoramBucket[5] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM5_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM5_0_SHIFT);
2991  histogram->peakHistgoramBucket[6] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM6_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM6_0_SHIFT);
2992  histogram->peakHistgoramBucket[7] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM7_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM7_4_0_PEAKHISTOGRAM7_0_SHIFT);
2993 
2994  regOffset = CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0 + (resolverCore * RDC_CORE_OFFSET);
2995  value = HW_RD_REG32(
2996  base + regOffset);
2997  histogram->peakHistgoramBucket[8] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM8_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM8_0_SHIFT);
2998  histogram->peakHistgoramBucket[9] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM9_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM9_0_SHIFT);
2999  histogram->peakHistgoramBucket[10] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM10_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM10_0_SHIFT);
3000  histogram->peakHistgoramBucket[11] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM11_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM11_8_0_PEAKHISTOGRAM11_0_SHIFT);
3001 
3002  regOffset = CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0 + (resolverCore * RDC_CORE_OFFSET);
3003  value = HW_RD_REG32(
3004  base + regOffset);
3005  histogram->peakHistgoramBucket[12] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM12_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM12_0_SHIFT);
3006  histogram->peakHistgoramBucket[13] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM13_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM13_0_SHIFT);
3007  histogram->peakHistgoramBucket[14] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM14_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM14_0_SHIFT);
3008  histogram->peakHistgoramBucket[15] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM15_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM15_12_0_PEAKHISTOGRAM15_0_SHIFT);
3009 
3010  regOffset = CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0 + (resolverCore * RDC_CORE_OFFSET);
3011  value = HW_RD_REG32(
3012  base + regOffset);
3013  histogram->peakHistgoramBucket[16] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM16_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM16_0_SHIFT);
3014  histogram->peakHistgoramBucket[17] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM17_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM17_0_SHIFT);
3015  histogram->peakHistgoramBucket[18] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM18_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM18_0_SHIFT);
3016  histogram->peakHistgoramBucket[19] = ((value & CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM19_0_MASK) >> CSL_RESOLVER_REGS_OBS_PEAKHISTOGRAM19_16_0_PEAKHISTOGRAM19_0_SHIFT);
3017  }
3018 
3024  extern void
3031  extern void
3039  extern void
3040  RDC_init(uint32_t base, RDC_configParams* params);
3046  extern void
3048 //*****************************************************************************
3049 //
3050 // Close the Doxygen group.
3052 //
3053 //*****************************************************************************
3054 
3055 //*****************************************************************************
3056 //
3057 // Mark the end of the C bindings section for C++ compilers.
3058 //
3059 //*****************************************************************************
3060 #ifdef __cplusplus
3061 }
3062 #endif
3063 
3064 #endif // RESOLVER_V1_H_
Diag_Mon_SinCos_Gain_drift_data::gain_drift_threshold_lo
int16_t gain_drift_threshold_lo
Definition: resolver/v0/resolver.h:392
Core_config_t::Pg_correctionEnable
bool Pg_correctionEnable
Definition: resolver/v0/resolver.h:599
RDC_CAL_ADC0
#define RDC_CAL_ADC0
Macro used to specify Calibration data for ADC 0.
Definition: resolver/v0/resolver.h:308
RDC_getArcTanAngle
static int16_t RDC_getArcTanAngle(uint32_t base, uint8_t core)
Returns signed 16bit angle data from ArcTan. the data corresponds to -180 to +180 degrees angle in de...
Definition: resolver/v0/resolver.h:2055
Diag_Mon_Sin_Cos_Weak_Amplitude::lowAmplitude_error
bool lowAmplitude_error
Definition: resolver/v0/resolver.h:538
RDC_configParams::Input_signalMode
uint8_t Input_signalMode
Definition: resolver/v0/resolver.h:618
RDC_getDcOffsetEstimatedValues
static int16_t RDC_getDcOffsetEstimatedValues(uint32_t base, uint8_t core, uint8_t sinCosValue)
returns DC OFFSET estimation values
Definition: resolver/v0/resolver.h:1547
Diag_Mon_ExcFreq_Degradataion_data
Structure to hold the control/status data for Diagnostics mentioned under Monitor excitation frequenc...
Definition: resolver/v0/resolver.h:436
RDC_DC_OFFSET_COS_ESTIMATION
#define RDC_DC_OFFSET_COS_ESTIMATION
Definition: resolver/v0/resolver.h:106
Diag_Mon_Cos_Phase_drift_data::phase_drift_en
bool phase_drift_en
Definition: resolver/v0/resolver.h:420
RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR
#define RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_LO_ERR
Definition: resolver/v0/resolver.h:261
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_cossq
uint16_t sinsqcossq_cossq
Definition: resolver/v0/resolver.h:494
RDC_coreParamsInit
void RDC_coreParamsInit(Core_config_t *coreParams)
Inits the Core Parameters for the resolver core.
Diag_Mon_ExcFreq_Degradataion_data::excfreqdetected_sin
uint16_t excfreqdetected_sin
Definition: resolver/v0/resolver.h:437
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_lo
bool sinsqcossq_lo
Definition: resolver/v0/resolver.h:497
RDC_EXCITATION_FREQUENCY_MIN_PHASE
#define RDC_EXCITATION_FREQUENCY_MIN_PHASE
Minimum Phase value that can be programmed for the Excitation signal.
Definition: resolver/v0/resolver.h:82
RDC_setDiagnosticsSinCosOffsetDriftData
static void RDC_setDiagnosticsSinCosOffsetDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_SinCos_Offset_drift_data *monitorData)
Sets the Monitor Sin or Cos Offset Drift (DOS) diagnostics controls int16_t offset_drift_threshold_hi...
Definition: resolver/v0/resolver.h:2161
Diag_Mon_Cos_Phase_drift_data
Structure to hold the control/status data for Diagnostics mentioned under Monitor Cos Phase drift (DO...
Definition: resolver/v0/resolver.h:414
Diag_Mon_SinCos_Gain_drift_data::gain_drift_sin_hi
bool gain_drift_sin_hi
Definition: resolver/v0/resolver.h:396
Diag_Mon_ExcFreq_Degradataion_data::excfreq_level
uint16_t excfreq_level
Definition: resolver/v0/resolver.h:441
RDC_clearSequencerInterrupt
static void RDC_clearSequencerInterrupt(uint32_t base)
Clear the Sequencer Error Interrupt status.
Definition: resolver/v0/resolver.h:1124
ADC_observationalData::cos_adc
int16_t cos_adc
Definition: resolver/v0/resolver.h:565
RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_HI_ERR
#define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_HI_ERR
Definition: resolver/v0/resolver.h:268
RDC_disablePhaseGainEstimation
static void RDC_disablePhaseGainEstimation(uint32_t base, uint8_t core)
Disbales Phase Gain Estimation in the background.
Definition: resolver/v0/resolver.h:1827
RDC_setDcOffsetCalCoef
static void RDC_setDcOffsetCalCoef(uint32_t base, uint8_t core, uint8_t coef1, uint8_t coef2)
Sets the DC Offset Coefficients coef1, coef2.
Definition: resolver/v0/resolver.h:1398
baselineParameters::DcParam3
uint8_t DcParam3
Definition: resolver/v0/resolver.h:647
Core_config_t::BpfDc_offsetCorrectionEnable
bool BpfDc_offsetCorrectionEnable
Definition: resolver/v0/resolver.h:584
RDC_configParams::core1
Core_config_t core1
Definition: resolver/v0/resolver.h:630
ADC_observationalData::sin_adc
int16_t sin_adc
Definition: resolver/v0/resolver.h:566
RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR
#define RDC_INTERRUPT_SOURCE_SINSQCOSSQ_HI_ERR
Definition: resolver/v0/resolver.h:251
Diag_Mon_SinCos_Offset_drift_data::offset_drift_cos_lo
bool offset_drift_cos_lo
Definition: resolver/v0/resolver.h:371
RDC_getDiagnosticsRotationalSignalIntegrityData
static void RDC_getDiagnosticsRotationalSignalIntegrityData(uint32_t base, uint8_t resolverCore, Diag_Mon_Rotational_Signal_Integrity_data *monitorData)
Returns the Monitor rotational signal integrity (DOS) diagnostics data bool cos_neg_zc_peak_mismatch_...
Definition: resolver/v0/resolver.h:2577
Core_config_t::Pg_sinGainBypassValue
int16_t Pg_sinGainBypassValue
Definition: resolver/v0/resolver.h:601
RDC_getCoreInterruptStatus
static uint32_t RDC_getCoreInterruptStatus(uint32_t base, uint32_t ResolverCore)
Returns Core interrupt Status.
Definition: resolver/v0/resolver.h:1279
RDC_getCoreEnabledInterruptSources
static uint32_t RDC_getCoreEnabledInterruptSources(uint32_t base, uint8_t ResolverCore)
returns enabled Interrupt Sources
Definition: resolver/v0/resolver.h:1196
RDC_setTrack2Constants
static void RDC_setTrack2Constants(uint32_t base, uint8_t core, Track2Constants_t *track2Constants)
sets up the Track2 loop constants the following are the constants that can be setup using this API
Definition: resolver/v0/resolver.h:1989
RDC_getDiagnosticsWeakAmplitudeData
static void RDC_getDiagnosticsWeakAmplitudeData(uint32_t base, uint8_t resolverCore, Diag_Mon_Sin_Cos_Weak_Amplitude *monitorData)
Returns the Monitor weak Sin or Cos signal below a threshold (LOS) diagnostics data uint16_t lowAmpli...
Definition: resolver/v0/resolver.h:2856
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_threshold_lo
uint16_t excfreqdrift_threshold_lo
Definition: resolver/v0/resolver.h:440
Diag_Mon_SinCos_Offset_drift_data::offset_drift_threshold_lo
int16_t offset_drift_threshold_lo
Definition: resolver/v0/resolver.h:369
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_en
bool excfreqdrift_en
Definition: resolver/v0/resolver.h:446
Diag_Mon_Rotational_Signal_Integrity_data::sin_pos_zc_peak_mismatch_err
bool sin_pos_zc_peak_mismatch_err
Definition: resolver/v0/resolver.h:466
RDC_MAX_IDEAL_SAMPLE_BPF_ADJUST
#define RDC_MAX_IDEAL_SAMPLE_BPF_ADJUST
Definition: resolver/v0/resolver.h:112
Core_config_t::BpfDc_manualCos
int16_t BpfDc_manualCos
Definition: resolver/v0/resolver.h:588
Diag_Mon_Cos_Phase_drift_data::phase_drift_cos_hi
bool phase_drift_cos_hi
Definition: resolver/v0/resolver.h:418
RDC_getAdcSampleRate
static uint32_t RDC_getAdcSampleRate(uint32_t base)
Gets the ADC Sampling Ratio.
Definition: resolver/v0/resolver.h:935
RDC_enableGainAutoCorrection
static void RDC_enableGainAutoCorrection(uint32_t base, uint8_t core)
Enable Gain Auto correction.
Definition: resolver/v0/resolver.h:1884
RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR
#define RDC_INTERRUPT_SOURCE_COS_NEG_ZC_PEAK_MISMATCH_ERR
Definition: resolver/v0/resolver.h:254
RDC_EXCITATION_FREQUENCY_MAX_PHASE
#define RDC_EXCITATION_FREQUENCY_MAX_PHASE
Maximum Phase value that can be programmed for the Excitation signal.
Definition: resolver/v0/resolver.h:85
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_cos_value
int16_t highAmplitude_cos_value
Definition: resolver/v0/resolver.h:517
Diag_Mon_Cos_Phase_drift_data::phase_drift_glitch_count
uint8_t phase_drift_glitch_count
Definition: resolver/v0/resolver.h:417
RDC_disableCoreInterrupt
static void RDC_disableCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
Disable Core Interrupt.
Definition: resolver/v0/resolver.h:1212
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_threshold
uint16_t highAmplitude_threshold
Definition: resolver/v0/resolver.h:514
RDC_init
void RDC_init(uint32_t base, RDC_configParams *params)
Configures the RDC based on the parameter values.
Core_config_t
Struct holds the Resolver Core Configurations Can be passed to RDC_coreParamsInit(Core_config_t* core...
Definition: resolver/v0/resolver.h:582
RDC_enableTrack2Boost
static void RDC_enableTrack2Boost(uint32_t base, uint8_t core)
enables the track2 Boost
Definition: resolver/v0/resolver.h:2013
RDC_getGainEstimation
static void RDC_getGainEstimation(uint32_t base, uint8_t core, int16_t *sinGainEstimate, int16_t *cosGainEstimate)
returns the Gain estimates for sin and cosine gain values
Definition: resolver/v0/resolver.h:1964
RDC_getIdealSamplePeakAvgLimitStatus
static bool RDC_getIdealSamplePeakAvgLimitStatus(uint32_t base, uint8_t core)
Gets the status if the Peak Averaging Limit is reached.
Definition: resolver/v0/resolver.h:1656
RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR
#define RDC_INTERRUPT_SOURCE_PHASEDRIFT_COS_HI_ERR
Definition: resolver/v0/resolver.h:262
RDC_setIdealSampleBpfAdjust
static void RDC_setIdealSampleBpfAdjust(uint32_t base, uint8_t core, uint8_t sampleAdjustCount)
the BPF sample adjust when the BPF is turned on. This configuration takes effect only on the auto mod...
Definition: resolver/v0/resolver.h:1634
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_cos_lo
bool excfreqdrift_cos_lo
Definition: resolver/v0/resolver.h:444
Diag_Mon_Rotational_Signal_Integrity_data::cos_pos_zc_peak_mismatch_err
bool cos_pos_zc_peak_mismatch_err
Definition: resolver/v0/resolver.h:464
RDC_SEQUENCER_MODE_5
#define RDC_SEQUENCER_MODE_5
ADC0/1 Parallelly Sample Sin0, Cos0, Cos1, Sin1 Samples Sequentially For Core0/1. Both Sin(Cos) Sampl...
Definition: resolver/v0/resolver.h:189
RDC_getSequencerInterruptStatus
static uint32_t RDC_getSequencerInterruptStatus(uint32_t base)
Returns Sequencer interrupt Status.
Definition: resolver/v0/resolver.h:1156
RDC_getCalibrationData
static uint32_t RDC_getCalibrationData(uint32_t base, uint8_t CalAdc)
Returns the CAL ADC data for given ADC, if the mode permits.
Definition: resolver/v0/resolver.h:1369
Core_config_t::track2Constants
Track2Constants_t track2Constants
Definition: resolver/v0/resolver.h:605
RDC_setGainBypassValue
static void RDC_setGainBypassValue(uint32_t base, uint8_t core, int16_t sinGainBypass, int16_t cosGainBypass)
Sets the Manual Gain Correction values for Sin and Cos.
Definition: resolver/v0/resolver.h:1924
RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR
#define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_HI_ERR
Definition: resolver/v0/resolver.h:260
RDC_overrideIdealSampleTime
static void RDC_overrideIdealSampleTime(uint32_t base, uint8_t core, uint8_t overrideValue)
sets the Override value for the Ideal Sample Time selection.
Definition: resolver/v0/resolver.h:1571
RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_SIN_FAULT_ERR
#define RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_SIN_FAULT_ERR
Definition: resolver/v0/resolver.h:249
Core_config_t::IdealSample_bottomSampleEnable
bool IdealSample_bottomSampleEnable
Definition: resolver/v0/resolver.h:594
RDC_RESOLVER_CORE0
#define RDC_RESOLVER_CORE0
Macro used to specify resolver core 0.
Definition: resolver/v0/resolver.h:93
baselineParameters::t2Param8
uint8_t t2Param8
Definition: resolver/v0/resolver.h:652
RDC_setIdealSampleMode
static void RDC_setIdealSampleMode(uint32_t base, uint8_t core, uint8_t mode)
Ideal Sample Time Computation Mode selection.
Definition: resolver/v0/resolver.h:1679
RDC_BaselineParametersInit
void RDC_BaselineParametersInit(uint32_t base)
Inits Baseline Parameter configurations.
Diag_Mon_Sin_Cos_Weak_Amplitude::lowAmplitude_threshold
uint16_t lowAmplitude_threshold
Definition: resolver/v0/resolver.h:536
Diag_Mon_Rotational_Signal_Integrity_data::cos_multi_zc_error_err
bool cos_multi_zc_error_err
Definition: resolver/v0/resolver.h:468
Core_config_t::BpfDc_bpfEnable
bool BpfDc_bpfEnable
Definition: resolver/v0/resolver.h:583
RDC_getExcitationSignalAmplitudeControl
static uint32_t RDC_getExcitationSignalAmplitudeControl(uint32_t base)
returns the Amplitude control for the excitation signal
Definition: resolver/v0/resolver.h:1073
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_sin_error
bool highAmplitude_sin_error
Definition: resolver/v0/resolver.h:518
RDC_disableAdcSingleEndedMode
static void RDC_disableAdcSingleEndedMode(uint32_t base)
Disable Single Ended Mode of operation.
Definition: resolver/v0/resolver.h:741
RDC_configParams::Int_core1Interrupts
uint32_t Int_core1Interrupts
Definition: resolver/v0/resolver.h:634
RDC_configParams::adv_config
bool adv_config
Definition: resolver/v0/resolver.h:617
Diag_Mon_SinCos_Gain_drift_data::gaindrift_en
bool gaindrift_en
Definition: resolver/v0/resolver.h:398
RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_LO_ERR
#define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_LO_ERR
Definition: resolver/v0/resolver.h:269
Diag_Mon_SinCos_Gain_drift_data::gain_drift_sin_lo
bool gain_drift_sin_lo
Definition: resolver/v0/resolver.h:397
RDC_enableExcitationSignalSyncIn
static void RDC_enableExcitationSignalSyncIn(uint32_t base)
Enables the Excitation Signal Sync In.
Definition: resolver/v0/resolver.h:950
Diag_Mon_Sin_Cos_Weak_Amplitude::lowAmplitude_glitchcount
uint8_t lowAmplitude_glitchcount
Definition: resolver/v0/resolver.h:537
Track2Constants_t
struct to hold the track2 constant data
Definition: resolver/v0/resolver.h:350
RDC_clearCoreInterrupt
static void RDC_clearCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
Clear the Core Interrupt status.
Definition: resolver/v0/resolver.h:1234
RDC_CORE_OFFSET
#define RDC_CORE_OFFSET
Header Files.
Definition: resolver/v0/resolver.h:78
RDC_configParams::Input_adcBurstCount
uint8_t Input_adcBurstCount
Definition: resolver/v0/resolver.h:620
RDC_setDiagnosticsRotationalSignalIntegrityData
static void RDC_setDiagnosticsRotationalSignalIntegrityData(uint32_t base, uint8_t resolverCore, Diag_Mon_Rotational_Signal_Integrity_data *monitorData)
Sets the Monitor rotational signal integrity (DOS) diagnostics Controls bool cos_neg_zc_peak_mismatch...
Definition: resolver/v0/resolver.h:2627
Diag_Mon_Sin_Cos_High_Amplitude
Structure to hold the control/status data for Diagnostics mentioned under Monitor Sin or Cos saturati...
Definition: resolver/v0/resolver.h:513
RDC_selectCalibrationChannel
static void RDC_selectCalibrationChannel(uint32_t base, uint8_t calChannel)
Selects Calibration Channel for Cal sequence.
Definition: resolver/v0/resolver.h:1335
ADC_observationalData::cos_pgc
int16_t cos_pgc
Definition: resolver/v0/resolver.h:571
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_hi
bool sinsqcossq_hi
Definition: resolver/v0/resolver.h:496
Core_config_t::IdealSample_overrideValue
uint8_t IdealSample_overrideValue
Definition: resolver/v0/resolver.h:590
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_glitchcount
uint8_t excfreqdrift_glitchcount
Definition: resolver/v0/resolver.h:442
Diag_Mon_Cos_Phase_drift_data::phase_drift_cos_lo
bool phase_drift_cos_lo
Definition: resolver/v0/resolver.h:419
Diag_Mon_Sin_Cos_Weak_Amplitude
Structure to hold the control/status data for Diagnostics mentioned under Monitor weak Sin or Cos sig...
Definition: resolver/v0/resolver.h:535
RDC_RESOLVER_CORE1
#define RDC_RESOLVER_CORE1
Macro used to specify resolver core 1.
Definition: resolver/v0/resolver.h:96
RDC_configParams::Input_resolverSequencerMode
uint8_t Input_resolverSequencerMode
Definition: resolver/v0/resolver.h:621
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_sin_value
int16_t highAmplitude_sin_value
Definition: resolver/v0/resolver.h:516
RDC_disableGainAutoCorrection
static void RDC_disableGainAutoCorrection(uint32_t base, uint8_t core)
Disable Gain Auto Correction.
Definition: resolver/v0/resolver.h:1903
ADC_observationalData::sin_rec
int16_t sin_rec
Definition: resolver/v0/resolver.h:568
Diag_Mon_Rotational_Signal_Integrity_data::cos_neg_zc_peak_mismatch_err
bool cos_neg_zc_peak_mismatch_err
Definition: resolver/v0/resolver.h:463
ADC_observationalData::cos_dc
int16_t cos_dc
Definition: resolver/v0/resolver.h:569
RDC_getExcitationSignalFrequencySelect
static uint32_t RDC_getExcitationSignalFrequencySelect(uint32_t base)
Returns the selected Excitation Signal Frequency select.
Definition: resolver/v0/resolver.h:919
RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_HI_ERR
#define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_COS_HI_ERR
Definition: resolver/v0/resolver.h:270
RDC_configParams::core0
Core_config_t core0
Definition: resolver/v0/resolver.h:629
RDC_setExcitationSignalPhase
static void RDC_setExcitationSignalPhase(uint32_t base, uint16_t phase)
Sets the Phase value for the Excitation Signal. Phase values in the range [RDC_EXCITATION_FREQUENCY_M...
Definition: resolver/v0/resolver.h:856
Core_config_t::Pg_cosGainBypassValue
int16_t Pg_cosGainBypassValue
Definition: resolver/v0/resolver.h:602
PeakHistogram_observationalData
Struct to hold the peakHistogram Buckets for Ideal Sample Calculation by SW. once the auto ideal samp...
Definition: resolver/v0/resolver.h:670
RDC_enableBPF
static void RDC_enableBPF(uint32_t base, uint8_t core)
enables Band Pass Filter before DC Offset logic.
Definition: resolver/v0/resolver.h:1428
baselineParameters::t2Param6
uint8_t t2Param6
Definition: resolver/v0/resolver.h:650
RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR
#define RDC_INTERRUPT_SOURCE_LOWAMPLITUDE_ERR
Interrupt Sources Macros.
Definition: resolver/v0/resolver.h:247
RDC_setDiagnosticsHighAmplitudeData
static void RDC_setDiagnosticsHighAmplitudeData(uint32_t base, uint8_t resolverCore, Diag_Mon_Sin_Cos_High_Amplitude *monitorData)
Sets the Monitor Sin or Cos saturation or very high amplitude (DOS) diagnostics Controls uint16_t hig...
Definition: resolver/v0/resolver.h:2817
Diag_Mon_Rotational_Signal_Integrity_data::rotpeak_level
uint16_t rotpeak_level
Definition: resolver/v0/resolver.h:471
Diag_Mon_Rotational_Signal_Integrity_data::sin_neg_zc_peak_mismatch_err
bool sin_neg_zc_peak_mismatch_err
Definition: resolver/v0/resolver.h:465
RDC_disableSequencerInterrupt
static void RDC_disableSequencerInterrupt(uint32_t base)
Disable Sequencer Error Interrupt.
Definition: resolver/v0/resolver.h:1108
RDC_enableDcOffsetAutoCorrection
static void RDC_enableDcOffsetAutoCorrection(uint32_t base, uint8_t core)
Enables Auto DC Offset Correction from the estimated values Disables DC Offset Manual Correction logi...
Definition: resolver/v0/resolver.h:1492
RDC_setDiagnosticsSinCosGainDriftData
static void RDC_setDiagnosticsSinCosGainDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_SinCos_Gain_drift_data *monitorData)
Sets the Monitor Sin or Cos Gain drift (DOS) diagnostics Controls int16_t gain_drift_threshold_hi - t...
Definition: resolver/v0/resolver.h:2274
RDC_getPeakHistogramObservationalData
static void RDC_getPeakHistogramObservationalData(uint32_t base, uint8_t resolverCore, PeakHistogram_observationalData *histogram)
Returns the Peak Histogram Bucket data.
Definition: resolver/v0/resolver.h:2976
Core_config_t::Pg_cosPhaseBypassValue
int16_t Pg_cosPhaseBypassValue
Definition: resolver/v0/resolver.h:603
RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR
#define RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_HI_ERR
Definition: resolver/v0/resolver.h:264
Diag_Mon_Rotational_Signal_Integrity_data::sin_multi_zc_error_count
uint8_t sin_multi_zc_error_count
Definition: resolver/v0/resolver.h:470
RDC_forceSequencerInterrupt
static void RDC_forceSequencerInterrupt(uint32_t base)
Force the Sequencer Error Interrupt.
Definition: resolver/v0/resolver.h:1140
RDC_configParams::ExcFrq_socDelay
uint16_t ExcFrq_socDelay
Definition: resolver/v0/resolver.h:627
RDC_configParams::Int_seqEnable
bool Int_seqEnable
Definition: resolver/v0/resolver.h:632
Diag_Mon_SinCos_Offset_drift_data
Structure to hold the control/status data for Diagnostics mentioned under Monitor Sin or Cos offset d...
Definition: resolver/v0/resolver.h:367
baselineParameters::adcParam1
uint8_t adcParam1
Definition: resolver/v0/resolver.h:645
RDC_disableIdealSampleBottomSampling
static void RDC_disableIdealSampleBottomSampling(uint32_t base, uint8_t core)
Disables Bottom Sampling.
Definition: resolver/v0/resolver.h:1721
RDC_setIdealSampleDetectionThreshold
static void RDC_setIdealSampleDetectionThreshold(uint32_t base, uint8_t core, uint16_t absThresholdValue)
sets Ideal Sample Detetction Threshold. validates the sample for the Ideal Sample time detection comp...
Definition: resolver/v0/resolver.h:1613
Diag_Mon_SinCos_Gain_drift_data::gain_drift_glitch_count
uint8_t gain_drift_glitch_count
Definition: resolver/v0/resolver.h:393
RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR
#define RDC_INTERRUPT_SOURCE_SINSQCOSSQ_LO_ERR
Definition: resolver/v0/resolver.h:250
RDC_getDiagnosticsHighAmplitudeData
static void RDC_getDiagnosticsHighAmplitudeData(uint32_t base, uint8_t resolverCore, Diag_Mon_Sin_Cos_High_Amplitude *monitorData)
Returns the Monitor Sin or Cos saturation or very high amplitude (DOS) diagnostics data uint16_t high...
Definition: resolver/v0/resolver.h:2776
RDC_getPhaseEstimation
static int16_t RDC_getPhaseEstimation(uint32_t base, uint8_t core)
returns the Cos Phase Offset Estimation this can be used only if the RDC_getPhaseGainEstimationStatus...
Definition: resolver/v0/resolver.h:1944
RDC_enableCoreInterrupt
static void RDC_enableCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
enable Core Interrupt
Definition: resolver/v0/resolver.h:1174
RDC_enablePhaseAutoCorrection
static void RDC_enablePhaseAutoCorrection(uint32_t base, uint8_t core)
Enables Phase Auto Correction.
Definition: resolver/v0/resolver.h:1846
Diag_Mon_Signal_Integrity_SinSq_CosSq
Structure to hold the control/status data for Diagnostics mentioned under Monitor signal integrity by...
Definition: resolver/v0/resolver.h:490
RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_COS_LO_ERR
#define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_COS_LO_ERR
Definition: resolver/v0/resolver.h:259
RDC_getPhaseGainEstimationStatus
static bool RDC_getPhaseGainEstimationStatus(uint32_t base, uint8_t core)
Gets status if the Phase Gain Estimation is complete.
Definition: resolver/v0/resolver.h:1746
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_glitchcount
uint8_t highAmplitude_glitchcount
Definition: resolver/v0/resolver.h:515
Diag_Mon_SinCos_Offset_drift_data::offset_drift_sin_hi
bool offset_drift_sin_hi
Definition: resolver/v0/resolver.h:372
Diag_Mon_SinCos_Gain_drift_data::gain_drift_threshold_hi
int16_t gain_drift_threshold_hi
Definition: resolver/v0/resolver.h:391
Core_config_t::BpfDc_manualSin
int16_t BpfDc_manualSin
Definition: resolver/v0/resolver.h:587
Core_config_t::BpfDc_dcOffCal2
uint8_t BpfDc_dcOffCal2
Definition: resolver/v0/resolver.h:586
RDC_SEQUENCER_MODE_0
#define RDC_SEQUENCER_MODE_0
or returned by RDC_getAdcSequencerOperationalMode()
Definition: resolver/v0/resolver.h:157
RDC_getTrack2Angle
static int16_t RDC_getTrack2Angle(uint32_t base, uint8_t core)
Returns Signed 16 bit angle data from Track2 Loop. the data corresponds to -180 to 180 degrees angle ...
Definition: resolver/v0/resolver.h:2073
Core_config_t::Pg_estimationLimit
uint8_t Pg_estimationLimit
Definition: resolver/v0/resolver.h:597
baselineParameters::t2Param9
bool t2Param9
Definition: resolver/v0/resolver.h:653
RDC_paramsInit
void RDC_paramsInit(RDC_configParams *params)
Inits the resolver Configuration parameters.
Diag_Mon_Rotational_Signal_Integrity_data::rotfreq_level
uint16_t rotfreq_level
Definition: resolver/v0/resolver.h:472
RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR
#define RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_LO_ERR
Definition: resolver/v0/resolver.h:265
Track2Constants_t::kvelfilt
uint8_t kvelfilt
Definition: resolver/v0/resolver.h:351
Diag_Mon_ExcFreq_Degradataion_data::excfreqdetected_cos
uint16_t excfreqdetected_cos
Definition: resolver/v0/resolver.h:438
RDC_INTERRUPT_SOURCE_ALL
#define RDC_INTERRUPT_SOURCE_ALL
Definition: resolver/v0/resolver.h:273
baselineParameters::PgParam4
uint16_t PgParam4
Definition: resolver/v0/resolver.h:648
RDC_setDcOffsetManualCorrectionValue
static void RDC_setDcOffsetManualCorrectionValue(uint32_t base, uint8_t core, int16_t sin, int16_t cos)
Sets the Sin, Cosine Manual Correction values for the Dc Offset block in the given resolver core.
Definition: resolver/v0/resolver.h:1516
baselineParameters::t2Param5
uint8_t t2Param5
Definition: resolver/v0/resolver.h:649
ADC_observationalData::sin_dc
int16_t sin_dc
Definition: resolver/v0/resolver.h:570
Diag_Mon_Sin_Cos_High_Amplitude::highAmplitude_cos_error
bool highAmplitude_cos_error
Definition: resolver/v0/resolver.h:519
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_threshold_hi
uint16_t sinsqcossq_threshold_hi
Definition: resolver/v0/resolver.h:491
RDC_disableResolver
static void RDC_disableResolver(uint32_t base)
Disables the Resolver Operation.
Definition: resolver/v0/resolver.h:834
RDC_setExcitationSignalFrequencySelect
static void RDC_setExcitationSignalFrequencySelect(uint32_t base, uint8_t FrequencySel)
Sets the Excitation frequency value from the selected values.
Definition: resolver/v0/resolver.h:895
RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR
#define RDC_INTERRUPT_SOURCE_GAINDRIFT_COS_HI_ERR
Definition: resolver/v0/resolver.h:266
RDC_setDiagnosticsSignalIntegritySquareSumData
static void RDC_setDiagnosticsSignalIntegritySquareSumData(uint32_t base, uint32_t resolverCore, Diag_Mon_Signal_Integrity_SinSq_CosSq *monitorData)
Sets the Monitor signal integrity by checking Sin2+Cos2=Constant (DOS) diagnostics Controls uint16_t ...
Definition: resolver/v0/resolver.h:2730
RDC_configParams::ExcFrq_freqSel
uint8_t ExcFrq_freqSel
Definition: resolver/v0/resolver.h:623
RDC_disableTrack2Boost
static void RDC_disableTrack2Boost(uint32_t base, uint8_t core)
disables the track2 Boost
Definition: resolver/v0/resolver.h:2032
RDC_clearCalibrationStatus
static void RDC_clearCalibrationStatus(uint32_t base)
Clears Calibration Status for re-enabling Calibration Sequence.
Definition: resolver/v0/resolver.h:1318
Diag_Mon_Cos_Phase_drift_data::phase_drift_threshold_hi
int16_t phase_drift_threshold_hi
Definition: resolver/v0/resolver.h:415
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_sinsq
uint16_t sinsqcossq_sinsq
Definition: resolver/v0/resolver.h:495
RDC_disablePhaseAutoCorrection
static void RDC_disablePhaseAutoCorrection(uint32_t base, uint8_t core)
Disables Phase Auto Correction.
Definition: resolver/v0/resolver.h:1865
RDC_getExcitationSignalPhase
static uint32_t RDC_getExcitationSignalPhase(uint32_t base)
Returns the Phase Value programmed for Excitation signal.
Definition: resolver/v0/resolver.h:876
RDC_setDiagnosticsCosPhaseDriftData
static void RDC_setDiagnosticsCosPhaseDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_Cos_Phase_drift_data *monitorData)
Sets the Monitor Cos Phase drift (DOS) diagnostics Controls int16_t phase_drift_threshold_hi - the ph...
Definition: resolver/v0/resolver.h:2387
RDC_configParams::ExcFrq_phase
uint16_t ExcFrq_phase
Definition: resolver/v0/resolver.h:624
RDC_getAdcObservationalData
static void RDC_getAdcObservationalData(uint32_t base, uint8_t resolverCore, ADC_observationalData *AdcData)
Returns the Observational ADC data to struct type ADC_observationalData int16_t cos_adc - SW Observat...
Definition: resolver/v0/resolver.h:2938
RDC_enableAdcSingleEndedMode
static void RDC_enableAdcSingleEndedMode(uint32_t base)
Enable Single Ended Mode of operation.
Definition: resolver/v0/resolver.h:724
baselineParameters::t2Param7
uint8_t t2Param7
Definition: resolver/v0/resolver.h:651
RDC_configParams::Int_core0Interrupts
uint32_t Int_core0Interrupts
Definition: resolver/v0/resolver.h:633
RDC_enableIdealSampleBottomSampling
static void RDC_enableIdealSampleBottomSampling(uint32_t base, uint8_t core)
Enables bottom Sampling. twice the sampling rate than disabled. the track2 loop runs twice the speed ...
Definition: resolver/v0/resolver.h:1702
Diag_Mon_Cos_Phase_drift_data::phase_drift_threshold_lo
int16_t phase_drift_threshold_lo
Definition: resolver/v0/resolver.h:416
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_sin_lo
bool excfreqdrift_sin_lo
Definition: resolver/v0/resolver.h:445
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_glitchcount
uint8_t sinsqcossq_glitchcount
Definition: resolver/v0/resolver.h:493
RDC_getCalibrationStatus
static bool RDC_getCalibrationStatus(uint32_t base)
Returns the Calibration Status.
Definition: resolver/v0/resolver.h:1302
Diag_Mon_SinCos_Gain_drift_data::gain_drift_cos_lo
bool gain_drift_cos_lo
Definition: resolver/v0/resolver.h:395
DebugP.h
RDC_getDiagnosticsSinCosOffsetDriftData
static void RDC_getDiagnosticsSinCosOffsetDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_SinCos_Offset_drift_data *monitorData)
Returns the Monitor Sin or Cos Offset Drift (DOS) diagnostics data int16_t offset_drift_threshold_hi ...
Definition: resolver/v0/resolver.h:2119
RDC_setCosPhaseBypass
static void RDC_setCosPhaseBypass(uint32_t base, uint8_t core, uint16_t cosPhaseBypass)
sets the Cos Phase Manual Bypass Value
Definition: resolver/v0/resolver.h:1787
RDC_enableCalibration
static void RDC_enableCalibration(uint32_t base)
Enables ADC Calibration.
Definition: resolver/v0/resolver.h:1351
Diag_Mon_SinCos_Gain_drift_data
Structure to hold the control/status data for Diagnostics mentioned under Monitor Sin or Cos Gain dri...
Definition: resolver/v0/resolver.h:390
Core_config_t::IdealSample_absThresholdValue
uint16_t IdealSample_absThresholdValue
Definition: resolver/v0/resolver.h:591
RDC_disableExcitationSignalSyncIn
static void RDC_disableExcitationSignalSyncIn(uint32_t base)
Disables the Excitation Signal Sync In.
Definition: resolver/v0/resolver.h:966
ADC_observationalData::sin_pgc
int16_t sin_pgc
Definition: resolver/v0/resolver.h:572
Diag_Mon_Rotational_Signal_Integrity_data::zero_cross_rot_en
bool zero_cross_rot_en
Definition: resolver/v0/resolver.h:473
RDC_getDiagnosticsSinCosGainDriftData
static void RDC_getDiagnosticsSinCosGainDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_SinCos_Gain_drift_data *monitorData)
Returns the Monitor Sin or Cos Gain drift (DOS) diagnostics data int16_t gain_drift_threshold_hi - th...
Definition: resolver/v0/resolver.h:2224
RDC_setAdcSequencerOperationalMode
static void RDC_setAdcSequencerOperationalMode(uint32_t base, uint8_t operationalMode)
sets Sequencer Operational Mode Valid values are RDC_SEQUENCER_MODE_0 - ADC0 SAMPLES SIN AND ADC1 SAM...
Definition: resolver/v0/resolver.h:798
RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_SIN_LO_ERR
#define RDC_INTERRUPT_SOURCE_EXCFREQDRIFT_SIN_LO_ERR
Definition: resolver/v0/resolver.h:258
RDC_enableResolver
static void RDC_enableResolver(uint32_t base)
Enables the Resolver Operation.
Definition: resolver/v0/resolver.h:818
RDC_setAdcBurstCount
static void RDC_setAdcBurstCount(uint32_t base, uint8_t burstCount)
sets the ADC Burst count, samples to be averaged.
Definition: resolver/v0/resolver.h:707
RDC_enableSequencerInterrupt
static void RDC_enableSequencerInterrupt(uint32_t base)
Enable Sequencer Error Interrupt.
Definition: resolver/v0/resolver.h:1092
RDC_getIdealSampleTime
static uint8_t RDC_getIdealSampleTime(uint32_t base, uint8_t core)
Returns the Ideal Sample Time esitimated by the resolver core.
Definition: resolver/v0/resolver.h:1591
RDC_configParams::Input_socWidth
uint8_t Input_socWidth
Definition: resolver/v0/resolver.h:619
RDC_setDiagnosticsExcFreqDegradationData
static void RDC_setDiagnosticsExcFreqDegradationData(uint32_t base, uint8_t resolverCore, Diag_Mon_ExcFreq_Degradataion_data *monitorData)
Sets the Monitor excitation frequency degradation or loss (DOS) diagnostics Controls uint16_t excfreq...
Definition: resolver/v0/resolver.h:2513
Diag_Mon_SinCos_Offset_drift_data::offset_drift_sin_lo
bool offset_drift_sin_lo
Definition: resolver/v0/resolver.h:373
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_threshold_hi
uint16_t excfreqdrift_threshold_hi
Definition: resolver/v0/resolver.h:439
RDC_EXCITATION_FREQUENCY_20K
#define RDC_EXCITATION_FREQUENCY_20K
select 20KHz Excitation Sine Frequency
Definition: resolver/v0/resolver.h:209
RDC_getDiagnosticsSignalIntegritySquareSumData
static void RDC_getDiagnosticsSignalIntegritySquareSumData(uint32_t base, uint32_t resolverCore, Diag_Mon_Signal_Integrity_SinSq_CosSq *monitorData)
Returns the Monitor signal integrity by checking Sin2+Cos2=Constant (DOS) diagnostics data uint16_t s...
Definition: resolver/v0/resolver.h:2681
RDC_DC_OFFSET_SIN_ESTIMATION
#define RDC_DC_OFFSET_SIN_ESTIMATION
Definition: resolver/v0/resolver.h:105
RDC_enablePhaseGainEstimation
static void RDC_enablePhaseGainEstimation(uint32_t base, uint8_t core)
Enables Phase Gain Estimation in the background.
Definition: resolver/v0/resolver.h:1807
RDC_MAX_EXCITATION_AMPLITUDE
#define RDC_MAX_EXCITATION_AMPLITUDE
Maximum Excitation Signal Amplitude.
Definition: resolver/v0/resolver.h:89
Diag_Mon_Rotational_Signal_Integrity_data
Structure to hold the control/status data for Diagnostics mentioned under Monitor rotational signal i...
Definition: resolver/v0/resolver.h:462
RDC_clearExcitationSignalEventStatus
static void RDC_clearExcitationSignalEventStatus(uint32_t base)
Clears SyncIn event status.
Definition: resolver/v0/resolver.h:1002
RDC_disableDcOffsetAutoCorrection
static void RDC_disableDcOffsetAutoCorrection(uint32_t base, uint8_t core)
Disbales Auto Offset correction from the estimated values Enables DC Offset Manual Correction logic.
Definition: resolver/v0/resolver.h:1470
baselineParameters::IdealParam2
uint8_t IdealParam2
Definition: resolver/v0/resolver.h:646
RDC_setPhaseGainEstimationTrainLimit
static void RDC_setPhaseGainEstimationTrainLimit(uint32_t base, uint8_t core, uint8_t pgEstimationLimit)
Sets the Phase Gain Estimation train limit. if the programmed value is x, 2^x rotations are considere...
Definition: resolver/v0/resolver.h:1766
RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_LO_ERR
#define RDC_INTERRUPT_SOURCE_OFFSETDRIFT_SIN_LO_ERR
Definition: resolver/v0/resolver.h:267
Core_config_t::BpfDc_dcOffCal1
uint8_t BpfDc_dcOffCal1
Definition: resolver/v0/resolver.h:585
RDC_forceCoreInterrupt
static void RDC_forceCoreInterrupt(uint32_t base, uint32_t ResolverCore, uint32_t interruptSource)
Force the Core Interrupt.
Definition: resolver/v0/resolver.h:1257
RDC_setExcitationSignalSocDelay
static void RDC_setExcitationSignalSocDelay(uint32_t base, uint16_t socDelay)
Sets the SOC Delay from the PWM Exciation Signal.
Definition: resolver/v0/resolver.h:1036
Core_config_t::IdealSample_sampleAdjustCount
uint8_t IdealSample_sampleAdjustCount
Definition: resolver/v0/resolver.h:592
RDC_INTERRUPT_SOURCE_SIN_NEG_ZC_PEAK_MISMATCH_ERR
#define RDC_INTERRUPT_SOURCE_SIN_NEG_ZC_PEAK_MISMATCH_ERR
Definition: resolver/v0/resolver.h:256
RDC_EXCITATION_FREQUENCY_5K
#define RDC_EXCITATION_FREQUENCY_5K
or returned by RDC_getExcitationSignalFrequencySelect()
Definition: resolver/v0/resolver.h:203
Diag_Mon_SinCos_Offset_drift_data::offset_drift_threshold_hi
int16_t offset_drift_threshold_hi
Definition: resolver/v0/resolver.h:368
RDC_getExcitationSignalPhaseInfo
static uint32_t RDC_getExcitationSignalPhaseInfo(uint32_t base)
Returns the latched value of the last pwm_sync_in rise event of the pwm phase. this is updated on eve...
Definition: resolver/v0/resolver.h:1020
baselineParameters
Struct holds the Baseline Parameter values Can be passed to RDC_BaselineParametersInit(uint32_t base)...
Definition: resolver/v0/resolver.h:644
Diag_Mon_Rotational_Signal_Integrity_data::cos_multi_zc_error_count
uint8_t cos_multi_zc_error_count
Definition: resolver/v0/resolver.h:469
Core_config_t::IdealSample_mode
uint8_t IdealSample_mode
Definition: resolver/v0/resolver.h:593
Diag_Mon_Rotational_Signal_Integrity_data::sin_multi_zc_error_err
bool sin_multi_zc_error_err
Definition: resolver/v0/resolver.h:467
Diag_Mon_Signal_Integrity_SinSq_CosSq::sinsqcossq_threshold_lo
uint16_t sinsqcossq_threshold_lo
Definition: resolver/v0/resolver.h:492
ADC_observationalData::cos_rec
int16_t cos_rec
Definition: resolver/v0/resolver.h:567
RDC_EXCITATION_FREQUENCY_10K
#define RDC_EXCITATION_FREQUENCY_10K
select 10KHz Excitation Sine Frequency
Definition: resolver/v0/resolver.h:206
RDC_getAdcSequencerOperationalMode
static uint32_t RDC_getAdcSequencerOperationalMode(uint32_t base)
returns Sequencer Operational Mode Valid values are RDC_SEQUENCER_MODE_0 - ADC0 SAMPLES SIN AND ADC1 ...
Definition: resolver/v0/resolver.h:770
Diag_Mon_Sin_Cos_Weak_Amplitude::lowAmplitude_cos_value
int16_t lowAmplitude_cos_value
Definition: resolver/v0/resolver.h:540
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:177
Diag_Mon_ExcFreq_Degradataion_data::excfreqdrift_hi
bool excfreqdrift_hi
Definition: resolver/v0/resolver.h:443
Core_config_t::Pg_estimationEnable
bool Pg_estimationEnable
Definition: resolver/v0/resolver.h:596
RDC_getTrack2Velocity
static int32_t RDC_getTrack2Velocity(uint32_t base, uint8_t core)
Returns Signed 32 bit Velocity data from Track2 Loop.
Definition: resolver/v0/resolver.h:2092
PeakHistogram_observationalData::peakHistgoramBucket
uint8_t peakHistgoramBucket[20]
Definition: resolver/v0/resolver.h:671
RDC_disableBPF
static void RDC_disableBPF(uint32_t base, uint8_t core)
Disables Band Pass Filter Logic before DC Offset logic.
Definition: resolver/v0/resolver.h:1448
RDC_configParams::ExcFrq_enableSyncIn
bool ExcFrq_enableSyncIn
Definition: resolver/v0/resolver.h:626
RDC_INTERRUPT_SOURCE_COS_POS_ZC_PEAK_MISMATCH_ERR
#define RDC_INTERRUPT_SOURCE_COS_POS_ZC_PEAK_MISMATCH_ERR
Definition: resolver/v0/resolver.h:255
RDC_setDiagnosticsWeakAmplitudeData
static void RDC_setDiagnosticsWeakAmplitudeData(uint32_t base, uint8_t resolverCore, Diag_Mon_Sin_Cos_Weak_Amplitude *monitorData)
Sets the Monitor weak Sin or Cos signal below a threshold (LOS) diagnostics Controls uint16_t lowAmpl...
Definition: resolver/v0/resolver.h:2895
RDC_setExcitationSignalAmplitudeControl
static void RDC_setExcitationSignalAmplitudeControl(uint32_t base, uint8_t amplitude)
set the Amplitude control for the excitation signal
Definition: resolver/v0/resolver.h:1055
RDC_setAdcSocWidth
static void RDC_setAdcSocWidth(uint32_t base, uint8_t socWidth)
sets the Start of Conversion Width for the ADC conversion
Definition: resolver/v0/resolver.h:684
RDC_getDiagnosticsExcFreqDegradationData
static void RDC_getDiagnosticsExcFreqDegradationData(uint32_t base, uint8_t resolverCore, Diag_Mon_ExcFreq_Degradataion_data *monitorData)
Returns the Monitor excitation frequency degradation or loss (DOS) diagnostics data uint16_t excfreqd...
Definition: resolver/v0/resolver.h:2447
Diag_Mon_Sin_Cos_Weak_Amplitude::lowAmplitude_sin_value
int16_t lowAmplitude_sin_value
Definition: resolver/v0/resolver.h:539
RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR
#define RDC_INTERRUPT_SOURCE_GAINDRIFT_SIN_LO_ERR
Definition: resolver/v0/resolver.h:263
RDC_configParams::ExcFrq_amplitude
uint8_t ExcFrq_amplitude
Definition: resolver/v0/resolver.h:625
RDC_getDiagnosticsCosPhaseDriftData
static void RDC_getDiagnosticsCosPhaseDriftData(uint32_t base, uint8_t resolverCore, Diag_Mon_Cos_Phase_drift_data *monitorData)
Returns the Monitor Cos Phase drift (DOS) diagnostics data int16_t phase_drift_threshold_hi - the con...
Definition: resolver/v0/resolver.h:2343
RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_COS_FAULT_ERR
#define RDC_INTERRUPT_SOURCE_HIGHAMPLITUDE_COS_FAULT_ERR
Definition: resolver/v0/resolver.h:248
Diag_Mon_SinCos_Offset_drift_data::offset_drift_cos_hi
bool offset_drift_cos_hi
Definition: resolver/v0/resolver.h:370
RDC_getExcitationSignalEventStatus
static uint32_t RDC_getExcitationSignalEventStatus(uint32_t base)
returns if there is a sync in event after the RDC_enableResolver() has been called once this returns ...
Definition: resolver/v0/resolver.h:987
RDC_INTERRUPT_SOURCE_SIN_POS_ZC_PEAK_MISMATCH_ERR
#define RDC_INTERRUPT_SOURCE_SIN_POS_ZC_PEAK_MISMATCH_ERR
Definition: resolver/v0/resolver.h:257
Core_config_t::Pg_autoCorrectionEnable
bool Pg_autoCorrectionEnable
Definition: resolver/v0/resolver.h:600
ADC_observationalData
Structure to hold the Observational Data reads int16_t cos_adc - SW Observational ADC data post latch...
Definition: resolver/v0/resolver.h:564
Diag_Mon_SinCos_Offset_drift_data::offset_drift_en
bool offset_drift_en
Definition: resolver/v0/resolver.h:374
RDC_configParams
Struct holds the RDC configurations Can be passed to RDC_paramsInit(RDC_configParams* params); RDC_in...
Definition: resolver/v0/resolver.h:616
Diag_Mon_SinCos_Gain_drift_data::gain_drift_cos_hi
bool gain_drift_cos_hi
Definition: resolver/v0/resolver.h:394