1 /******************************************************************************
2 *  Filename:       hw_lgpt1_h
3 ******************************************************************************
4 *  Copyright (c) 2021 Texas Instruments Incorporated. All rights reserved.
5 *
6 *  Redistribution and use in source and binary forms, with or without
7 *  modification, are permitted provided that the following conditions are met:
8 *
9 *  1) Redistributions of source code must retain the above copyright notice,
10 *     this list of conditions and the following disclaimer.
11 *
12 *  2) Redistributions in binary form must reproduce the above copyright notice,
13 *     this list of conditions and the following disclaimer in the documentation
14 *     and/or other materials provided with the distribution.
15 *
16 *  3) Neither the name of the copyright holder nor the names of its contributors
17 *     may be used to endorse or promote products derived from this software
18 *     without specific prior written permission.
19 *
20 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 *  POSSIBILITY OF SUCH DAMAGE.
31 ******************************************************************************/
32 
33 #ifndef __HW_LGPT1_H__
34 #define __HW_LGPT1_H__
35 
36 //*****************************************************************************
37 //
38 // This section defines the register offsets of
39 // LGPT1 component
40 //
41 //*****************************************************************************
42 // Description Register.
43 // Description Extended
44 // Start Configuration
45 // Timer Control
46 // Output Control
47 // Counter
48 // Clock Prescaler Configuration
49 // Prescaler Event
50 // Channel Input Filter
51 // Fault
52 // Park
53 // Dead Band Delay
54 // Dead Band Control
55 // Direct Memory Accsess
56 // Direct Memory Access
57 // ADC Trigger
58 // IO Controller
59 // Interrupt mask.
60 // Raw interrupt status.
61 // Masked interrupt status.
62 // Interrupt set register.
63 // Interrupt clear register.
64 // Interrupt mask set register.
65 // Interrupt mask clear register.
66 // Debug control
67 // Channel 0 Configuration
68 // Channel 1 Configuration
69 // Channel 2 Configuration
70 // Pipeline Target
71 // Pipeline Channel 0 Capture Compare
72 // Pipeline Channel 1 Capture Compare
73 // Pipeline Channel 2 Capture Compare
74 // Target
75 // Channel 0 Capture Compare
76 // Channel 1 Capture Compare
77 // Channel 2 Capture Compare
78 // Pipeline Target No Clear
79 // Pipeline Channel 0 Capture Compare No Clear
80 // Pipeline Channel 1 Capture Compare No Clear
81 // Pipeline Channel 2 Capture Compare No Clear
82 // Target No Clear
83 // Channel 0 Capture Compare No Clear
84 // Channel 1 Capture Compare No Clear
85 // Channel 2 Capture Compare No Clear
86 #define LGPT1_O_FAULT                                               0x00000024U
87 #define LGPT1_O_PARK                                                0x00000028U
88 #define LGPT1_O_DBDLY                                               0x0000002CU
89 #define LGPT1_O_DBCTL                                               0x00000030U
90 
91 //*****************************************************************************
92 //
93 // Register: LGPT1_O_FAULT
94 //
95 //*****************************************************************************
96 // Field:   [1:0] CTL
97 //
98 // Fault control
99 //
100 // On active fault input the counter can optionally stop. If the counter stops
101 // this is done by hardware, software must then restart the timer if wanted.
102 // The fault input overrides channel 0 IOC input when CTL != DIS.
103 // This means that channel 0 receives fault as input signal when C0CFG.INPUT =
104 // IO and CTL != DIS.
105 //
106 // CHFILT can be used to avoid glitching on the fault input. Fault is level
107 // triggered, the polarity is set by the C0CFG.EDGE field. Here  C0CFG.EDGE =
108 // RISE gives active high and C0CFG.EDGE = FALL gives active low polarity.
109 //
110 // Fault is typically used together with PARK to stop the PWM signal to an
111 // external motor control circuit safely. Configure PARK to ensure predefined
112 // values of the PWM outputs.
113 //
114 // If CTL != DIS the RIS.FAULT interrupt is set immediately when the fault
115 // input is active while CTL.MODE != DIS.
116 //
117 // The three modes of fault is described below:
118 //
119 // CTL = IMMEDIATE
120 // In this mode the counter stops immediately on an active fault input. This is
121 // done by hardware by setting CTL.MODE = DIS. To start the counter software
122 // must set CTL.MODE != DIS.
123 // When the counter has stopped, the input synchronizers and the channel filter
124 // is not running. This means that if RIS.FAULT is cleared it will not be set
125 // again while CTL.MODE = DIS.
126 //
127 // CTL = ZEROCOND
128 // In this mode the counter stops when CNTR = 0 after an active fault input. If
129 // the RIS.FAULT interrupt has been cleared by software before CNTR = 0, and
130 // the fault input is inactive, the counter will continue as normal.
131 // When the counter stops on zero, it can be started again by clearing the
132 // RIS.FAULT interrupt if the fault input is inactive. To change the counter
133 // mode set CTL.MODE = DIS, clear the RIS.FAULT interrupt, then start timer in
134 // wanted mode.
135 //
136 // CTL = IRQ
137 // In this mode only the RIS.FAULT flag is set on an active fault input.
138 // ENUMs:
139 // IRQ                      Interrupt request. Only set RIS.FAULT on active
140 //                          fault.
141 // ZERCOND                  Zero condition. The counter stops when CNTR = 0.
142 // IMMEDIATE                Immediate reaction. The counter stops immediately
143 //                          on fault.
144 // DIS                      Disable. The timer ignores fault.
145 #define LGPT1_FAULT_CTL_W                                                    2U
146 #define LGPT1_FAULT_CTL_M                                           0x00000003U
147 #define LGPT1_FAULT_CTL_S                                                    0U
148 #define LGPT1_FAULT_CTL_IRQ                                         0x00000003U
149 #define LGPT1_FAULT_CTL_ZERCOND                                     0x00000002U
150 #define LGPT1_FAULT_CTL_IMMEDIATE                                   0x00000001U
151 #define LGPT1_FAULT_CTL_DIS                                         0x00000000U
152 
153 //*****************************************************************************
154 //
155 // Register: LGPT1_O_PARK
156 //
157 //*****************************************************************************
158 // Field:     [7] IOCPS2
159 //
160 // IO Complementary Park State 2
161 //
162 // Park state for IO Complementary output 2.
163 // ENUMs:
164 // HIGH                     Output is set high in park mode.
165 // LOW                      Output is set low in park mode.
166 // Field:     [6] IOPS2
167 //
168 // IO Park State 2
169 //
170 // Park state for IO output 2.
171 // ENUMs:
172 // HIGH                     Output is set high in park mode.
173 // LOW                      Output is set low in park mode.
174 // Field:     [5] IOCPS1
175 //
176 // IO Complementary Park State 1
177 //
178 // Park state for IO Complementary output 1.
179 // ENUMs:
180 // HIGH                     Output is set high in park mode.
181 // LOW                      Output is set low in park mode.
182 // Field:     [4] IOPS1
183 //
184 // IO Park State 1
185 //
186 // Park state for IO output 1.
187 // ENUMs:
188 // HIGH                     Output is set high in park mode.
189 // LOW                      Output is set low in park mode.
190 // Field:     [3] IOCPS0
191 //
192 // IO Complementary Park State 0
193 //
194 // Park state for IO Complementary output 0.
195 // ENUMs:
196 // HIGH                     Output is set high in park mode.
197 // LOW                      Output is set low in park mode.
198 // Field:     [2] IOPS0
199 //
200 // IO Park State 0
201 //
202 // Park state for IO output 0.
203 // ENUMs:
204 // HIGH                     Output is set high in park mode.
205 // LOW                      Output is set low in park mode.
206 // Field:   [1:0] CTL
207 //
208 // Park Control.
209 // ENUMs:
210 // BOTH                     Enter parkmode on fault or debug.
211 // DEBUG                    Enter park mode on debug.
212 // FAULT                    Enter park mode on fault.
213 // DIS                      Disable park mode.
214 #define LGPT1_PARK_IOCPS2                                           0x00000080U
215 #define LGPT1_PARK_IOCPS2_M                                         0x00000080U
216 #define LGPT1_PARK_IOCPS2_S                                                  7U
217 #define LGPT1_PARK_IOCPS2_HIGH                                      0x00000080U
218 #define LGPT1_PARK_IOCPS2_LOW                                       0x00000000U
219 #define LGPT1_PARK_IOPS2                                            0x00000040U
220 #define LGPT1_PARK_IOPS2_M                                          0x00000040U
221 #define LGPT1_PARK_IOPS2_S                                                   6U
222 #define LGPT1_PARK_IOPS2_HIGH                                       0x00000040U
223 #define LGPT1_PARK_IOPS2_LOW                                        0x00000000U
224 #define LGPT1_PARK_IOCPS1                                           0x00000020U
225 #define LGPT1_PARK_IOCPS1_M                                         0x00000020U
226 #define LGPT1_PARK_IOCPS1_S                                                  5U
227 #define LGPT1_PARK_IOCPS1_HIGH                                      0x00000020U
228 #define LGPT1_PARK_IOCPS1_LOW                                       0x00000000U
229 #define LGPT1_PARK_IOPS1                                            0x00000010U
230 #define LGPT1_PARK_IOPS1_M                                          0x00000010U
231 #define LGPT1_PARK_IOPS1_S                                                   4U
232 #define LGPT1_PARK_IOPS1_HIGH                                       0x00000010U
233 #define LGPT1_PARK_IOPS1_LOW                                        0x00000000U
234 #define LGPT1_PARK_IOCPS0                                           0x00000008U
235 #define LGPT1_PARK_IOCPS0_M                                         0x00000008U
236 #define LGPT1_PARK_IOCPS0_S                                                  3U
237 #define LGPT1_PARK_IOCPS0_HIGH                                      0x00000008U
238 #define LGPT1_PARK_IOCPS0_LOW                                       0x00000000U
239 #define LGPT1_PARK_IOPS0                                            0x00000004U
240 #define LGPT1_PARK_IOPS0_M                                          0x00000004U
241 #define LGPT1_PARK_IOPS0_S                                                   2U
242 #define LGPT1_PARK_IOPS0_HIGH                                       0x00000004U
243 #define LGPT1_PARK_IOPS0_LOW                                        0x00000000U
244 #define LGPT1_PARK_CTL_W                                                     2U
245 #define LGPT1_PARK_CTL_M                                            0x00000003U
246 #define LGPT1_PARK_CTL_S                                                     0U
247 #define LGPT1_PARK_CTL_BOTH                                         0x00000003U
248 #define LGPT1_PARK_CTL_DEBUG                                        0x00000002U
249 #define LGPT1_PARK_CTL_FAULT                                        0x00000001U
250 #define LGPT1_PARK_CTL_DIS                                          0x00000000U
251 
252 //*****************************************************************************
253 //
254 // Register: LGPT1_O_DBDLY
255 //
256 //*****************************************************************************
257 // Field: [27:16] FALLDLY
258 //
259 // Fall delay.
260 //
261 // The number of system clock periods inserted between the fall of the dead
262 // band reference signal and the rise of the inverted output signal.
263 // Field:  [11:0] RISEDLY
264 //
265 // Rise delay.
266 //
267 // The number of system clock periods inserted between the rise of the dead
268 // band reference signal and the rise of the output signal.
269 #define LGPT1_DBDLY_FALLDLY_W                                               12U
270 #define LGPT1_DBDLY_FALLDLY_M                                       0x0FFF0000U
271 #define LGPT1_DBDLY_FALLDLY_S                                               16U
272 #define LGPT1_DBDLY_RISEDLY_W                                               12U
273 #define LGPT1_DBDLY_RISEDLY_M                                       0x00000FFFU
274 #define LGPT1_DBDLY_RISEDLY_S                                                0U
275 
276 //*****************************************************************************
277 //
278 // Register: LGPT1_O_DBCTL
279 //
280 //*****************************************************************************
281 // Field:     [2] IO2
282 //
283 // Enable dead band on IO and IO complementary output 2.
284 // ENUMs:
285 // EN                       Enable
286 // DIS                      Disable
287 // Field:     [1] IO1
288 //
289 // Enable dead band on IO and IO complementary output 1.
290 // ENUMs:
291 // EN                       Enable
292 // DIS                      Disable
293 // Field:     [0] IO0
294 //
295 // Enable dead band on IO and IO complementary output 0.
296 // ENUMs:
297 // EN                       Enable
298 // DIS                      Disable
299 #define LGPT1_DBCTL_IO2                                             0x00000004U
300 #define LGPT1_DBCTL_IO2_M                                           0x00000004U
301 #define LGPT1_DBCTL_IO2_S                                                    2U
302 #define LGPT1_DBCTL_IO2_EN                                          0x00000004U
303 #define LGPT1_DBCTL_IO2_DIS                                         0x00000000U
304 #define LGPT1_DBCTL_IO1                                             0x00000002U
305 #define LGPT1_DBCTL_IO1_M                                           0x00000002U
306 #define LGPT1_DBCTL_IO1_S                                                    1U
307 #define LGPT1_DBCTL_IO1_EN                                          0x00000002U
308 #define LGPT1_DBCTL_IO1_DIS                                         0x00000000U
309 #define LGPT1_DBCTL_IO0                                             0x00000001U
310 #define LGPT1_DBCTL_IO0_M                                           0x00000001U
311 #define LGPT1_DBCTL_IO0_S                                                    0U
312 #define LGPT1_DBCTL_IO0_EN                                          0x00000001U
313 #define LGPT1_DBCTL_IO0_DIS                                         0x00000000U
314 
315 
316 #endif // __LGPT1__
317