HPM SDK
HPMicro Software Development Kit
hpm_trgm_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_TRGM_H
10 #define HPM_TRGM_H
11 
12 typedef struct {
13  __RW uint32_t FILTCFG[20]; /* 0x0 - 0x4C: Filter configure register */
14  __R uint8_t RESERVED0[176]; /* 0x50 - 0xFF: Reserved */
15  __RW uint32_t TRGOCFG[68]; /* 0x100 - 0x20C: Trigger manager output configure register */
16  __R uint8_t RESERVED1[240]; /* 0x210 - 0x2FF: Reserved */
17  __RW uint32_t DMACFG[4]; /* 0x300 - 0x30C: DMA request configure register */
18  __R uint8_t RESERVED2[240]; /* 0x310 - 0x3FF: Reserved */
19  __RW uint32_t GCR; /* 0x400: General Control Register */
20 } TRGM_Type;
21 
22 
23 /* Bitfield definition for register array: FILTCFG */
24 /*
25  * OUTINV (RW)
26  *
27  * 1- Filter will invert the output
28  * 0- Filter will not invert the output
29  */
30 #define TRGM_FILTCFG_OUTINV_MASK (0x10000UL)
31 #define TRGM_FILTCFG_OUTINV_SHIFT (16U)
32 #define TRGM_FILTCFG_OUTINV_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_OUTINV_SHIFT) & TRGM_FILTCFG_OUTINV_MASK)
33 #define TRGM_FILTCFG_OUTINV_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_OUTINV_MASK) >> TRGM_FILTCFG_OUTINV_SHIFT)
34 
35 /*
36  * MODE (RW)
37  *
38  * This bitfields defines the filter mode
39  * 000-bypass;
40  * 100-rapid change mode;
41  * 101-delay filter mode;
42  * 110-stalbe low mode;
43  * 111-stable high mode
44  */
45 #define TRGM_FILTCFG_MODE_MASK (0xE000U)
46 #define TRGM_FILTCFG_MODE_SHIFT (13U)
47 #define TRGM_FILTCFG_MODE_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_MODE_SHIFT) & TRGM_FILTCFG_MODE_MASK)
48 #define TRGM_FILTCFG_MODE_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_MODE_MASK) >> TRGM_FILTCFG_MODE_SHIFT)
49 
50 /*
51  * SYNCEN (RW)
52  *
53  * set to enable sychronization input signal with TRGM clock
54  */
55 #define TRGM_FILTCFG_SYNCEN_MASK (0x1000U)
56 #define TRGM_FILTCFG_SYNCEN_SHIFT (12U)
57 #define TRGM_FILTCFG_SYNCEN_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_SYNCEN_SHIFT) & TRGM_FILTCFG_SYNCEN_MASK)
58 #define TRGM_FILTCFG_SYNCEN_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_SYNCEN_MASK) >> TRGM_FILTCFG_SYNCEN_SHIFT)
59 
60 /*
61  * FILTLEN (RW)
62  *
63  * This bitfields defines the filter counter length.
64  */
65 #define TRGM_FILTCFG_FILTLEN_MASK (0xFFFU)
66 #define TRGM_FILTCFG_FILTLEN_SHIFT (0U)
67 #define TRGM_FILTCFG_FILTLEN_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_FILTLEN_SHIFT) & TRGM_FILTCFG_FILTLEN_MASK)
68 #define TRGM_FILTCFG_FILTLEN_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_FILTLEN_MASK) >> TRGM_FILTCFG_FILTLEN_SHIFT)
69 
70 /* Bitfield definition for register array: TRGOCFG */
71 /*
72  * OUTINV (RW)
73  *
74  * 1- Invert the output
75  */
76 #define TRGM_TRGOCFG_OUTINV_MASK (0x200U)
77 #define TRGM_TRGOCFG_OUTINV_SHIFT (9U)
78 #define TRGM_TRGOCFG_OUTINV_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_OUTINV_SHIFT) & TRGM_TRGOCFG_OUTINV_MASK)
79 #define TRGM_TRGOCFG_OUTINV_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_OUTINV_MASK) >> TRGM_TRGOCFG_OUTINV_SHIFT)
80 
81 /*
82  * FEDG2PEN (RW)
83  *
84  * 1- The selected input signal falling edge will be convert to an pulse on output. The output pulse can be stably used within the motor control system. When connecting the signal outside the motor system, due to the asynchronization of the clock systems, the clock frequency and signal active length need to be considered.
85  */
86 #define TRGM_TRGOCFG_FEDG2PEN_MASK (0x100U)
87 #define TRGM_TRGOCFG_FEDG2PEN_SHIFT (8U)
88 #define TRGM_TRGOCFG_FEDG2PEN_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_FEDG2PEN_SHIFT) & TRGM_TRGOCFG_FEDG2PEN_MASK)
89 #define TRGM_TRGOCFG_FEDG2PEN_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_FEDG2PEN_MASK) >> TRGM_TRGOCFG_FEDG2PEN_SHIFT)
90 
91 /*
92  * REDG2PEN (RW)
93  *
94  * 1- The selected input signal rising edge will be convert to an pulse on output. The output pulse can be stably used within the motor control system. When connecting the signal outside the motor system, due to the asynchronization of the clock systems, the clock frequency and signal active length need to be considered.
95  */
96 #define TRGM_TRGOCFG_REDG2PEN_MASK (0x80U)
97 #define TRGM_TRGOCFG_REDG2PEN_SHIFT (7U)
98 #define TRGM_TRGOCFG_REDG2PEN_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_REDG2PEN_SHIFT) & TRGM_TRGOCFG_REDG2PEN_MASK)
99 #define TRGM_TRGOCFG_REDG2PEN_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_REDG2PEN_MASK) >> TRGM_TRGOCFG_REDG2PEN_SHIFT)
100 
101 /*
102  * TRIGOSEL (RW)
103  *
104  * This bitfield selects one of the TRGM inputs as output.
105  */
106 #define TRGM_TRGOCFG_TRIGOSEL_MASK (0x7FU)
107 #define TRGM_TRGOCFG_TRIGOSEL_SHIFT (0U)
108 #define TRGM_TRGOCFG_TRIGOSEL_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_TRIGOSEL_SHIFT) & TRGM_TRGOCFG_TRIGOSEL_MASK)
109 #define TRGM_TRGOCFG_TRIGOSEL_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_TRIGOSEL_MASK) >> TRGM_TRGOCFG_TRIGOSEL_SHIFT)
110 
111 /* Bitfield definition for register array: DMACFG */
112 /*
113  * DMASRCSEL (RW)
114  *
115  * This field selects one of the DMA requests as the DMA request output.
116  */
117 #define TRGM_DMACFG_DMASRCSEL_MASK (0x1FU)
118 #define TRGM_DMACFG_DMASRCSEL_SHIFT (0U)
119 #define TRGM_DMACFG_DMASRCSEL_SET(x) (((uint32_t)(x) << TRGM_DMACFG_DMASRCSEL_SHIFT) & TRGM_DMACFG_DMASRCSEL_MASK)
120 #define TRGM_DMACFG_DMASRCSEL_GET(x) (((uint32_t)(x) & TRGM_DMACFG_DMASRCSEL_MASK) >> TRGM_DMACFG_DMASRCSEL_SHIFT)
121 
122 /* Bitfield definition for register: GCR */
123 /*
124  * TRGOPEN (RW)
125  *
126  * The bitfield enable the TRGM outputs.
127  */
128 #define TRGM_GCR_TRGOPEN_MASK (0xFFFU)
129 #define TRGM_GCR_TRGOPEN_SHIFT (0U)
130 #define TRGM_GCR_TRGOPEN_SET(x) (((uint32_t)(x) << TRGM_GCR_TRGOPEN_SHIFT) & TRGM_GCR_TRGOPEN_MASK)
131 #define TRGM_GCR_TRGOPEN_GET(x) (((uint32_t)(x) & TRGM_GCR_TRGOPEN_MASK) >> TRGM_GCR_TRGOPEN_SHIFT)
132 
133 
134 
135 /* FILTCFG register group index macro definition */
136 #define TRGM_FILTCFG_PWM_IN0 (0UL)
137 #define TRGM_FILTCFG_PWM_IN1 (1UL)
138 #define TRGM_FILTCFG_PWM_IN2 (2UL)
139 #define TRGM_FILTCFG_PWM_IN3 (3UL)
140 #define TRGM_FILTCFG_PWM_IN4 (4UL)
141 #define TRGM_FILTCFG_PWM_IN5 (5UL)
142 #define TRGM_FILTCFG_PWM_IN6 (6UL)
143 #define TRGM_FILTCFG_PWM_IN7 (7UL)
144 #define TRGM_FILTCFG_TRGM_IN0 (8UL)
145 #define TRGM_FILTCFG_TRGM_IN1 (9UL)
146 #define TRGM_FILTCFG_TRGM_IN2 (10UL)
147 #define TRGM_FILTCFG_TRGM_IN3 (11UL)
148 #define TRGM_FILTCFG_TRGM_IN4 (12UL)
149 #define TRGM_FILTCFG_TRGM_IN5 (13UL)
150 #define TRGM_FILTCFG_TRGM_IN6 (14UL)
151 #define TRGM_FILTCFG_TRGM_IN7 (15UL)
152 #define TRGM_FILTCFG_TRGM_IN8 (16UL)
153 #define TRGM_FILTCFG_TRGM_IN9 (17UL)
154 #define TRGM_FILTCFG_TRGM_IN10 (18UL)
155 #define TRGM_FILTCFG_TRGM_IN11 (19UL)
156 
157 /* TRGOCFG register group index macro definition */
158 #define TRGM_TRGOCFG_TRGM_OUT0 (0UL)
159 #define TRGM_TRGOCFG_TRGM_OUT1 (1UL)
160 #define TRGM_TRGOCFG_TRGM_OUT2 (2UL)
161 #define TRGM_TRGOCFG_TRGM_OUT3 (3UL)
162 #define TRGM_TRGOCFG_TRGM_OUT4 (4UL)
163 #define TRGM_TRGOCFG_TRGM_OUT5 (5UL)
164 #define TRGM_TRGOCFG_TRGM_OUT6 (6UL)
165 #define TRGM_TRGOCFG_TRGM_OUT7 (7UL)
166 #define TRGM_TRGOCFG_TRGM_OUT8 (8UL)
167 #define TRGM_TRGOCFG_TRGM_OUT9 (9UL)
168 #define TRGM_TRGOCFG_TRGM_OUT10 (10UL)
169 #define TRGM_TRGOCFG_TRGM_OUT11 (11UL)
170 #define TRGM_TRGOCFG_TRGM_OUTX0 (12UL)
171 #define TRGM_TRGOCFG_TRGM_OUTX1 (13UL)
172 #define TRGM_TRGOCFG_PWM_SYNCI (14UL)
173 #define TRGM_TRGOCFG_PWM_FRCI (15UL)
174 #define TRGM_TRGOCFG_PWM_FRCSYNCI (16UL)
175 #define TRGM_TRGOCFG_PWM_SHRLDSYNCI (17UL)
176 #define TRGM_TRGOCFG_PWM_FAULTI0 (18UL)
177 #define TRGM_TRGOCFG_PWM_FAULTI1 (19UL)
178 #define TRGM_TRGOCFG_PWM_FAULTI2 (20UL)
179 #define TRGM_TRGOCFG_PWM_FAULTI3 (21UL)
180 #define TRGM_TRGOCFG_PWM_IN8 (22UL)
181 #define TRGM_TRGOCFG_PWM_IN9 (23UL)
182 #define TRGM_TRGOCFG_PWM_IN10 (24UL)
183 #define TRGM_TRGOCFG_PWM_IN11 (25UL)
184 #define TRGM_TRGOCFG_PWM_IN12 (26UL)
185 #define TRGM_TRGOCFG_PWM_IN13 (27UL)
186 #define TRGM_TRGOCFG_PWM_IN14 (28UL)
187 #define TRGM_TRGOCFG_PWM_IN15 (29UL)
188 #define TRGM_TRGOCFG_PLA_IN0 (30UL)
189 #define TRGM_TRGOCFG_PLA_IN1 (31UL)
190 #define TRGM_TRGOCFG_PLA_IN2 (32UL)
191 #define TRGM_TRGOCFG_PLA_IN3 (33UL)
192 #define TRGM_TRGOCFG_PLA_IN4 (34UL)
193 #define TRGM_TRGOCFG_PLA_IN5 (35UL)
194 #define TRGM_TRGOCFG_PLA_IN6 (36UL)
195 #define TRGM_TRGOCFG_PLA_IN7 (37UL)
196 #define TRGM_TRGOCFG_QEI_A (38UL)
197 #define TRGM_TRGOCFG_QEI_B (39UL)
198 #define TRGM_TRGOCFG_QEI_Z (40UL)
199 #define TRGM_TRGOCFG_QEI_H (41UL)
200 #define TRGM_TRGOCFG_QEI_PAUSE (42UL)
201 #define TRGM_TRGOCFG_QEI_SNAPI (43UL)
202 #define TRGM_TRGOCFG_HALL_U (44UL)
203 #define TRGM_TRGOCFG_HALL_V (45UL)
204 #define TRGM_TRGOCFG_HALL_W (46UL)
205 #define TRGM_TRGOCFG_HALL_SNAPI (47UL)
206 #define TRGM_TRGOCFG_ADC0_STRGI (48UL)
207 #define TRGM_TRGOCFG_ADC1_STRGI (49UL)
208 #define TRGM_TRGOCFG_ADC2_STRGI (50UL)
209 #define TRGM_TRGOCFG_ADCX_PTRGI0A (52UL)
210 #define TRGM_TRGOCFG_ADCX_PTRGI0B (53UL)
211 #define TRGM_TRGOCFG_ADCX_PTRGI0C (54UL)
212 #define TRGM_TRGOCFG_GPTMRA_SYNCI (55UL)
213 #define TRGM_TRGOCFG_GPTMRA_IN2 (56UL)
214 #define TRGM_TRGOCFG_GPTMRA_IN3 (57UL)
215 #define TRGM_TRGOCFG_DAC_BUF_TRIG (58UL)
216 #define TRGM_TRGOCFG_DAC0_STEP_TRIG (59UL)
217 #define TRGM_TRGOCFG_DAC1_STEP_TRIG (60UL)
218 #define TRGM_TRGOCFG_CMPX_WIN (61UL)
219 #define TRGM_TRGOCFG_CAN_PTPC0_CAP (62UL)
220 #define TRGM_TRGOCFG_CAN_PTPC1_CAP (63UL)
221 #define TRGM_TRGOCFG_SDFM_EVT0 (64UL)
222 #define TRGM_TRGOCFG_SDFM_EVT1 (65UL)
223 #define TRGM_TRGOCFG_SDFM_EVT2 (66UL)
224 #define TRGM_TRGOCFG_SDFM_EVT3 (67UL)
225 
226 /* DMACFG register group index macro definition */
227 #define TRGM_DMACFG_0 (0UL)
228 #define TRGM_DMACFG_1 (1UL)
229 #define TRGM_DMACFG_2 (2UL)
230 #define TRGM_DMACFG_3 (3UL)
231 
232 
233 #endif /* HPM_TRGM_H */
Definition: hpm_trgm_regs.h:12