HPM SDK
HPMicro Software Development Kit
hpm_adc16_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_ADC16_H
10 #define HPM_ADC16_H
11 
12 typedef struct {
13  __RW uint32_t CONFIG[12]; /* 0x0 - 0x2C: */
14  __RW uint32_t TRG_DMA_ADDR; /* 0x30: */
15  __RW uint32_t TRG_SW_STA; /* 0x34: */
16  __R uint8_t RESERVED0[968]; /* 0x38 - 0x3FF: Reserved */
17  __R uint32_t BUS_RESULT[16]; /* 0x400 - 0x43C: */
18  __R uint8_t RESERVED1[192]; /* 0x440 - 0x4FF: Reserved */
19  __RW uint32_t BUF_CFG0; /* 0x500: */
20  __R uint8_t RESERVED2[764]; /* 0x504 - 0x7FF: Reserved */
21  __RW uint32_t SEQ_CFG0; /* 0x800: */
22  __RW uint32_t SEQ_DMA_ADDR; /* 0x804: */
23  __R uint32_t SEQ_WR_ADDR; /* 0x808: */
24  __RW uint32_t SEQ_DMA_CFG; /* 0x80C: */
25  __RW uint32_t SEQ_QUE[16]; /* 0x810 - 0x84C: */
26  __RW uint32_t SEQ_HIGH_CFG; /* 0x850: */
27  __R uint8_t RESERVED3[940]; /* 0x854 - 0xBFF: Reserved */
28  struct {
29  __RW uint32_t PRD_CFG; /* 0xC00: */
30  __RW uint32_t PRD_THSHD_CFG; /* 0xC04: */
31  __R uint32_t PRD_RESULT; /* 0xC08: */
32  __R uint8_t RESERVED0[4]; /* 0xC0C - 0xC0F: Reserved */
33  } PRD_CFG[16];
34  __R uint8_t RESERVED4[768]; /* 0xD00 - 0xFFF: Reserved */
35  __RW uint32_t SAMPLE_CFG[16]; /* 0x1000 - 0x103C: */
36  __R uint8_t RESERVED5[196]; /* 0x1040 - 0x1103: Reserved */
37  __RW uint32_t CONV_CFG1; /* 0x1104: */
38  __RW uint32_t ADC_CFG0; /* 0x1108: */
39  __R uint8_t RESERVED6[4]; /* 0x110C - 0x110F: Reserved */
40  __RW uint32_t INT_STS; /* 0x1110: */
41  __RW uint32_t INT_EN; /* 0x1114: */
42  __RW uint32_t TRIGMUX_EN; /* 0x1118: */
43  __RW uint32_t TRG_CMPT_FLAG; /* 0x111C: */
44  __R uint8_t RESERVED7[224]; /* 0x1120 - 0x11FF: Reserved */
45  __RW uint32_t ANA_CTRL0; /* 0x1200: */
46  __R uint8_t RESERVED8[12]; /* 0x1204 - 0x120F: Reserved */
47  __RW uint32_t ANA_STATUS; /* 0x1210: */
48  __R uint8_t RESERVED9[492]; /* 0x1214 - 0x13FF: Reserved */
49  __RW uint16_t ADC16_PARAMS[34]; /* 0x1400 - 0x1442: */
50  __RW uint32_t ADC16_CONFIG0; /* 0x1444: */
51  __R uint8_t RESERVED10[24]; /* 0x1448 - 0x145F: Reserved */
52  __RW uint32_t ADC16_CONFIG1; /* 0x1460: */
53 } ADC16_Type;
54 
55 
56 /* Bitfield definition for register array: CONFIG */
57 /*
58  * TRIG_LEN (WO)
59  *
60  * length for current trigger, can up to 4 conversions for one trigger, from 0 to 3
61  */
62 #define ADC16_CONFIG_TRIG_LEN_MASK (0xC0000000UL)
63 #define ADC16_CONFIG_TRIG_LEN_SHIFT (30U)
64 #define ADC16_CONFIG_TRIG_LEN_SET(x) (((uint32_t)(x) << ADC16_CONFIG_TRIG_LEN_SHIFT) & ADC16_CONFIG_TRIG_LEN_MASK)
65 #define ADC16_CONFIG_TRIG_LEN_GET(x) (((uint32_t)(x) & ADC16_CONFIG_TRIG_LEN_MASK) >> ADC16_CONFIG_TRIG_LEN_SHIFT)
66 
67 /*
68  * INTEN3 (RW)
69  *
70  * interrupt enable for 4th conversion
71  */
72 #define ADC16_CONFIG_INTEN3_MASK (0x20000000UL)
73 #define ADC16_CONFIG_INTEN3_SHIFT (29U)
74 #define ADC16_CONFIG_INTEN3_SET(x) (((uint32_t)(x) << ADC16_CONFIG_INTEN3_SHIFT) & ADC16_CONFIG_INTEN3_MASK)
75 #define ADC16_CONFIG_INTEN3_GET(x) (((uint32_t)(x) & ADC16_CONFIG_INTEN3_MASK) >> ADC16_CONFIG_INTEN3_SHIFT)
76 
77 /*
78  * CHAN3 (RW)
79  *
80  * channel number for 4th conversion
81  */
82 #define ADC16_CONFIG_CHAN3_MASK (0x1F000000UL)
83 #define ADC16_CONFIG_CHAN3_SHIFT (24U)
84 #define ADC16_CONFIG_CHAN3_SET(x) (((uint32_t)(x) << ADC16_CONFIG_CHAN3_SHIFT) & ADC16_CONFIG_CHAN3_MASK)
85 #define ADC16_CONFIG_CHAN3_GET(x) (((uint32_t)(x) & ADC16_CONFIG_CHAN3_MASK) >> ADC16_CONFIG_CHAN3_SHIFT)
86 
87 /*
88  * INTEN2 (RW)
89  *
90  * interrupt enable for 3rd conversion
91  */
92 #define ADC16_CONFIG_INTEN2_MASK (0x200000UL)
93 #define ADC16_CONFIG_INTEN2_SHIFT (21U)
94 #define ADC16_CONFIG_INTEN2_SET(x) (((uint32_t)(x) << ADC16_CONFIG_INTEN2_SHIFT) & ADC16_CONFIG_INTEN2_MASK)
95 #define ADC16_CONFIG_INTEN2_GET(x) (((uint32_t)(x) & ADC16_CONFIG_INTEN2_MASK) >> ADC16_CONFIG_INTEN2_SHIFT)
96 
97 /*
98  * CHAN2 (RW)
99  *
100  * channel number for 3rd conversion
101  */
102 #define ADC16_CONFIG_CHAN2_MASK (0x1F0000UL)
103 #define ADC16_CONFIG_CHAN2_SHIFT (16U)
104 #define ADC16_CONFIG_CHAN2_SET(x) (((uint32_t)(x) << ADC16_CONFIG_CHAN2_SHIFT) & ADC16_CONFIG_CHAN2_MASK)
105 #define ADC16_CONFIG_CHAN2_GET(x) (((uint32_t)(x) & ADC16_CONFIG_CHAN2_MASK) >> ADC16_CONFIG_CHAN2_SHIFT)
106 
107 /*
108  * INTEN1 (RW)
109  *
110  * interrupt enable for 2nd conversion
111  */
112 #define ADC16_CONFIG_INTEN1_MASK (0x2000U)
113 #define ADC16_CONFIG_INTEN1_SHIFT (13U)
114 #define ADC16_CONFIG_INTEN1_SET(x) (((uint32_t)(x) << ADC16_CONFIG_INTEN1_SHIFT) & ADC16_CONFIG_INTEN1_MASK)
115 #define ADC16_CONFIG_INTEN1_GET(x) (((uint32_t)(x) & ADC16_CONFIG_INTEN1_MASK) >> ADC16_CONFIG_INTEN1_SHIFT)
116 
117 /*
118  * CHAN1 (RW)
119  *
120  * channel number for 2nd conversion
121  */
122 #define ADC16_CONFIG_CHAN1_MASK (0x1F00U)
123 #define ADC16_CONFIG_CHAN1_SHIFT (8U)
124 #define ADC16_CONFIG_CHAN1_SET(x) (((uint32_t)(x) << ADC16_CONFIG_CHAN1_SHIFT) & ADC16_CONFIG_CHAN1_MASK)
125 #define ADC16_CONFIG_CHAN1_GET(x) (((uint32_t)(x) & ADC16_CONFIG_CHAN1_MASK) >> ADC16_CONFIG_CHAN1_SHIFT)
126 
127 /*
128  * QUEUE_EN (RW)
129  *
130  * preemption queue enable control
131  */
132 #define ADC16_CONFIG_QUEUE_EN_MASK (0x40U)
133 #define ADC16_CONFIG_QUEUE_EN_SHIFT (6U)
134 #define ADC16_CONFIG_QUEUE_EN_SET(x) (((uint32_t)(x) << ADC16_CONFIG_QUEUE_EN_SHIFT) & ADC16_CONFIG_QUEUE_EN_MASK)
135 #define ADC16_CONFIG_QUEUE_EN_GET(x) (((uint32_t)(x) & ADC16_CONFIG_QUEUE_EN_MASK) >> ADC16_CONFIG_QUEUE_EN_SHIFT)
136 
137 /*
138  * INTEN0 (RW)
139  *
140  * interrupt enable for 1st conversion
141  */
142 #define ADC16_CONFIG_INTEN0_MASK (0x20U)
143 #define ADC16_CONFIG_INTEN0_SHIFT (5U)
144 #define ADC16_CONFIG_INTEN0_SET(x) (((uint32_t)(x) << ADC16_CONFIG_INTEN0_SHIFT) & ADC16_CONFIG_INTEN0_MASK)
145 #define ADC16_CONFIG_INTEN0_GET(x) (((uint32_t)(x) & ADC16_CONFIG_INTEN0_MASK) >> ADC16_CONFIG_INTEN0_SHIFT)
146 
147 /*
148  * CHAN0 (RW)
149  *
150  * channel number for 1st conversion
151  */
152 #define ADC16_CONFIG_CHAN0_MASK (0x1FU)
153 #define ADC16_CONFIG_CHAN0_SHIFT (0U)
154 #define ADC16_CONFIG_CHAN0_SET(x) (((uint32_t)(x) << ADC16_CONFIG_CHAN0_SHIFT) & ADC16_CONFIG_CHAN0_MASK)
155 #define ADC16_CONFIG_CHAN0_GET(x) (((uint32_t)(x) & ADC16_CONFIG_CHAN0_MASK) >> ADC16_CONFIG_CHAN0_SHIFT)
156 
157 /* Bitfield definition for register: TRG_DMA_ADDR */
158 /*
159  * TRG_DMA_ADDR (RW)
160  *
161  * buffer start address for trigger queue, 192byte total, 16 bytes for each trigger (4 bytes for each conversion)
162  */
163 #define ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_MASK (0xFFFFFFFCUL)
164 #define ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_SHIFT (2U)
165 #define ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_SET(x) (((uint32_t)(x) << ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_SHIFT) & ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_MASK)
166 #define ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_GET(x) (((uint32_t)(x) & ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_MASK) >> ADC16_TRG_DMA_ADDR_TRG_DMA_ADDR_SHIFT)
167 
168 /* Bitfield definition for register: TRG_SW_STA */
169 /*
170  * TRG_SW_STA (RW)
171  *
172  * SW trigger start bit, HW will clear it after all conversions(up to 4) finished. SW should make sure it's 0 before set it.
173  */
174 #define ADC16_TRG_SW_STA_TRG_SW_STA_MASK (0x10U)
175 #define ADC16_TRG_SW_STA_TRG_SW_STA_SHIFT (4U)
176 #define ADC16_TRG_SW_STA_TRG_SW_STA_SET(x) (((uint32_t)(x) << ADC16_TRG_SW_STA_TRG_SW_STA_SHIFT) & ADC16_TRG_SW_STA_TRG_SW_STA_MASK)
177 #define ADC16_TRG_SW_STA_TRG_SW_STA_GET(x) (((uint32_t)(x) & ADC16_TRG_SW_STA_TRG_SW_STA_MASK) >> ADC16_TRG_SW_STA_TRG_SW_STA_SHIFT)
178 
179 /*
180  * TRIG_SW_INDEX (RW)
181  *
182  * which trigger for the SW trigger
183  * 0 for trig0a, 1 for trig0b…
184  * 3 for trig1a, …11 for trig3c
185  */
186 #define ADC16_TRG_SW_STA_TRIG_SW_INDEX_MASK (0xFU)
187 #define ADC16_TRG_SW_STA_TRIG_SW_INDEX_SHIFT (0U)
188 #define ADC16_TRG_SW_STA_TRIG_SW_INDEX_SET(x) (((uint32_t)(x) << ADC16_TRG_SW_STA_TRIG_SW_INDEX_SHIFT) & ADC16_TRG_SW_STA_TRIG_SW_INDEX_MASK)
189 #define ADC16_TRG_SW_STA_TRIG_SW_INDEX_GET(x) (((uint32_t)(x) & ADC16_TRG_SW_STA_TRIG_SW_INDEX_MASK) >> ADC16_TRG_SW_STA_TRIG_SW_INDEX_SHIFT)
190 
191 /* Bitfield definition for register array: BUS_RESULT */
192 /*
193  * VALID (RO)
194  *
195  * set after conversion finished if wait_dis is set, cleared after software read.
196  * The first time read with 0 will trigger one new conversion.
197  * If SW read other channel when one channel conversion is in progress, it will not trigger new conversion at other channel, and will get old result with valid 0, also with read_cflct interrupt status bit set.
198  * the result may not realtime if software read once and wait long time to read again
199  */
200 #define ADC16_BUS_RESULT_VALID_MASK (0x10000UL)
201 #define ADC16_BUS_RESULT_VALID_SHIFT (16U)
202 #define ADC16_BUS_RESULT_VALID_GET(x) (((uint32_t)(x) & ADC16_BUS_RESULT_VALID_MASK) >> ADC16_BUS_RESULT_VALID_SHIFT)
203 
204 /*
205  * CHAN_RESULT (RO)
206  *
207  * read this register will trigger one adc conversion.
208  * If wait_dis bit is set, SW will get the latest conversion result(not current one) with valid bit is 0, SW need polling valid bit till it's set to get current result
209  * If wait_dis bit is 0, SW can get the current conversion result with holding the bus, valid bit is always set at this mode. this is not recommended if channel sample time is too long
210  */
211 #define ADC16_BUS_RESULT_CHAN_RESULT_MASK (0xFFFFU)
212 #define ADC16_BUS_RESULT_CHAN_RESULT_SHIFT (0U)
213 #define ADC16_BUS_RESULT_CHAN_RESULT_GET(x) (((uint32_t)(x) & ADC16_BUS_RESULT_CHAN_RESULT_MASK) >> ADC16_BUS_RESULT_CHAN_RESULT_SHIFT)
214 
215 /* Bitfield definition for register: BUF_CFG0 */
216 /*
217  * BUS_MODE_EN (RW)
218  *
219  * bus mode enable
220  */
221 #define ADC16_BUF_CFG0_BUS_MODE_EN_MASK (0x2U)
222 #define ADC16_BUF_CFG0_BUS_MODE_EN_SHIFT (1U)
223 #define ADC16_BUF_CFG0_BUS_MODE_EN_SET(x) (((uint32_t)(x) << ADC16_BUF_CFG0_BUS_MODE_EN_SHIFT) & ADC16_BUF_CFG0_BUS_MODE_EN_MASK)
224 #define ADC16_BUF_CFG0_BUS_MODE_EN_GET(x) (((uint32_t)(x) & ADC16_BUF_CFG0_BUS_MODE_EN_MASK) >> ADC16_BUF_CFG0_BUS_MODE_EN_SHIFT)
225 
226 /*
227  * WAIT_DIS (RW)
228  *
229  * set to disable read waiting, get result immediately but maybe not current conversion result.
230  */
231 #define ADC16_BUF_CFG0_WAIT_DIS_MASK (0x1U)
232 #define ADC16_BUF_CFG0_WAIT_DIS_SHIFT (0U)
233 #define ADC16_BUF_CFG0_WAIT_DIS_SET(x) (((uint32_t)(x) << ADC16_BUF_CFG0_WAIT_DIS_SHIFT) & ADC16_BUF_CFG0_WAIT_DIS_MASK)
234 #define ADC16_BUF_CFG0_WAIT_DIS_GET(x) (((uint32_t)(x) & ADC16_BUF_CFG0_WAIT_DIS_MASK) >> ADC16_BUF_CFG0_WAIT_DIS_SHIFT)
235 
236 /* Bitfield definition for register: SEQ_CFG0 */
237 /*
238  * CYCLE (RO)
239  *
240  * current dma write cycle bit
241  */
242 #define ADC16_SEQ_CFG0_CYCLE_MASK (0x80000000UL)
243 #define ADC16_SEQ_CFG0_CYCLE_SHIFT (31U)
244 #define ADC16_SEQ_CFG0_CYCLE_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_CYCLE_MASK) >> ADC16_SEQ_CFG0_CYCLE_SHIFT)
245 
246 /*
247  * SEQ_LEN (RW)
248  *
249  * sequence queue length, 0 for one, 0xF for 16
250  */
251 #define ADC16_SEQ_CFG0_SEQ_LEN_MASK (0xF00U)
252 #define ADC16_SEQ_CFG0_SEQ_LEN_SHIFT (8U)
253 #define ADC16_SEQ_CFG0_SEQ_LEN_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_SEQ_LEN_SHIFT) & ADC16_SEQ_CFG0_SEQ_LEN_MASK)
254 #define ADC16_SEQ_CFG0_SEQ_LEN_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_SEQ_LEN_MASK) >> ADC16_SEQ_CFG0_SEQ_LEN_SHIFT)
255 
256 /*
257  * RESTART_EN (RW)
258  *
259  * if set together with cont_en, HW will continue process the whole queue after trigger once.
260  * If cont_en is 0, this bit is not used
261  */
262 #define ADC16_SEQ_CFG0_RESTART_EN_MASK (0x10U)
263 #define ADC16_SEQ_CFG0_RESTART_EN_SHIFT (4U)
264 #define ADC16_SEQ_CFG0_RESTART_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_RESTART_EN_SHIFT) & ADC16_SEQ_CFG0_RESTART_EN_MASK)
265 #define ADC16_SEQ_CFG0_RESTART_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_RESTART_EN_MASK) >> ADC16_SEQ_CFG0_RESTART_EN_SHIFT)
266 
267 /*
268  * CONT_EN (RW)
269  *
270  * if set, HW will continue process the queue till end(seq_len) after trigger once
271  */
272 #define ADC16_SEQ_CFG0_CONT_EN_MASK (0x8U)
273 #define ADC16_SEQ_CFG0_CONT_EN_SHIFT (3U)
274 #define ADC16_SEQ_CFG0_CONT_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_CONT_EN_SHIFT) & ADC16_SEQ_CFG0_CONT_EN_MASK)
275 #define ADC16_SEQ_CFG0_CONT_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_CONT_EN_MASK) >> ADC16_SEQ_CFG0_CONT_EN_SHIFT)
276 
277 /*
278  * SW_TRIG (WO)
279  *
280  * SW trigger, pulse signal, cleared by HW one cycle later
281  */
282 #define ADC16_SEQ_CFG0_SW_TRIG_MASK (0x4U)
283 #define ADC16_SEQ_CFG0_SW_TRIG_SHIFT (2U)
284 #define ADC16_SEQ_CFG0_SW_TRIG_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_SW_TRIG_SHIFT) & ADC16_SEQ_CFG0_SW_TRIG_MASK)
285 #define ADC16_SEQ_CFG0_SW_TRIG_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_SW_TRIG_MASK) >> ADC16_SEQ_CFG0_SW_TRIG_SHIFT)
286 
287 /*
288  * SW_TRIG_EN (RW)
289  *
290  * set to enable SW trigger
291  */
292 #define ADC16_SEQ_CFG0_SW_TRIG_EN_MASK (0x2U)
293 #define ADC16_SEQ_CFG0_SW_TRIG_EN_SHIFT (1U)
294 #define ADC16_SEQ_CFG0_SW_TRIG_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_SW_TRIG_EN_SHIFT) & ADC16_SEQ_CFG0_SW_TRIG_EN_MASK)
295 #define ADC16_SEQ_CFG0_SW_TRIG_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_SW_TRIG_EN_MASK) >> ADC16_SEQ_CFG0_SW_TRIG_EN_SHIFT)
296 
297 /*
298  * HW_TRIG_EN (RW)
299  *
300  * set to enable external HW trigger, only trigger on posedge
301  */
302 #define ADC16_SEQ_CFG0_HW_TRIG_EN_MASK (0x1U)
303 #define ADC16_SEQ_CFG0_HW_TRIG_EN_SHIFT (0U)
304 #define ADC16_SEQ_CFG0_HW_TRIG_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_CFG0_HW_TRIG_EN_SHIFT) & ADC16_SEQ_CFG0_HW_TRIG_EN_MASK)
305 #define ADC16_SEQ_CFG0_HW_TRIG_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_CFG0_HW_TRIG_EN_MASK) >> ADC16_SEQ_CFG0_HW_TRIG_EN_SHIFT)
306 
307 /* Bitfield definition for register: SEQ_DMA_ADDR */
308 /*
309  * TAR_ADDR (RW)
310  *
311  * dma target address, should be 4-byte aligned
312  */
313 #define ADC16_SEQ_DMA_ADDR_TAR_ADDR_MASK (0xFFFFFFFCUL)
314 #define ADC16_SEQ_DMA_ADDR_TAR_ADDR_SHIFT (2U)
315 #define ADC16_SEQ_DMA_ADDR_TAR_ADDR_SET(x) (((uint32_t)(x) << ADC16_SEQ_DMA_ADDR_TAR_ADDR_SHIFT) & ADC16_SEQ_DMA_ADDR_TAR_ADDR_MASK)
316 #define ADC16_SEQ_DMA_ADDR_TAR_ADDR_GET(x) (((uint32_t)(x) & ADC16_SEQ_DMA_ADDR_TAR_ADDR_MASK) >> ADC16_SEQ_DMA_ADDR_TAR_ADDR_SHIFT)
317 
318 /* Bitfield definition for register: SEQ_WR_ADDR */
319 /*
320  * SEQ_WR_POINTER (RO)
321  *
322  * HW update this field after each dma write, it indicate the next dma write pointer.
323  * dma write address is (tar_addr+seq_wr_pointer)*4
324  */
325 #define ADC16_SEQ_WR_ADDR_SEQ_WR_POINTER_MASK (0xFFFFFFUL)
326 #define ADC16_SEQ_WR_ADDR_SEQ_WR_POINTER_SHIFT (0U)
327 #define ADC16_SEQ_WR_ADDR_SEQ_WR_POINTER_GET(x) (((uint32_t)(x) & ADC16_SEQ_WR_ADDR_SEQ_WR_POINTER_MASK) >> ADC16_SEQ_WR_ADDR_SEQ_WR_POINTER_SHIFT)
328 
329 /* Bitfield definition for register: SEQ_DMA_CFG */
330 /*
331  * STOP_POS (RW)
332  *
333  * if stop_en is set, SW is responsible to update this field to the next read point, HW should not write data to this point since it's not read out by SW yet
334  */
335 #define ADC16_SEQ_DMA_CFG_STOP_POS_MASK (0xFFF0000UL)
336 #define ADC16_SEQ_DMA_CFG_STOP_POS_SHIFT (16U)
337 #define ADC16_SEQ_DMA_CFG_STOP_POS_SET(x) (((uint32_t)(x) << ADC16_SEQ_DMA_CFG_STOP_POS_SHIFT) & ADC16_SEQ_DMA_CFG_STOP_POS_MASK)
338 #define ADC16_SEQ_DMA_CFG_STOP_POS_GET(x) (((uint32_t)(x) & ADC16_SEQ_DMA_CFG_STOP_POS_MASK) >> ADC16_SEQ_DMA_CFG_STOP_POS_SHIFT)
339 
340 /*
341  * DMA_RST (RW)
342  *
343  * set this bit will reset HW dma write pointer to seq_dma_addr, and set HW cycle bit to 1. dma is halted if this bit is set.
344  * SW should clear all cycle bit in buffer to 0 before clear dma_rst
345  */
346 #define ADC16_SEQ_DMA_CFG_DMA_RST_MASK (0x2000U)
347 #define ADC16_SEQ_DMA_CFG_DMA_RST_SHIFT (13U)
348 #define ADC16_SEQ_DMA_CFG_DMA_RST_SET(x) (((uint32_t)(x) << ADC16_SEQ_DMA_CFG_DMA_RST_SHIFT) & ADC16_SEQ_DMA_CFG_DMA_RST_MASK)
349 #define ADC16_SEQ_DMA_CFG_DMA_RST_GET(x) (((uint32_t)(x) & ADC16_SEQ_DMA_CFG_DMA_RST_MASK) >> ADC16_SEQ_DMA_CFG_DMA_RST_SHIFT)
350 
351 /*
352  * STOP_EN (RW)
353  *
354  * set to stop dma if reach the stop_pos
355  */
356 #define ADC16_SEQ_DMA_CFG_STOP_EN_MASK (0x1000U)
357 #define ADC16_SEQ_DMA_CFG_STOP_EN_SHIFT (12U)
358 #define ADC16_SEQ_DMA_CFG_STOP_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_DMA_CFG_STOP_EN_SHIFT) & ADC16_SEQ_DMA_CFG_STOP_EN_MASK)
359 #define ADC16_SEQ_DMA_CFG_STOP_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_DMA_CFG_STOP_EN_MASK) >> ADC16_SEQ_DMA_CFG_STOP_EN_SHIFT)
360 
361 /*
362  * BUF_LEN (RW)
363  *
364  * dma buffer length, after write to (tar_addr[31:2]+buf_len)*4, the next dma address will be tar_addr[31:2]*4
365  * 0 for 4byte;
366  * 0xFFF for 16kbyte.
367  */
368 #define ADC16_SEQ_DMA_CFG_BUF_LEN_MASK (0xFFFU)
369 #define ADC16_SEQ_DMA_CFG_BUF_LEN_SHIFT (0U)
370 #define ADC16_SEQ_DMA_CFG_BUF_LEN_SET(x) (((uint32_t)(x) << ADC16_SEQ_DMA_CFG_BUF_LEN_SHIFT) & ADC16_SEQ_DMA_CFG_BUF_LEN_MASK)
371 #define ADC16_SEQ_DMA_CFG_BUF_LEN_GET(x) (((uint32_t)(x) & ADC16_SEQ_DMA_CFG_BUF_LEN_MASK) >> ADC16_SEQ_DMA_CFG_BUF_LEN_SHIFT)
372 
373 /* Bitfield definition for register array: SEQ_QUE */
374 /*
375  * SEQ_INT_EN (RW)
376  *
377  * interrupt enable for current conversion
378  */
379 #define ADC16_SEQ_QUE_SEQ_INT_EN_MASK (0x20U)
380 #define ADC16_SEQ_QUE_SEQ_INT_EN_SHIFT (5U)
381 #define ADC16_SEQ_QUE_SEQ_INT_EN_SET(x) (((uint32_t)(x) << ADC16_SEQ_QUE_SEQ_INT_EN_SHIFT) & ADC16_SEQ_QUE_SEQ_INT_EN_MASK)
382 #define ADC16_SEQ_QUE_SEQ_INT_EN_GET(x) (((uint32_t)(x) & ADC16_SEQ_QUE_SEQ_INT_EN_MASK) >> ADC16_SEQ_QUE_SEQ_INT_EN_SHIFT)
383 
384 /*
385  * CHAN_NUM_4_0 (RW)
386  *
387  * channel number for current conversion
388  */
389 #define ADC16_SEQ_QUE_CHAN_NUM_4_0_MASK (0x1FU)
390 #define ADC16_SEQ_QUE_CHAN_NUM_4_0_SHIFT (0U)
391 #define ADC16_SEQ_QUE_CHAN_NUM_4_0_SET(x) (((uint32_t)(x) << ADC16_SEQ_QUE_CHAN_NUM_4_0_SHIFT) & ADC16_SEQ_QUE_CHAN_NUM_4_0_MASK)
392 #define ADC16_SEQ_QUE_CHAN_NUM_4_0_GET(x) (((uint32_t)(x) & ADC16_SEQ_QUE_CHAN_NUM_4_0_MASK) >> ADC16_SEQ_QUE_CHAN_NUM_4_0_SHIFT)
393 
394 /* Bitfield definition for register: SEQ_HIGH_CFG */
395 /*
396  * STOP_POS_HIGH (RW)
397  *
398  */
399 #define ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_MASK (0xFFF000UL)
400 #define ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_SHIFT (12U)
401 #define ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_SET(x) (((uint32_t)(x) << ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_SHIFT) & ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_MASK)
402 #define ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_GET(x) (((uint32_t)(x) & ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_MASK) >> ADC16_SEQ_HIGH_CFG_STOP_POS_HIGH_SHIFT)
403 
404 /*
405  * BUF_LEN_HIGH (RW)
406  *
407  */
408 #define ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_MASK (0xFFFU)
409 #define ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_SHIFT (0U)
410 #define ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_SET(x) (((uint32_t)(x) << ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_SHIFT) & ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_MASK)
411 #define ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_GET(x) (((uint32_t)(x) & ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_MASK) >> ADC16_SEQ_HIGH_CFG_BUF_LEN_HIGH_SHIFT)
412 
413 /* Bitfield definition for register of struct array PRD_CFG: PRD_CFG */
414 /*
415  * PRESCALE (RW)
416  *
417  * 0: 1xclock, 1: 2x, 2: 4x, 3: 8x,…,15: 32768x,…,31: 2Gx
418  */
419 #define ADC16_PRD_CFG_PRD_CFG_PRESCALE_MASK (0x1F00U)
420 #define ADC16_PRD_CFG_PRD_CFG_PRESCALE_SHIFT (8U)
421 #define ADC16_PRD_CFG_PRD_CFG_PRESCALE_SET(x) (((uint32_t)(x) << ADC16_PRD_CFG_PRD_CFG_PRESCALE_SHIFT) & ADC16_PRD_CFG_PRD_CFG_PRESCALE_MASK)
422 #define ADC16_PRD_CFG_PRD_CFG_PRESCALE_GET(x) (((uint32_t)(x) & ADC16_PRD_CFG_PRD_CFG_PRESCALE_MASK) >> ADC16_PRD_CFG_PRD_CFG_PRESCALE_SHIFT)
423 
424 /*
425  * PRD (RW)
426  *
427  * conver period, with prescale.
428  * Set to 0 means disable current channel
429  */
430 #define ADC16_PRD_CFG_PRD_CFG_PRD_MASK (0xFFU)
431 #define ADC16_PRD_CFG_PRD_CFG_PRD_SHIFT (0U)
432 #define ADC16_PRD_CFG_PRD_CFG_PRD_SET(x) (((uint32_t)(x) << ADC16_PRD_CFG_PRD_CFG_PRD_SHIFT) & ADC16_PRD_CFG_PRD_CFG_PRD_MASK)
433 #define ADC16_PRD_CFG_PRD_CFG_PRD_GET(x) (((uint32_t)(x) & ADC16_PRD_CFG_PRD_CFG_PRD_MASK) >> ADC16_PRD_CFG_PRD_CFG_PRD_SHIFT)
434 
435 /* Bitfield definition for register of struct array PRD_CFG: PRD_THSHD_CFG */
436 /*
437  * THSHDH (RW)
438  *
439  * threshold high, assert interrupt(if enabled) if result exceed high or low.
440  */
441 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_MASK (0xFFFF0000UL)
442 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_SHIFT (16U)
443 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_SET(x) (((uint32_t)(x) << ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_SHIFT) & ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_MASK)
444 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_GET(x) (((uint32_t)(x) & ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_MASK) >> ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDH_SHIFT)
445 
446 /*
447  * THSHDL (RW)
448  *
449  * threshold low
450  */
451 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_MASK (0xFFFFU)
452 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_SHIFT (0U)
453 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_SET(x) (((uint32_t)(x) << ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_SHIFT) & ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_MASK)
454 #define ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_GET(x) (((uint32_t)(x) & ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_MASK) >> ADC16_PRD_CFG_PRD_THSHD_CFG_THSHDL_SHIFT)
455 
456 /* Bitfield definition for register of struct array PRD_CFG: PRD_RESULT */
457 /*
458  * CHAN_RESULT (RO)
459  *
460  * adc convert result, update after each valid conversion.
461  * it may be updated period according to config, also may be updated due to other queue convert the same channel
462  */
463 #define ADC16_PRD_CFG_PRD_RESULT_CHAN_RESULT_MASK (0xFFFFU)
464 #define ADC16_PRD_CFG_PRD_RESULT_CHAN_RESULT_SHIFT (0U)
465 #define ADC16_PRD_CFG_PRD_RESULT_CHAN_RESULT_GET(x) (((uint32_t)(x) & ADC16_PRD_CFG_PRD_RESULT_CHAN_RESULT_MASK) >> ADC16_PRD_CFG_PRD_RESULT_CHAN_RESULT_SHIFT)
466 
467 /* Bitfield definition for register array: SAMPLE_CFG */
468 /*
469  * SAMPLE_CLOCK_NUMBER_SHIFT (RW)
470  *
471  * shift for sample clock number
472  */
473 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_MASK (0xE00U)
474 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_SHIFT (9U)
475 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_SET(x) (((uint32_t)(x) << ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_SHIFT) & ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_MASK)
476 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_GET(x) (((uint32_t)(x) & ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_MASK) >> ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT_SHIFT)
477 
478 /*
479  * SAMPLE_CLOCK_NUMBER (RW)
480  *
481  * sample clock number, base on clock_period, default one period
482  */
483 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_MASK (0x1FFU)
484 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT (0U)
485 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SET(x) (((uint32_t)(x) << ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT) & ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_MASK)
486 #define ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_GET(x) (((uint32_t)(x) & ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_MASK) >> ADC16_SAMPLE_CFG_SAMPLE_CLOCK_NUMBER_SHIFT)
487 
488 /* Bitfield definition for register: CONV_CFG1 */
489 /*
490  * CONVERT_CLOCK_NUMBER (RW)
491  *
492  * convert clock numbers, set to 21 (0x15) for 16bit mode, which means convert need 21 adc clock cycles(based on clock after divider);
493  * user can use small value to get faster conversion, but less accuracy, need to config cov_end_cnt at adc16_config1 also.
494  * Ex: use 200MHz bus clock for adc, set sample_clock_number to 4, sample_clock_number_shift to 0, covert_clk_number to 21 for 16bit mode, clock_divider to 3, then each ADC conversion(plus sample) need 25 cycles(50MHz).
495  */
496 #define ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_MASK (0x1F0U)
497 #define ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_SHIFT (4U)
498 #define ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_SET(x) (((uint32_t)(x) << ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_SHIFT) & ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_MASK)
499 #define ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_GET(x) (((uint32_t)(x) & ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_MASK) >> ADC16_CONV_CFG1_CONVERT_CLOCK_NUMBER_SHIFT)
500 
501 /*
502  * CLOCK_DIVIDER (RW)
503  *
504  * clock_period, N half clock cycle per half adc cycle
505  * 0 for same adc_clk and bus_clk,
506  * 1 for 1:2,
507  * 2 for 1:3,
508  * ...
509  * 15 for 1:16
510  * Note: set to 2 can genenerate 66.7MHz adc_clk at 200MHz bus_clk
511  */
512 #define ADC16_CONV_CFG1_CLOCK_DIVIDER_MASK (0xFU)
513 #define ADC16_CONV_CFG1_CLOCK_DIVIDER_SHIFT (0U)
514 #define ADC16_CONV_CFG1_CLOCK_DIVIDER_SET(x) (((uint32_t)(x) << ADC16_CONV_CFG1_CLOCK_DIVIDER_SHIFT) & ADC16_CONV_CFG1_CLOCK_DIVIDER_MASK)
515 #define ADC16_CONV_CFG1_CLOCK_DIVIDER_GET(x) (((uint32_t)(x) & ADC16_CONV_CFG1_CLOCK_DIVIDER_MASK) >> ADC16_CONV_CFG1_CLOCK_DIVIDER_SHIFT)
516 
517 /* Bitfield definition for register: ADC_CFG0 */
518 /*
519  * SEL_SYNC_AHB (RW)
520  *
521  * set to 1 will enable sync AHB bus, to get better bus performance.
522  * Adc_clk must to be set to same as bus clock at this mode
523  */
524 #define ADC16_ADC_CFG0_SEL_SYNC_AHB_MASK (0x80000000UL)
525 #define ADC16_ADC_CFG0_SEL_SYNC_AHB_SHIFT (31U)
526 #define ADC16_ADC_CFG0_SEL_SYNC_AHB_SET(x) (((uint32_t)(x) << ADC16_ADC_CFG0_SEL_SYNC_AHB_SHIFT) & ADC16_ADC_CFG0_SEL_SYNC_AHB_MASK)
527 #define ADC16_ADC_CFG0_SEL_SYNC_AHB_GET(x) (((uint32_t)(x) & ADC16_ADC_CFG0_SEL_SYNC_AHB_MASK) >> ADC16_ADC_CFG0_SEL_SYNC_AHB_SHIFT)
528 
529 /*
530  * ADC_AHB_EN (RW)
531  *
532  * set to 1 to enable ADC DMA to write data to soc memory bus, for trig queue and seq queue;
533  */
534 #define ADC16_ADC_CFG0_ADC_AHB_EN_MASK (0x20000000UL)
535 #define ADC16_ADC_CFG0_ADC_AHB_EN_SHIFT (29U)
536 #define ADC16_ADC_CFG0_ADC_AHB_EN_SET(x) (((uint32_t)(x) << ADC16_ADC_CFG0_ADC_AHB_EN_SHIFT) & ADC16_ADC_CFG0_ADC_AHB_EN_MASK)
537 #define ADC16_ADC_CFG0_ADC_AHB_EN_GET(x) (((uint32_t)(x) & ADC16_ADC_CFG0_ADC_AHB_EN_MASK) >> ADC16_ADC_CFG0_ADC_AHB_EN_SHIFT)
538 
539 /*
540  * PORT3_REALTIME (RW)
541  *
542  * set to enable trg queue stop other queues
543  */
544 #define ADC16_ADC_CFG0_PORT3_REALTIME_MASK (0x1U)
545 #define ADC16_ADC_CFG0_PORT3_REALTIME_SHIFT (0U)
546 #define ADC16_ADC_CFG0_PORT3_REALTIME_SET(x) (((uint32_t)(x) << ADC16_ADC_CFG0_PORT3_REALTIME_SHIFT) & ADC16_ADC_CFG0_PORT3_REALTIME_MASK)
547 #define ADC16_ADC_CFG0_PORT3_REALTIME_GET(x) (((uint32_t)(x) & ADC16_ADC_CFG0_PORT3_REALTIME_MASK) >> ADC16_ADC_CFG0_PORT3_REALTIME_SHIFT)
548 
549 /* Bitfield definition for register: INT_STS */
550 /*
551  * TRIG_CMPT (RW1C)
552  *
553  * interrupt for one trigger conversion complete if enabled
554  */
555 #define ADC16_INT_STS_TRIG_CMPT_MASK (0x80000000UL)
556 #define ADC16_INT_STS_TRIG_CMPT_SHIFT (31U)
557 #define ADC16_INT_STS_TRIG_CMPT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_TRIG_CMPT_SHIFT) & ADC16_INT_STS_TRIG_CMPT_MASK)
558 #define ADC16_INT_STS_TRIG_CMPT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_TRIG_CMPT_MASK) >> ADC16_INT_STS_TRIG_CMPT_SHIFT)
559 
560 /*
561  * TRIG_SW_CFLCT (RW1C)
562  *
563  */
564 #define ADC16_INT_STS_TRIG_SW_CFLCT_MASK (0x40000000UL)
565 #define ADC16_INT_STS_TRIG_SW_CFLCT_SHIFT (30U)
566 #define ADC16_INT_STS_TRIG_SW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_TRIG_SW_CFLCT_SHIFT) & ADC16_INT_STS_TRIG_SW_CFLCT_MASK)
567 #define ADC16_INT_STS_TRIG_SW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_TRIG_SW_CFLCT_MASK) >> ADC16_INT_STS_TRIG_SW_CFLCT_SHIFT)
568 
569 /*
570  * TRIG_HW_CFLCT (RW1C)
571  *
572  */
573 #define ADC16_INT_STS_TRIG_HW_CFLCT_MASK (0x20000000UL)
574 #define ADC16_INT_STS_TRIG_HW_CFLCT_SHIFT (29U)
575 #define ADC16_INT_STS_TRIG_HW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_TRIG_HW_CFLCT_SHIFT) & ADC16_INT_STS_TRIG_HW_CFLCT_MASK)
576 #define ADC16_INT_STS_TRIG_HW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_TRIG_HW_CFLCT_MASK) >> ADC16_INT_STS_TRIG_HW_CFLCT_SHIFT)
577 
578 /*
579  * READ_CFLCT (RW1C)
580  *
581  * read conflict interrupt, set if wait_dis is set, one conversion is in progress, SW read another channel
582  */
583 #define ADC16_INT_STS_READ_CFLCT_MASK (0x10000000UL)
584 #define ADC16_INT_STS_READ_CFLCT_SHIFT (28U)
585 #define ADC16_INT_STS_READ_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_READ_CFLCT_SHIFT) & ADC16_INT_STS_READ_CFLCT_MASK)
586 #define ADC16_INT_STS_READ_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_READ_CFLCT_MASK) >> ADC16_INT_STS_READ_CFLCT_SHIFT)
587 
588 /*
589  * SEQ_SW_CFLCT (RW1C)
590  *
591  * sequence queue conflict interrupt, set if HW or SW trigger received during conversion
592  */
593 #define ADC16_INT_STS_SEQ_SW_CFLCT_MASK (0x8000000UL)
594 #define ADC16_INT_STS_SEQ_SW_CFLCT_SHIFT (27U)
595 #define ADC16_INT_STS_SEQ_SW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_SEQ_SW_CFLCT_SHIFT) & ADC16_INT_STS_SEQ_SW_CFLCT_MASK)
596 #define ADC16_INT_STS_SEQ_SW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_SEQ_SW_CFLCT_MASK) >> ADC16_INT_STS_SEQ_SW_CFLCT_SHIFT)
597 
598 /*
599  * SEQ_HW_CFLCT (RW1C)
600  *
601  */
602 #define ADC16_INT_STS_SEQ_HW_CFLCT_MASK (0x4000000UL)
603 #define ADC16_INT_STS_SEQ_HW_CFLCT_SHIFT (26U)
604 #define ADC16_INT_STS_SEQ_HW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_SEQ_HW_CFLCT_SHIFT) & ADC16_INT_STS_SEQ_HW_CFLCT_MASK)
605 #define ADC16_INT_STS_SEQ_HW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_SEQ_HW_CFLCT_MASK) >> ADC16_INT_STS_SEQ_HW_CFLCT_SHIFT)
606 
607 /*
608  * SEQ_DMAABT (RW1C)
609  *
610  * dma abort interrupt, set if seqence dma write pointer reachs sw read pointer if stop_en is set
611  */
612 #define ADC16_INT_STS_SEQ_DMAABT_MASK (0x2000000UL)
613 #define ADC16_INT_STS_SEQ_DMAABT_SHIFT (25U)
614 #define ADC16_INT_STS_SEQ_DMAABT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_SEQ_DMAABT_SHIFT) & ADC16_INT_STS_SEQ_DMAABT_MASK)
615 #define ADC16_INT_STS_SEQ_DMAABT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_SEQ_DMAABT_MASK) >> ADC16_INT_STS_SEQ_DMAABT_SHIFT)
616 
617 /*
618  * SEQ_CMPT (RW1C)
619  *
620  * the whole sequence complete interrupt
621  */
622 #define ADC16_INT_STS_SEQ_CMPT_MASK (0x1000000UL)
623 #define ADC16_INT_STS_SEQ_CMPT_SHIFT (24U)
624 #define ADC16_INT_STS_SEQ_CMPT_SET(x) (((uint32_t)(x) << ADC16_INT_STS_SEQ_CMPT_SHIFT) & ADC16_INT_STS_SEQ_CMPT_MASK)
625 #define ADC16_INT_STS_SEQ_CMPT_GET(x) (((uint32_t)(x) & ADC16_INT_STS_SEQ_CMPT_MASK) >> ADC16_INT_STS_SEQ_CMPT_SHIFT)
626 
627 /*
628  * SEQ_CVC (RW1C)
629  *
630  * one conversion complete in seq_queue if related seq_int_en is set
631  */
632 #define ADC16_INT_STS_SEQ_CVC_MASK (0x800000UL)
633 #define ADC16_INT_STS_SEQ_CVC_SHIFT (23U)
634 #define ADC16_INT_STS_SEQ_CVC_SET(x) (((uint32_t)(x) << ADC16_INT_STS_SEQ_CVC_SHIFT) & ADC16_INT_STS_SEQ_CVC_MASK)
635 #define ADC16_INT_STS_SEQ_CVC_GET(x) (((uint32_t)(x) & ADC16_INT_STS_SEQ_CVC_MASK) >> ADC16_INT_STS_SEQ_CVC_SHIFT)
636 
637 /*
638  * DMA_FIFO_FULL (RW1C)
639  *
640  * DMA fifo full interrupt, user need to check clock frequency if it's set.
641  */
642 #define ADC16_INT_STS_DMA_FIFO_FULL_MASK (0x400000UL)
643 #define ADC16_INT_STS_DMA_FIFO_FULL_SHIFT (22U)
644 #define ADC16_INT_STS_DMA_FIFO_FULL_SET(x) (((uint32_t)(x) << ADC16_INT_STS_DMA_FIFO_FULL_SHIFT) & ADC16_INT_STS_DMA_FIFO_FULL_MASK)
645 #define ADC16_INT_STS_DMA_FIFO_FULL_GET(x) (((uint32_t)(x) & ADC16_INT_STS_DMA_FIFO_FULL_MASK) >> ADC16_INT_STS_DMA_FIFO_FULL_SHIFT)
646 
647 /*
648  * AHB_ERR (RW1C)
649  *
650  * set if got hresp=1, generally caused by wrong trg_dma_addr or seq_dma_addr
651  */
652 #define ADC16_INT_STS_AHB_ERR_MASK (0x200000UL)
653 #define ADC16_INT_STS_AHB_ERR_SHIFT (21U)
654 #define ADC16_INT_STS_AHB_ERR_SET(x) (((uint32_t)(x) << ADC16_INT_STS_AHB_ERR_SHIFT) & ADC16_INT_STS_AHB_ERR_MASK)
655 #define ADC16_INT_STS_AHB_ERR_GET(x) (((uint32_t)(x) & ADC16_INT_STS_AHB_ERR_MASK) >> ADC16_INT_STS_AHB_ERR_SHIFT)
656 
657 /*
658  * STOP_POS (RW1C)
659  *
660  */
661 #define ADC16_INT_STS_STOP_POS_MASK (0x100000UL)
662 #define ADC16_INT_STS_STOP_POS_SHIFT (20U)
663 #define ADC16_INT_STS_STOP_POS_SET(x) (((uint32_t)(x) << ADC16_INT_STS_STOP_POS_SHIFT) & ADC16_INT_STS_STOP_POS_MASK)
664 #define ADC16_INT_STS_STOP_POS_GET(x) (((uint32_t)(x) & ADC16_INT_STS_STOP_POS_MASK) >> ADC16_INT_STS_STOP_POS_SHIFT)
665 
666 /*
667  * WDOG (RW1C)
668  *
669  * set if one chanel watch dog event triggered
670  */
671 #define ADC16_INT_STS_WDOG_MASK (0xFFFFU)
672 #define ADC16_INT_STS_WDOG_SHIFT (0U)
673 #define ADC16_INT_STS_WDOG_SET(x) (((uint32_t)(x) << ADC16_INT_STS_WDOG_SHIFT) & ADC16_INT_STS_WDOG_MASK)
674 #define ADC16_INT_STS_WDOG_GET(x) (((uint32_t)(x) & ADC16_INT_STS_WDOG_MASK) >> ADC16_INT_STS_WDOG_SHIFT)
675 
676 /* Bitfield definition for register: INT_EN */
677 /*
678  * TRIG_CMPT (RW)
679  *
680  * interrupt for one trigger conversion complete if enabled
681  */
682 #define ADC16_INT_EN_TRIG_CMPT_MASK (0x80000000UL)
683 #define ADC16_INT_EN_TRIG_CMPT_SHIFT (31U)
684 #define ADC16_INT_EN_TRIG_CMPT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_TRIG_CMPT_SHIFT) & ADC16_INT_EN_TRIG_CMPT_MASK)
685 #define ADC16_INT_EN_TRIG_CMPT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_TRIG_CMPT_MASK) >> ADC16_INT_EN_TRIG_CMPT_SHIFT)
686 
687 /*
688  * TRIG_SW_CFLCT (RW)
689  *
690  */
691 #define ADC16_INT_EN_TRIG_SW_CFLCT_MASK (0x40000000UL)
692 #define ADC16_INT_EN_TRIG_SW_CFLCT_SHIFT (30U)
693 #define ADC16_INT_EN_TRIG_SW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_TRIG_SW_CFLCT_SHIFT) & ADC16_INT_EN_TRIG_SW_CFLCT_MASK)
694 #define ADC16_INT_EN_TRIG_SW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_TRIG_SW_CFLCT_MASK) >> ADC16_INT_EN_TRIG_SW_CFLCT_SHIFT)
695 
696 /*
697  * TRIG_HW_CFLCT (RW)
698  *
699  */
700 #define ADC16_INT_EN_TRIG_HW_CFLCT_MASK (0x20000000UL)
701 #define ADC16_INT_EN_TRIG_HW_CFLCT_SHIFT (29U)
702 #define ADC16_INT_EN_TRIG_HW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_TRIG_HW_CFLCT_SHIFT) & ADC16_INT_EN_TRIG_HW_CFLCT_MASK)
703 #define ADC16_INT_EN_TRIG_HW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_TRIG_HW_CFLCT_MASK) >> ADC16_INT_EN_TRIG_HW_CFLCT_SHIFT)
704 
705 /*
706  * READ_CFLCT (RW)
707  *
708  * read conflict interrupt, set if wait_dis is set, one conversion is in progress, SW read another channel
709  */
710 #define ADC16_INT_EN_READ_CFLCT_MASK (0x10000000UL)
711 #define ADC16_INT_EN_READ_CFLCT_SHIFT (28U)
712 #define ADC16_INT_EN_READ_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_READ_CFLCT_SHIFT) & ADC16_INT_EN_READ_CFLCT_MASK)
713 #define ADC16_INT_EN_READ_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_READ_CFLCT_MASK) >> ADC16_INT_EN_READ_CFLCT_SHIFT)
714 
715 /*
716  * SEQ_SW_CFLCT (RW)
717  *
718  * sequence queue conflict interrupt, set if HW or SW trigger received during conversion
719  */
720 #define ADC16_INT_EN_SEQ_SW_CFLCT_MASK (0x8000000UL)
721 #define ADC16_INT_EN_SEQ_SW_CFLCT_SHIFT (27U)
722 #define ADC16_INT_EN_SEQ_SW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_SEQ_SW_CFLCT_SHIFT) & ADC16_INT_EN_SEQ_SW_CFLCT_MASK)
723 #define ADC16_INT_EN_SEQ_SW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_SEQ_SW_CFLCT_MASK) >> ADC16_INT_EN_SEQ_SW_CFLCT_SHIFT)
724 
725 /*
726  * SEQ_HW_CFLCT (RW)
727  *
728  */
729 #define ADC16_INT_EN_SEQ_HW_CFLCT_MASK (0x4000000UL)
730 #define ADC16_INT_EN_SEQ_HW_CFLCT_SHIFT (26U)
731 #define ADC16_INT_EN_SEQ_HW_CFLCT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_SEQ_HW_CFLCT_SHIFT) & ADC16_INT_EN_SEQ_HW_CFLCT_MASK)
732 #define ADC16_INT_EN_SEQ_HW_CFLCT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_SEQ_HW_CFLCT_MASK) >> ADC16_INT_EN_SEQ_HW_CFLCT_SHIFT)
733 
734 /*
735  * SEQ_DMAABT (RW)
736  *
737  * dma abort interrupt, set if seqence dma write pointer reachs sw read pointer if stop_en is set
738  */
739 #define ADC16_INT_EN_SEQ_DMAABT_MASK (0x2000000UL)
740 #define ADC16_INT_EN_SEQ_DMAABT_SHIFT (25U)
741 #define ADC16_INT_EN_SEQ_DMAABT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_SEQ_DMAABT_SHIFT) & ADC16_INT_EN_SEQ_DMAABT_MASK)
742 #define ADC16_INT_EN_SEQ_DMAABT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_SEQ_DMAABT_MASK) >> ADC16_INT_EN_SEQ_DMAABT_SHIFT)
743 
744 /*
745  * SEQ_CMPT (RW)
746  *
747  * the whole sequence complete interrupt
748  */
749 #define ADC16_INT_EN_SEQ_CMPT_MASK (0x1000000UL)
750 #define ADC16_INT_EN_SEQ_CMPT_SHIFT (24U)
751 #define ADC16_INT_EN_SEQ_CMPT_SET(x) (((uint32_t)(x) << ADC16_INT_EN_SEQ_CMPT_SHIFT) & ADC16_INT_EN_SEQ_CMPT_MASK)
752 #define ADC16_INT_EN_SEQ_CMPT_GET(x) (((uint32_t)(x) & ADC16_INT_EN_SEQ_CMPT_MASK) >> ADC16_INT_EN_SEQ_CMPT_SHIFT)
753 
754 /*
755  * SEQ_CVC (RW)
756  *
757  * one conversion complete in seq_queue if related seq_int_en is set
758  */
759 #define ADC16_INT_EN_SEQ_CVC_MASK (0x800000UL)
760 #define ADC16_INT_EN_SEQ_CVC_SHIFT (23U)
761 #define ADC16_INT_EN_SEQ_CVC_SET(x) (((uint32_t)(x) << ADC16_INT_EN_SEQ_CVC_SHIFT) & ADC16_INT_EN_SEQ_CVC_MASK)
762 #define ADC16_INT_EN_SEQ_CVC_GET(x) (((uint32_t)(x) & ADC16_INT_EN_SEQ_CVC_MASK) >> ADC16_INT_EN_SEQ_CVC_SHIFT)
763 
764 /*
765  * DMA_FIFO_FULL (RW)
766  *
767  * DMA fifo full interrupt, user need to check clock frequency if it's set.
768  */
769 #define ADC16_INT_EN_DMA_FIFO_FULL_MASK (0x400000UL)
770 #define ADC16_INT_EN_DMA_FIFO_FULL_SHIFT (22U)
771 #define ADC16_INT_EN_DMA_FIFO_FULL_SET(x) (((uint32_t)(x) << ADC16_INT_EN_DMA_FIFO_FULL_SHIFT) & ADC16_INT_EN_DMA_FIFO_FULL_MASK)
772 #define ADC16_INT_EN_DMA_FIFO_FULL_GET(x) (((uint32_t)(x) & ADC16_INT_EN_DMA_FIFO_FULL_MASK) >> ADC16_INT_EN_DMA_FIFO_FULL_SHIFT)
773 
774 /*
775  * AHB_ERR (RW)
776  *
777  * set if got hresp=1, generally caused by wrong trg_dma_addr or seq_dma_addr
778  */
779 #define ADC16_INT_EN_AHB_ERR_MASK (0x200000UL)
780 #define ADC16_INT_EN_AHB_ERR_SHIFT (21U)
781 #define ADC16_INT_EN_AHB_ERR_SET(x) (((uint32_t)(x) << ADC16_INT_EN_AHB_ERR_SHIFT) & ADC16_INT_EN_AHB_ERR_MASK)
782 #define ADC16_INT_EN_AHB_ERR_GET(x) (((uint32_t)(x) & ADC16_INT_EN_AHB_ERR_MASK) >> ADC16_INT_EN_AHB_ERR_SHIFT)
783 
784 /*
785  * STOP_POS (RW)
786  *
787  */
788 #define ADC16_INT_EN_STOP_POS_MASK (0x100000UL)
789 #define ADC16_INT_EN_STOP_POS_SHIFT (20U)
790 #define ADC16_INT_EN_STOP_POS_SET(x) (((uint32_t)(x) << ADC16_INT_EN_STOP_POS_SHIFT) & ADC16_INT_EN_STOP_POS_MASK)
791 #define ADC16_INT_EN_STOP_POS_GET(x) (((uint32_t)(x) & ADC16_INT_EN_STOP_POS_MASK) >> ADC16_INT_EN_STOP_POS_SHIFT)
792 
793 /*
794  * WDOG (RW)
795  *
796  * set if one chanel watch dog event triggered
797  */
798 #define ADC16_INT_EN_WDOG_MASK (0xFFFFU)
799 #define ADC16_INT_EN_WDOG_SHIFT (0U)
800 #define ADC16_INT_EN_WDOG_SET(x) (((uint32_t)(x) << ADC16_INT_EN_WDOG_SHIFT) & ADC16_INT_EN_WDOG_MASK)
801 #define ADC16_INT_EN_WDOG_GET(x) (((uint32_t)(x) & ADC16_INT_EN_WDOG_MASK) >> ADC16_INT_EN_WDOG_SHIFT)
802 
803 /* Bitfield definition for register: TRIGMUX_EN */
804 /*
805  * SEQ_CMPT (RW)
806  *
807  */
808 #define ADC16_TRIGMUX_EN_SEQ_CMPT_MASK (0x1000000UL)
809 #define ADC16_TRIGMUX_EN_SEQ_CMPT_SHIFT (24U)
810 #define ADC16_TRIGMUX_EN_SEQ_CMPT_SET(x) (((uint32_t)(x) << ADC16_TRIGMUX_EN_SEQ_CMPT_SHIFT) & ADC16_TRIGMUX_EN_SEQ_CMPT_MASK)
811 #define ADC16_TRIGMUX_EN_SEQ_CMPT_GET(x) (((uint32_t)(x) & ADC16_TRIGMUX_EN_SEQ_CMPT_MASK) >> ADC16_TRIGMUX_EN_SEQ_CMPT_SHIFT)
812 
813 /*
814  * SEQ_CVC (RW)
815  *
816  */
817 #define ADC16_TRIGMUX_EN_SEQ_CVC_MASK (0x800000UL)
818 #define ADC16_TRIGMUX_EN_SEQ_CVC_SHIFT (23U)
819 #define ADC16_TRIGMUX_EN_SEQ_CVC_SET(x) (((uint32_t)(x) << ADC16_TRIGMUX_EN_SEQ_CVC_SHIFT) & ADC16_TRIGMUX_EN_SEQ_CVC_MASK)
820 #define ADC16_TRIGMUX_EN_SEQ_CVC_GET(x) (((uint32_t)(x) & ADC16_TRIGMUX_EN_SEQ_CVC_MASK) >> ADC16_TRIGMUX_EN_SEQ_CVC_SHIFT)
821 
822 /*
823  * STOP_POS (RW)
824  *
825  */
826 #define ADC16_TRIGMUX_EN_STOP_POS_MASK (0x100000UL)
827 #define ADC16_TRIGMUX_EN_STOP_POS_SHIFT (20U)
828 #define ADC16_TRIGMUX_EN_STOP_POS_SET(x) (((uint32_t)(x) << ADC16_TRIGMUX_EN_STOP_POS_SHIFT) & ADC16_TRIGMUX_EN_STOP_POS_MASK)
829 #define ADC16_TRIGMUX_EN_STOP_POS_GET(x) (((uint32_t)(x) & ADC16_TRIGMUX_EN_STOP_POS_MASK) >> ADC16_TRIGMUX_EN_STOP_POS_SHIFT)
830 
831 /*
832  * WDOG (RW)
833  *
834  */
835 #define ADC16_TRIGMUX_EN_WDOG_MASK (0xFFFFU)
836 #define ADC16_TRIGMUX_EN_WDOG_SHIFT (0U)
837 #define ADC16_TRIGMUX_EN_WDOG_SET(x) (((uint32_t)(x) << ADC16_TRIGMUX_EN_WDOG_SHIFT) & ADC16_TRIGMUX_EN_WDOG_MASK)
838 #define ADC16_TRIGMUX_EN_WDOG_GET(x) (((uint32_t)(x) & ADC16_TRIGMUX_EN_WDOG_MASK) >> ADC16_TRIGMUX_EN_WDOG_SHIFT)
839 
840 /* Bitfield definition for register: TRG_CMPT_FLAG */
841 /*
842  * TRG_CMPT_FLAG (RW1C)
843  *
844  */
845 #define ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_MASK (0xFFFU)
846 #define ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_SHIFT (0U)
847 #define ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_SET(x) (((uint32_t)(x) << ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_SHIFT) & ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_MASK)
848 #define ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_GET(x) (((uint32_t)(x) & ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_MASK) >> ADC16_TRG_CMPT_FLAG_TRG_CMPT_FLAG_SHIFT)
849 
850 /* Bitfield definition for register: ANA_CTRL0 */
851 /*
852  * MOTO_EN (RW)
853  *
854  * "set to enable moto_soc and moto_valid.
855  * Should use AHB clock for adc, this bit can be used avoid async output"
856  */
857 #define ADC16_ANA_CTRL0_MOTO_EN_MASK (0x80000000UL)
858 #define ADC16_ANA_CTRL0_MOTO_EN_SHIFT (31U)
859 #define ADC16_ANA_CTRL0_MOTO_EN_SET(x) (((uint32_t)(x) << ADC16_ANA_CTRL0_MOTO_EN_SHIFT) & ADC16_ANA_CTRL0_MOTO_EN_MASK)
860 #define ADC16_ANA_CTRL0_MOTO_EN_GET(x) (((uint32_t)(x) & ADC16_ANA_CTRL0_MOTO_EN_MASK) >> ADC16_ANA_CTRL0_MOTO_EN_SHIFT)
861 
862 /*
863  * ADC_CLK_ON (RW)
864  *
865  * set to enable adc clock to analog, Software should set this bit before access to any adc16_* register.
866  * MUST set clock_period to 0 or 1 for adc16 reg access
867  */
868 #define ADC16_ANA_CTRL0_ADC_CLK_ON_MASK (0x1000U)
869 #define ADC16_ANA_CTRL0_ADC_CLK_ON_SHIFT (12U)
870 #define ADC16_ANA_CTRL0_ADC_CLK_ON_SET(x) (((uint32_t)(x) << ADC16_ANA_CTRL0_ADC_CLK_ON_SHIFT) & ADC16_ANA_CTRL0_ADC_CLK_ON_MASK)
871 #define ADC16_ANA_CTRL0_ADC_CLK_ON_GET(x) (((uint32_t)(x) & ADC16_ANA_CTRL0_ADC_CLK_ON_MASK) >> ADC16_ANA_CTRL0_ADC_CLK_ON_SHIFT)
872 
873 /*
874  * STARTCAL (RW)
875  *
876  * set to start the offset calibration cycle (Active H). user need to clear it after setting it.
877  */
878 #define ADC16_ANA_CTRL0_STARTCAL_MASK (0x4U)
879 #define ADC16_ANA_CTRL0_STARTCAL_SHIFT (2U)
880 #define ADC16_ANA_CTRL0_STARTCAL_SET(x) (((uint32_t)(x) << ADC16_ANA_CTRL0_STARTCAL_SHIFT) & ADC16_ANA_CTRL0_STARTCAL_MASK)
881 #define ADC16_ANA_CTRL0_STARTCAL_GET(x) (((uint32_t)(x) & ADC16_ANA_CTRL0_STARTCAL_MASK) >> ADC16_ANA_CTRL0_STARTCAL_SHIFT)
882 
883 /* Bitfield definition for register: ANA_STATUS */
884 /*
885  * CALON (RW)
886  *
887  * Indicates if the ADC is in calibration mode (Active H).
888  */
889 #define ADC16_ANA_STATUS_CALON_MASK (0x80U)
890 #define ADC16_ANA_STATUS_CALON_SHIFT (7U)
891 #define ADC16_ANA_STATUS_CALON_SET(x) (((uint32_t)(x) << ADC16_ANA_STATUS_CALON_SHIFT) & ADC16_ANA_STATUS_CALON_MASK)
892 #define ADC16_ANA_STATUS_CALON_GET(x) (((uint32_t)(x) & ADC16_ANA_STATUS_CALON_MASK) >> ADC16_ANA_STATUS_CALON_SHIFT)
893 
894 /* Bitfield definition for register array: ADC16_PARAMS */
895 /*
896  * PARAM_VAL (RW)
897  *
898  */
899 #define ADC16_ADC16_PARAMS_PARAM_VAL_MASK (0xFFFFU)
900 #define ADC16_ADC16_PARAMS_PARAM_VAL_SHIFT (0U)
901 #define ADC16_ADC16_PARAMS_PARAM_VAL_SET(x) (((uint16_t)(x) << ADC16_ADC16_PARAMS_PARAM_VAL_SHIFT) & ADC16_ADC16_PARAMS_PARAM_VAL_MASK)
902 #define ADC16_ADC16_PARAMS_PARAM_VAL_GET(x) (((uint16_t)(x) & ADC16_ADC16_PARAMS_PARAM_VAL_MASK) >> ADC16_ADC16_PARAMS_PARAM_VAL_SHIFT)
903 
904 /* Bitfield definition for register: ADC16_CONFIG0 */
905 /*
906  * REG_EN (RW)
907  *
908  * set to enable regulator
909  */
910 #define ADC16_ADC16_CONFIG0_REG_EN_MASK (0x1000000UL)
911 #define ADC16_ADC16_CONFIG0_REG_EN_SHIFT (24U)
912 #define ADC16_ADC16_CONFIG0_REG_EN_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG0_REG_EN_SHIFT) & ADC16_ADC16_CONFIG0_REG_EN_MASK)
913 #define ADC16_ADC16_CONFIG0_REG_EN_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG0_REG_EN_MASK) >> ADC16_ADC16_CONFIG0_REG_EN_SHIFT)
914 
915 /*
916  * BANDGAP_EN (RW)
917  *
918  * set to enable bandgap. user should set reg_en and bandgap_en before use adc16.
919  */
920 #define ADC16_ADC16_CONFIG0_BANDGAP_EN_MASK (0x800000UL)
921 #define ADC16_ADC16_CONFIG0_BANDGAP_EN_SHIFT (23U)
922 #define ADC16_ADC16_CONFIG0_BANDGAP_EN_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG0_BANDGAP_EN_SHIFT) & ADC16_ADC16_CONFIG0_BANDGAP_EN_MASK)
923 #define ADC16_ADC16_CONFIG0_BANDGAP_EN_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG0_BANDGAP_EN_MASK) >> ADC16_ADC16_CONFIG0_BANDGAP_EN_SHIFT)
924 
925 /*
926  * CAL_AVG_CFG (RW)
927  *
928  * for average the calibration result.
929  * 0- 1 loop; 1- 2 loops; 2- 4 loops; 3- 8 loops;
930  * 4- 16 loops; 5-32 loops; others reserved
931  */
932 #define ADC16_ADC16_CONFIG0_CAL_AVG_CFG_MASK (0x700000UL)
933 #define ADC16_ADC16_CONFIG0_CAL_AVG_CFG_SHIFT (20U)
934 #define ADC16_ADC16_CONFIG0_CAL_AVG_CFG_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG0_CAL_AVG_CFG_SHIFT) & ADC16_ADC16_CONFIG0_CAL_AVG_CFG_MASK)
935 #define ADC16_ADC16_CONFIG0_CAL_AVG_CFG_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG0_CAL_AVG_CFG_MASK) >> ADC16_ADC16_CONFIG0_CAL_AVG_CFG_SHIFT)
936 
937 /*
938  * PREEMPT_EN (RW)
939  *
940  * set to enable preemption feature
941  */
942 #define ADC16_ADC16_CONFIG0_PREEMPT_EN_MASK (0x4000U)
943 #define ADC16_ADC16_CONFIG0_PREEMPT_EN_SHIFT (14U)
944 #define ADC16_ADC16_CONFIG0_PREEMPT_EN_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG0_PREEMPT_EN_SHIFT) & ADC16_ADC16_CONFIG0_PREEMPT_EN_MASK)
945 #define ADC16_ADC16_CONFIG0_PREEMPT_EN_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG0_PREEMPT_EN_MASK) >> ADC16_ADC16_CONFIG0_PREEMPT_EN_SHIFT)
946 
947 /*
948  * CONV_PARAM (RW)
949  *
950  * conversion parameter
951  */
952 #define ADC16_ADC16_CONFIG0_CONV_PARAM_MASK (0x3FFFU)
953 #define ADC16_ADC16_CONFIG0_CONV_PARAM_SHIFT (0U)
954 #define ADC16_ADC16_CONFIG0_CONV_PARAM_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG0_CONV_PARAM_SHIFT) & ADC16_ADC16_CONFIG0_CONV_PARAM_MASK)
955 #define ADC16_ADC16_CONFIG0_CONV_PARAM_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG0_CONV_PARAM_MASK) >> ADC16_ADC16_CONFIG0_CONV_PARAM_SHIFT)
956 
957 /* Bitfield definition for register: ADC16_CONFIG1 */
958 /*
959  * COV_END_CNT (RW)
960  *
961  * used for faster conversion, user can change it to get higher convert speed(but less accuracy).
962  * should set to (21-convert_clock_number+1).
963  */
964 #define ADC16_ADC16_CONFIG1_COV_END_CNT_MASK (0x1F00U)
965 #define ADC16_ADC16_CONFIG1_COV_END_CNT_SHIFT (8U)
966 #define ADC16_ADC16_CONFIG1_COV_END_CNT_SET(x) (((uint32_t)(x) << ADC16_ADC16_CONFIG1_COV_END_CNT_SHIFT) & ADC16_ADC16_CONFIG1_COV_END_CNT_MASK)
967 #define ADC16_ADC16_CONFIG1_COV_END_CNT_GET(x) (((uint32_t)(x) & ADC16_ADC16_CONFIG1_COV_END_CNT_MASK) >> ADC16_ADC16_CONFIG1_COV_END_CNT_SHIFT)
968 
969 
970 
971 /* CONFIG register group index macro definition */
972 #define ADC16_CONFIG_TRG0A (0UL)
973 #define ADC16_CONFIG_TRG0B (1UL)
974 #define ADC16_CONFIG_TRG0C (2UL)
975 #define ADC16_CONFIG_TRG1A (3UL)
976 #define ADC16_CONFIG_TRG1B (4UL)
977 #define ADC16_CONFIG_TRG1C (5UL)
978 #define ADC16_CONFIG_TRG2A (6UL)
979 #define ADC16_CONFIG_TRG2B (7UL)
980 #define ADC16_CONFIG_TRG2C (8UL)
981 #define ADC16_CONFIG_TRG3A (9UL)
982 #define ADC16_CONFIG_TRG3B (10UL)
983 #define ADC16_CONFIG_TRG3C (11UL)
984 
985 /* BUS_RESULT register group index macro definition */
986 #define ADC16_BUS_RESULT_CHN0 (0UL)
987 #define ADC16_BUS_RESULT_CHN1 (1UL)
988 #define ADC16_BUS_RESULT_CHN2 (2UL)
989 #define ADC16_BUS_RESULT_CHN3 (3UL)
990 #define ADC16_BUS_RESULT_CHN4 (4UL)
991 #define ADC16_BUS_RESULT_CHN5 (5UL)
992 #define ADC16_BUS_RESULT_CHN6 (6UL)
993 #define ADC16_BUS_RESULT_CHN7 (7UL)
994 #define ADC16_BUS_RESULT_CHN8 (8UL)
995 #define ADC16_BUS_RESULT_CHN9 (9UL)
996 #define ADC16_BUS_RESULT_CHN10 (10UL)
997 #define ADC16_BUS_RESULT_CHN11 (11UL)
998 #define ADC16_BUS_RESULT_CHN12 (12UL)
999 #define ADC16_BUS_RESULT_CHN13 (13UL)
1000 #define ADC16_BUS_RESULT_CHN14 (14UL)
1001 #define ADC16_BUS_RESULT_CHN15 (15UL)
1002 
1003 /* SEQ_QUE register group index macro definition */
1004 #define ADC16_SEQ_QUE_CFG0 (0UL)
1005 #define ADC16_SEQ_QUE_CFG1 (1UL)
1006 #define ADC16_SEQ_QUE_CFG2 (2UL)
1007 #define ADC16_SEQ_QUE_CFG3 (3UL)
1008 #define ADC16_SEQ_QUE_CFG4 (4UL)
1009 #define ADC16_SEQ_QUE_CFG5 (5UL)
1010 #define ADC16_SEQ_QUE_CFG6 (6UL)
1011 #define ADC16_SEQ_QUE_CFG7 (7UL)
1012 #define ADC16_SEQ_QUE_CFG8 (8UL)
1013 #define ADC16_SEQ_QUE_CFG9 (9UL)
1014 #define ADC16_SEQ_QUE_CFG10 (10UL)
1015 #define ADC16_SEQ_QUE_CFG11 (11UL)
1016 #define ADC16_SEQ_QUE_CFG12 (12UL)
1017 #define ADC16_SEQ_QUE_CFG13 (13UL)
1018 #define ADC16_SEQ_QUE_CFG14 (14UL)
1019 #define ADC16_SEQ_QUE_CFG15 (15UL)
1020 
1021 /* PRD_CFG register group index macro definition */
1022 #define ADC16_PRD_CFG_CHN0 (0UL)
1023 #define ADC16_PRD_CFG_CHN1 (1UL)
1024 #define ADC16_PRD_CFG_CHN2 (2UL)
1025 #define ADC16_PRD_CFG_CHN3 (3UL)
1026 #define ADC16_PRD_CFG_CHN4 (4UL)
1027 #define ADC16_PRD_CFG_CHN5 (5UL)
1028 #define ADC16_PRD_CFG_CHN6 (6UL)
1029 #define ADC16_PRD_CFG_CHN7 (7UL)
1030 #define ADC16_PRD_CFG_CHN8 (8UL)
1031 #define ADC16_PRD_CFG_CHN9 (9UL)
1032 #define ADC16_PRD_CFG_CHN10 (10UL)
1033 #define ADC16_PRD_CFG_CHN11 (11UL)
1034 #define ADC16_PRD_CFG_CHN12 (12UL)
1035 #define ADC16_PRD_CFG_CHN13 (13UL)
1036 #define ADC16_PRD_CFG_CHN14 (14UL)
1037 #define ADC16_PRD_CFG_CHN15 (15UL)
1038 
1039 /* SAMPLE_CFG register group index macro definition */
1040 #define ADC16_SAMPLE_CFG_CHN0 (0UL)
1041 #define ADC16_SAMPLE_CFG_CHN1 (1UL)
1042 #define ADC16_SAMPLE_CFG_CHN2 (2UL)
1043 #define ADC16_SAMPLE_CFG_CHN3 (3UL)
1044 #define ADC16_SAMPLE_CFG_CHN4 (4UL)
1045 #define ADC16_SAMPLE_CFG_CHN5 (5UL)
1046 #define ADC16_SAMPLE_CFG_CHN6 (6UL)
1047 #define ADC16_SAMPLE_CFG_CHN7 (7UL)
1048 #define ADC16_SAMPLE_CFG_CHN8 (8UL)
1049 #define ADC16_SAMPLE_CFG_CHN9 (9UL)
1050 #define ADC16_SAMPLE_CFG_CHN10 (10UL)
1051 #define ADC16_SAMPLE_CFG_CHN11 (11UL)
1052 #define ADC16_SAMPLE_CFG_CHN12 (12UL)
1053 #define ADC16_SAMPLE_CFG_CHN13 (13UL)
1054 #define ADC16_SAMPLE_CFG_CHN14 (14UL)
1055 #define ADC16_SAMPLE_CFG_CHN15 (15UL)
1056 
1057 /* ADC16_PARAMS register group index macro definition */
1058 #define ADC16_ADC16_PARAMS_ADC16_PARA00 (0UL)
1059 #define ADC16_ADC16_PARAMS_ADC16_PARA01 (1UL)
1060 #define ADC16_ADC16_PARAMS_ADC16_PARA02 (2UL)
1061 #define ADC16_ADC16_PARAMS_ADC16_PARA03 (3UL)
1062 #define ADC16_ADC16_PARAMS_ADC16_PARA04 (4UL)
1063 #define ADC16_ADC16_PARAMS_ADC16_PARA05 (5UL)
1064 #define ADC16_ADC16_PARAMS_ADC16_PARA06 (6UL)
1065 #define ADC16_ADC16_PARAMS_ADC16_PARA07 (7UL)
1066 #define ADC16_ADC16_PARAMS_ADC16_PARA08 (8UL)
1067 #define ADC16_ADC16_PARAMS_ADC16_PARA09 (9UL)
1068 #define ADC16_ADC16_PARAMS_ADC16_PARA10 (10UL)
1069 #define ADC16_ADC16_PARAMS_ADC16_PARA11 (11UL)
1070 #define ADC16_ADC16_PARAMS_ADC16_PARA12 (12UL)
1071 #define ADC16_ADC16_PARAMS_ADC16_PARA13 (13UL)
1072 #define ADC16_ADC16_PARAMS_ADC16_PARA14 (14UL)
1073 #define ADC16_ADC16_PARAMS_ADC16_PARA15 (15UL)
1074 #define ADC16_ADC16_PARAMS_ADC16_PARA16 (16UL)
1075 #define ADC16_ADC16_PARAMS_ADC16_PARA17 (17UL)
1076 #define ADC16_ADC16_PARAMS_ADC16_PARA18 (18UL)
1077 #define ADC16_ADC16_PARAMS_ADC16_PARA19 (19UL)
1078 #define ADC16_ADC16_PARAMS_ADC16_PARA20 (20UL)
1079 #define ADC16_ADC16_PARAMS_ADC16_PARA21 (21UL)
1080 #define ADC16_ADC16_PARAMS_ADC16_PARA22 (22UL)
1081 #define ADC16_ADC16_PARAMS_ADC16_PARA23 (23UL)
1082 #define ADC16_ADC16_PARAMS_ADC16_PARA24 (24UL)
1083 #define ADC16_ADC16_PARAMS_ADC16_PARA25 (25UL)
1084 #define ADC16_ADC16_PARAMS_ADC16_PARA26 (26UL)
1085 #define ADC16_ADC16_PARAMS_ADC16_PARA27 (27UL)
1086 #define ADC16_ADC16_PARAMS_ADC16_PARA28 (28UL)
1087 #define ADC16_ADC16_PARAMS_ADC16_PARA29 (29UL)
1088 #define ADC16_ADC16_PARAMS_ADC16_PARA30 (30UL)
1089 #define ADC16_ADC16_PARAMS_ADC16_PARA31 (31UL)
1090 #define ADC16_ADC16_PARAMS_ADC16_PARA32 (32UL)
1091 #define ADC16_ADC16_PARAMS_ADC16_PARA33 (33UL)
1092 
1093 
1094 #endif /* HPM_ADC16_H */
Definition: hpm_adc16_regs.h:12