HPM SDK
HPMicro Software Development Kit
hpm_dac_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_DAC_H
10 #define HPM_DAC_H
11 
12 typedef struct {
13  __W uint32_t CFG0; /* 0x0: */
14  __RW uint32_t CFG1; /* 0x4: */
15  __RW uint32_t CFG2; /* 0x8: */
16  __R uint8_t RESERVED0[4]; /* 0xC - 0xF: Reserved */
17  __RW uint32_t STEP_CFG[4]; /* 0x10 - 0x1C: */
18  __RW uint32_t BUF_ADDR[2]; /* 0x20 - 0x24: */
19  __RW uint32_t BUF_LENGTH; /* 0x28: */
20  __R uint8_t RESERVED1[4]; /* 0x2C - 0x2F: Reserved */
21  __W uint32_t IRQ_STS; /* 0x30: */
22  __RW uint32_t IRQ_EN; /* 0x34: */
23  __RW uint32_t DMA_EN; /* 0x38: */
24  __R uint8_t RESERVED2[4]; /* 0x3C - 0x3F: Reserved */
25  __RW uint32_t ANA_CFG0; /* 0x40: */
26  __RW uint32_t CFG0_BAK; /* 0x44: */
27  __RW uint32_t STATUS0; /* 0x48: */
28 } DAC_Type;
29 
30 
31 /* Bitfield definition for register: CFG0 */
32 /*
33  * SW_DAC_DATA (WO)
34  *
35  * dac data used in direct mode(dac_mode==2'b10)
36  */
37 #define DAC_CFG0_SW_DAC_DATA_MASK (0xFFF0000UL)
38 #define DAC_CFG0_SW_DAC_DATA_SHIFT (16U)
39 #define DAC_CFG0_SW_DAC_DATA_SET(x) (((uint32_t)(x) << DAC_CFG0_SW_DAC_DATA_SHIFT) & DAC_CFG0_SW_DAC_DATA_MASK)
40 #define DAC_CFG0_SW_DAC_DATA_GET(x) (((uint32_t)(x) & DAC_CFG0_SW_DAC_DATA_MASK) >> DAC_CFG0_SW_DAC_DATA_SHIFT)
41 
42 /*
43  * DMA_AHB_EN (WO)
44  *
45  * set to enable internal DMA, it will read one burst if enough space in FIFO.
46  * Should only be used in buffer mode.
47  */
48 #define DAC_CFG0_DMA_AHB_EN_MASK (0x200U)
49 #define DAC_CFG0_DMA_AHB_EN_SHIFT (9U)
50 #define DAC_CFG0_DMA_AHB_EN_SET(x) (((uint32_t)(x) << DAC_CFG0_DMA_AHB_EN_SHIFT) & DAC_CFG0_DMA_AHB_EN_MASK)
51 #define DAC_CFG0_DMA_AHB_EN_GET(x) (((uint32_t)(x) & DAC_CFG0_DMA_AHB_EN_MASK) >> DAC_CFG0_DMA_AHB_EN_SHIFT)
52 
53 /*
54  * SYNC_MODE (WO)
55  *
56  * 1: sync dac clock and ahb clock.
57  * all HW trigger signals are pulse in sync mode, can get faster response;
58  * 0: async dac clock and ahb_clock
59  * all HW trigger signals should be level and should be more than one dac clock cycle, used to get accurate output frequency(which may not be divided from AHB clock)
60  */
61 #define DAC_CFG0_SYNC_MODE_MASK (0x100U)
62 #define DAC_CFG0_SYNC_MODE_SHIFT (8U)
63 #define DAC_CFG0_SYNC_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_SYNC_MODE_SHIFT) & DAC_CFG0_SYNC_MODE_MASK)
64 #define DAC_CFG0_SYNC_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_SYNC_MODE_MASK) >> DAC_CFG0_SYNC_MODE_SHIFT)
65 
66 /*
67  * HW_TRIG_EN (WO)
68  *
69  * set to use trigger signal from trigger_mux, user should config it to pulse in single mode, and level in continual mode
70  */
71 #define DAC_CFG0_HW_TRIG_EN_MASK (0x40U)
72 #define DAC_CFG0_HW_TRIG_EN_SHIFT (6U)
73 #define DAC_CFG0_HW_TRIG_EN_SET(x) (((uint32_t)(x) << DAC_CFG0_HW_TRIG_EN_SHIFT) & DAC_CFG0_HW_TRIG_EN_MASK)
74 #define DAC_CFG0_HW_TRIG_EN_GET(x) (((uint32_t)(x) & DAC_CFG0_HW_TRIG_EN_MASK) >> DAC_CFG0_HW_TRIG_EN_SHIFT)
75 
76 /*
77  * DAC_MODE (WO)
78  *
79  * 00: direct mode, DAC output the fixed configured data(from sw_dac_data)
80  * 01: step mode, DAC output from start_point to end point, with configured step, can step up or step down
81  * 10: buffer mode, read data from buffer, then output to analog, internal DMA will load next burst if enough space in local FIFO;
82  * 11: trigger mode, DAC output from external trigger signals
83  * Note:
84  * Trigger mode is not supported in hpm63xx and hpm62xx families.
85  */
86 #define DAC_CFG0_DAC_MODE_MASK (0x30U)
87 #define DAC_CFG0_DAC_MODE_SHIFT (4U)
88 #define DAC_CFG0_DAC_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_DAC_MODE_SHIFT) & DAC_CFG0_DAC_MODE_MASK)
89 #define DAC_CFG0_DAC_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_DAC_MODE_MASK) >> DAC_CFG0_DAC_MODE_SHIFT)
90 
91 /*
92  * BUF_DATA_MODE (WO)
93  *
94  * data structure for buffer mode,
95  * 0: each 32-bit data contains 2 points, b11:0 for first, b27:16 for second.
96  * 1: each 32-bit data contains 1 point, b11:0 for first
97  */
98 #define DAC_CFG0_BUF_DATA_MODE_MASK (0x8U)
99 #define DAC_CFG0_BUF_DATA_MODE_SHIFT (3U)
100 #define DAC_CFG0_BUF_DATA_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_BUF_DATA_MODE_SHIFT) & DAC_CFG0_BUF_DATA_MODE_MASK)
101 #define DAC_CFG0_BUF_DATA_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_BUF_DATA_MODE_MASK) >> DAC_CFG0_BUF_DATA_MODE_SHIFT)
102 
103 /*
104  * HBURST_CFG (WO)
105  *
106  * DAC support following fixed burst only
107  * 000-SINGLE; 011-INCR4; 101: INCR8
108  * others are reserved
109  */
110 #define DAC_CFG0_HBURST_CFG_MASK (0x7U)
111 #define DAC_CFG0_HBURST_CFG_SHIFT (0U)
112 #define DAC_CFG0_HBURST_CFG_SET(x) (((uint32_t)(x) << DAC_CFG0_HBURST_CFG_SHIFT) & DAC_CFG0_HBURST_CFG_MASK)
113 #define DAC_CFG0_HBURST_CFG_GET(x) (((uint32_t)(x) & DAC_CFG0_HBURST_CFG_MASK) >> DAC_CFG0_HBURST_CFG_SHIFT)
114 
115 /* Bitfield definition for register: CFG1 */
116 /*
117  * ANA_CLK_EN (RW)
118  *
119  * set to enable analog clock(divided by ana_div_cfg)
120  * need to be set in direct mode and trigger mode
121  */
122 #define DAC_CFG1_ANA_CLK_EN_MASK (0x40000UL)
123 #define DAC_CFG1_ANA_CLK_EN_SHIFT (18U)
124 #define DAC_CFG1_ANA_CLK_EN_SET(x) (((uint32_t)(x) << DAC_CFG1_ANA_CLK_EN_SHIFT) & DAC_CFG1_ANA_CLK_EN_MASK)
125 #define DAC_CFG1_ANA_CLK_EN_GET(x) (((uint32_t)(x) & DAC_CFG1_ANA_CLK_EN_MASK) >> DAC_CFG1_ANA_CLK_EN_SHIFT)
126 
127 /*
128  * ANA_DIV_CFG (RW)
129  *
130  * clock divider config for ana_clk to dac analog;
131  * 00: div2
132  * 01: div4
133  * 10: div6
134  * 11: div8
135  */
136 #define DAC_CFG1_ANA_DIV_CFG_MASK (0x30000UL)
137 #define DAC_CFG1_ANA_DIV_CFG_SHIFT (16U)
138 #define DAC_CFG1_ANA_DIV_CFG_SET(x) (((uint32_t)(x) << DAC_CFG1_ANA_DIV_CFG_SHIFT) & DAC_CFG1_ANA_DIV_CFG_MASK)
139 #define DAC_CFG1_ANA_DIV_CFG_GET(x) (((uint32_t)(x) & DAC_CFG1_ANA_DIV_CFG_MASK) >> DAC_CFG1_ANA_DIV_CFG_SHIFT)
140 
141 /*
142  * DIV_CFG (RW)
143  *
144  * step mode and buffer mode:
145  * defines how many clk_dac cycles to change data to analog, should configured to less than 1MHz data rate.
146  * Direct mode and trigger mode:
147  * defines how many clk_dac cycles to accpet the input data, dac will not accept new written data or trigger data before the clock cycles passed. should configured to less than 1MHz.
148  * Note:
149  * For direct mode and trigger mode, this config is not supported in hpm63xx and hpm62xx families.
150  */
151 #define DAC_CFG1_DIV_CFG_MASK (0xFFFFU)
152 #define DAC_CFG1_DIV_CFG_SHIFT (0U)
153 #define DAC_CFG1_DIV_CFG_SET(x) (((uint32_t)(x) << DAC_CFG1_DIV_CFG_SHIFT) & DAC_CFG1_DIV_CFG_MASK)
154 #define DAC_CFG1_DIV_CFG_GET(x) (((uint32_t)(x) & DAC_CFG1_DIV_CFG_MASK) >> DAC_CFG1_DIV_CFG_SHIFT)
155 
156 /* Bitfield definition for register: CFG2 */
157 /*
158  * DMA_RST1 (WO)
159  *
160  * set to reset dma read pointer to buf1_start_addr;
161  * if set both dma_rst0&dma_rst1, will set to buf0_start_addr
162  * user can set fifo_clr bit when use dma_rst*
163  */
164 #define DAC_CFG2_DMA_RST1_MASK (0x80U)
165 #define DAC_CFG2_DMA_RST1_SHIFT (7U)
166 #define DAC_CFG2_DMA_RST1_SET(x) (((uint32_t)(x) << DAC_CFG2_DMA_RST1_SHIFT) & DAC_CFG2_DMA_RST1_MASK)
167 #define DAC_CFG2_DMA_RST1_GET(x) (((uint32_t)(x) & DAC_CFG2_DMA_RST1_MASK) >> DAC_CFG2_DMA_RST1_SHIFT)
168 
169 /*
170  * DMA_RST0 (WO)
171  *
172  * set to reset dma read pointer to buf0_start_addr
173  */
174 #define DAC_CFG2_DMA_RST0_MASK (0x40U)
175 #define DAC_CFG2_DMA_RST0_SHIFT (6U)
176 #define DAC_CFG2_DMA_RST0_SET(x) (((uint32_t)(x) << DAC_CFG2_DMA_RST0_SHIFT) & DAC_CFG2_DMA_RST0_MASK)
177 #define DAC_CFG2_DMA_RST0_GET(x) (((uint32_t)(x) & DAC_CFG2_DMA_RST0_MASK) >> DAC_CFG2_DMA_RST0_SHIFT)
178 
179 /*
180  * FIFO_CLR (WO)
181  *
182  * set to clear FIFO content(set both read/write pointer to 0)
183  */
184 #define DAC_CFG2_FIFO_CLR_MASK (0x20U)
185 #define DAC_CFG2_FIFO_CLR_SHIFT (5U)
186 #define DAC_CFG2_FIFO_CLR_SET(x) (((uint32_t)(x) << DAC_CFG2_FIFO_CLR_SHIFT) & DAC_CFG2_FIFO_CLR_MASK)
187 #define DAC_CFG2_FIFO_CLR_GET(x) (((uint32_t)(x) & DAC_CFG2_FIFO_CLR_MASK) >> DAC_CFG2_FIFO_CLR_SHIFT)
188 
189 /*
190  * BUF_SW_TRIG (RW)
191  *
192  * software trigger for buffer mode,
193  * W1C in single mode.
194  * RW in continual mode
195  */
196 #define DAC_CFG2_BUF_SW_TRIG_MASK (0x10U)
197 #define DAC_CFG2_BUF_SW_TRIG_SHIFT (4U)
198 #define DAC_CFG2_BUF_SW_TRIG_SET(x) (((uint32_t)(x) << DAC_CFG2_BUF_SW_TRIG_SHIFT) & DAC_CFG2_BUF_SW_TRIG_MASK)
199 #define DAC_CFG2_BUF_SW_TRIG_GET(x) (((uint32_t)(x) & DAC_CFG2_BUF_SW_TRIG_MASK) >> DAC_CFG2_BUF_SW_TRIG_SHIFT)
200 
201 /*
202  * STEP_SW_TRIG3 (RW)
203  *
204  */
205 #define DAC_CFG2_STEP_SW_TRIG3_MASK (0x8U)
206 #define DAC_CFG2_STEP_SW_TRIG3_SHIFT (3U)
207 #define DAC_CFG2_STEP_SW_TRIG3_SET(x) (((uint32_t)(x) << DAC_CFG2_STEP_SW_TRIG3_SHIFT) & DAC_CFG2_STEP_SW_TRIG3_MASK)
208 #define DAC_CFG2_STEP_SW_TRIG3_GET(x) (((uint32_t)(x) & DAC_CFG2_STEP_SW_TRIG3_MASK) >> DAC_CFG2_STEP_SW_TRIG3_SHIFT)
209 
210 /*
211  * STEP_SW_TRIG2 (RW)
212  *
213  */
214 #define DAC_CFG2_STEP_SW_TRIG2_MASK (0x4U)
215 #define DAC_CFG2_STEP_SW_TRIG2_SHIFT (2U)
216 #define DAC_CFG2_STEP_SW_TRIG2_SET(x) (((uint32_t)(x) << DAC_CFG2_STEP_SW_TRIG2_SHIFT) & DAC_CFG2_STEP_SW_TRIG2_MASK)
217 #define DAC_CFG2_STEP_SW_TRIG2_GET(x) (((uint32_t)(x) & DAC_CFG2_STEP_SW_TRIG2_MASK) >> DAC_CFG2_STEP_SW_TRIG2_SHIFT)
218 
219 /*
220  * STEP_SW_TRIG1 (RW)
221  *
222  */
223 #define DAC_CFG2_STEP_SW_TRIG1_MASK (0x2U)
224 #define DAC_CFG2_STEP_SW_TRIG1_SHIFT (1U)
225 #define DAC_CFG2_STEP_SW_TRIG1_SET(x) (((uint32_t)(x) << DAC_CFG2_STEP_SW_TRIG1_SHIFT) & DAC_CFG2_STEP_SW_TRIG1_MASK)
226 #define DAC_CFG2_STEP_SW_TRIG1_GET(x) (((uint32_t)(x) & DAC_CFG2_STEP_SW_TRIG1_MASK) >> DAC_CFG2_STEP_SW_TRIG1_SHIFT)
227 
228 /*
229  * STEP_SW_TRIG0 (RW)
230  *
231  * software trigger0 for step mode,
232  * W1C in single mode.
233  * RW in continual mode
234  */
235 #define DAC_CFG2_STEP_SW_TRIG0_MASK (0x1U)
236 #define DAC_CFG2_STEP_SW_TRIG0_SHIFT (0U)
237 #define DAC_CFG2_STEP_SW_TRIG0_SET(x) (((uint32_t)(x) << DAC_CFG2_STEP_SW_TRIG0_SHIFT) & DAC_CFG2_STEP_SW_TRIG0_MASK)
238 #define DAC_CFG2_STEP_SW_TRIG0_GET(x) (((uint32_t)(x) & DAC_CFG2_STEP_SW_TRIG0_MASK) >> DAC_CFG2_STEP_SW_TRIG0_SHIFT)
239 
240 /* Bitfield definition for register array: STEP_CFG */
241 /*
242  * ROUND_MODE (RW)
243  *
244  * 0: stop at end point;
245  * 1: reload start point, step again
246  */
247 #define DAC_STEP_CFG_ROUND_MODE_MASK (0x20000000UL)
248 #define DAC_STEP_CFG_ROUND_MODE_SHIFT (29U)
249 #define DAC_STEP_CFG_ROUND_MODE_SET(x) (((uint32_t)(x) << DAC_STEP_CFG_ROUND_MODE_SHIFT) & DAC_STEP_CFG_ROUND_MODE_MASK)
250 #define DAC_STEP_CFG_ROUND_MODE_GET(x) (((uint32_t)(x) & DAC_STEP_CFG_ROUND_MODE_MASK) >> DAC_STEP_CFG_ROUND_MODE_SHIFT)
251 
252 /*
253  * UP_DOWN (RW)
254  *
255  * 0 for up, 1 for down
256  */
257 #define DAC_STEP_CFG_UP_DOWN_MASK (0x10000000UL)
258 #define DAC_STEP_CFG_UP_DOWN_SHIFT (28U)
259 #define DAC_STEP_CFG_UP_DOWN_SET(x) (((uint32_t)(x) << DAC_STEP_CFG_UP_DOWN_SHIFT) & DAC_STEP_CFG_UP_DOWN_MASK)
260 #define DAC_STEP_CFG_UP_DOWN_GET(x) (((uint32_t)(x) & DAC_STEP_CFG_UP_DOWN_MASK) >> DAC_STEP_CFG_UP_DOWN_SHIFT)
261 
262 /*
263  * END_POINT (RW)
264  *
265  */
266 #define DAC_STEP_CFG_END_POINT_MASK (0xFFF0000UL)
267 #define DAC_STEP_CFG_END_POINT_SHIFT (16U)
268 #define DAC_STEP_CFG_END_POINT_SET(x) (((uint32_t)(x) << DAC_STEP_CFG_END_POINT_SHIFT) & DAC_STEP_CFG_END_POINT_MASK)
269 #define DAC_STEP_CFG_END_POINT_GET(x) (((uint32_t)(x) & DAC_STEP_CFG_END_POINT_MASK) >> DAC_STEP_CFG_END_POINT_SHIFT)
270 
271 /*
272  * STEP_NUM (RW)
273  *
274  * output data change step_num each DAC clock cycle.
275  * Ex: if step_num=3, output data sequence is 0,3,6,9
276  * NOTE: user should make sure end_point can be reached if step_num is not 1
277  * if step_num is 0, output data will always at start point
278  */
279 #define DAC_STEP_CFG_STEP_NUM_MASK (0xF000U)
280 #define DAC_STEP_CFG_STEP_NUM_SHIFT (12U)
281 #define DAC_STEP_CFG_STEP_NUM_SET(x) (((uint32_t)(x) << DAC_STEP_CFG_STEP_NUM_SHIFT) & DAC_STEP_CFG_STEP_NUM_MASK)
282 #define DAC_STEP_CFG_STEP_NUM_GET(x) (((uint32_t)(x) & DAC_STEP_CFG_STEP_NUM_MASK) >> DAC_STEP_CFG_STEP_NUM_SHIFT)
283 
284 /*
285  * START_POINT (RW)
286  *
287  */
288 #define DAC_STEP_CFG_START_POINT_MASK (0xFFFU)
289 #define DAC_STEP_CFG_START_POINT_SHIFT (0U)
290 #define DAC_STEP_CFG_START_POINT_SET(x) (((uint32_t)(x) << DAC_STEP_CFG_START_POINT_SHIFT) & DAC_STEP_CFG_START_POINT_MASK)
291 #define DAC_STEP_CFG_START_POINT_GET(x) (((uint32_t)(x) & DAC_STEP_CFG_START_POINT_MASK) >> DAC_STEP_CFG_START_POINT_SHIFT)
292 
293 /* Bitfield definition for register array: BUF_ADDR */
294 /*
295  * BUF_START_ADDR (RW)
296  *
297  * buffer start address, should be 4-byte aligned
298  * AHB burst can't cross 1K-byte boundary, user should config the address/length/burst to avoid such issue.
299  */
300 #define DAC_BUF_ADDR_BUF_START_ADDR_MASK (0xFFFFFFFCUL)
301 #define DAC_BUF_ADDR_BUF_START_ADDR_SHIFT (2U)
302 #define DAC_BUF_ADDR_BUF_START_ADDR_SET(x) (((uint32_t)(x) << DAC_BUF_ADDR_BUF_START_ADDR_SHIFT) & DAC_BUF_ADDR_BUF_START_ADDR_MASK)
303 #define DAC_BUF_ADDR_BUF_START_ADDR_GET(x) (((uint32_t)(x) & DAC_BUF_ADDR_BUF_START_ADDR_MASK) >> DAC_BUF_ADDR_BUF_START_ADDR_SHIFT)
304 
305 /*
306  * BUF_STOP (RW)
307  *
308  * set to stop read point at end of bufffer0
309  */
310 #define DAC_BUF_ADDR_BUF_STOP_MASK (0x1U)
311 #define DAC_BUF_ADDR_BUF_STOP_SHIFT (0U)
312 #define DAC_BUF_ADDR_BUF_STOP_SET(x) (((uint32_t)(x) << DAC_BUF_ADDR_BUF_STOP_SHIFT) & DAC_BUF_ADDR_BUF_STOP_MASK)
313 #define DAC_BUF_ADDR_BUF_STOP_GET(x) (((uint32_t)(x) & DAC_BUF_ADDR_BUF_STOP_MASK) >> DAC_BUF_ADDR_BUF_STOP_SHIFT)
314 
315 /* Bitfield definition for register: BUF_LENGTH */
316 /*
317  * BUF1_LEN (RW)
318  *
319  * buffer length, 1 indicate one 32bit date, 256K-byte max for one buffer
320  */
321 #define DAC_BUF_LENGTH_BUF1_LEN_MASK (0xFFFF0000UL)
322 #define DAC_BUF_LENGTH_BUF1_LEN_SHIFT (16U)
323 #define DAC_BUF_LENGTH_BUF1_LEN_SET(x) (((uint32_t)(x) << DAC_BUF_LENGTH_BUF1_LEN_SHIFT) & DAC_BUF_LENGTH_BUF1_LEN_MASK)
324 #define DAC_BUF_LENGTH_BUF1_LEN_GET(x) (((uint32_t)(x) & DAC_BUF_LENGTH_BUF1_LEN_MASK) >> DAC_BUF_LENGTH_BUF1_LEN_SHIFT)
325 
326 /*
327  * BUF0_LEN (RW)
328  *
329  */
330 #define DAC_BUF_LENGTH_BUF0_LEN_MASK (0xFFFFU)
331 #define DAC_BUF_LENGTH_BUF0_LEN_SHIFT (0U)
332 #define DAC_BUF_LENGTH_BUF0_LEN_SET(x) (((uint32_t)(x) << DAC_BUF_LENGTH_BUF0_LEN_SHIFT) & DAC_BUF_LENGTH_BUF0_LEN_MASK)
333 #define DAC_BUF_LENGTH_BUF0_LEN_GET(x) (((uint32_t)(x) & DAC_BUF_LENGTH_BUF0_LEN_MASK) >> DAC_BUF_LENGTH_BUF0_LEN_SHIFT)
334 
335 /* Bitfield definition for register: IRQ_STS */
336 /*
337  * STEP_CMPT (W1C)
338  *
339  */
340 #define DAC_IRQ_STS_STEP_CMPT_MASK (0x10U)
341 #define DAC_IRQ_STS_STEP_CMPT_SHIFT (4U)
342 #define DAC_IRQ_STS_STEP_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_STS_STEP_CMPT_SHIFT) & DAC_IRQ_STS_STEP_CMPT_MASK)
343 #define DAC_IRQ_STS_STEP_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_STS_STEP_CMPT_MASK) >> DAC_IRQ_STS_STEP_CMPT_SHIFT)
344 
345 /*
346  * AHB_ERROR (W1C)
347  *
348  * set if hresp==2'b01(ERROR)
349  */
350 #define DAC_IRQ_STS_AHB_ERROR_MASK (0x8U)
351 #define DAC_IRQ_STS_AHB_ERROR_SHIFT (3U)
352 #define DAC_IRQ_STS_AHB_ERROR_SET(x) (((uint32_t)(x) << DAC_IRQ_STS_AHB_ERROR_SHIFT) & DAC_IRQ_STS_AHB_ERROR_MASK)
353 #define DAC_IRQ_STS_AHB_ERROR_GET(x) (((uint32_t)(x) & DAC_IRQ_STS_AHB_ERROR_MASK) >> DAC_IRQ_STS_AHB_ERROR_SHIFT)
354 
355 /*
356  * FIFO_EMPTY (W1C)
357  *
358  */
359 #define DAC_IRQ_STS_FIFO_EMPTY_MASK (0x4U)
360 #define DAC_IRQ_STS_FIFO_EMPTY_SHIFT (2U)
361 #define DAC_IRQ_STS_FIFO_EMPTY_SET(x) (((uint32_t)(x) << DAC_IRQ_STS_FIFO_EMPTY_SHIFT) & DAC_IRQ_STS_FIFO_EMPTY_MASK)
362 #define DAC_IRQ_STS_FIFO_EMPTY_GET(x) (((uint32_t)(x) & DAC_IRQ_STS_FIFO_EMPTY_MASK) >> DAC_IRQ_STS_FIFO_EMPTY_SHIFT)
363 
364 /*
365  * BUF1_CMPT (W1C)
366  *
367  */
368 #define DAC_IRQ_STS_BUF1_CMPT_MASK (0x2U)
369 #define DAC_IRQ_STS_BUF1_CMPT_SHIFT (1U)
370 #define DAC_IRQ_STS_BUF1_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_STS_BUF1_CMPT_SHIFT) & DAC_IRQ_STS_BUF1_CMPT_MASK)
371 #define DAC_IRQ_STS_BUF1_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_STS_BUF1_CMPT_MASK) >> DAC_IRQ_STS_BUF1_CMPT_SHIFT)
372 
373 /*
374  * BUF0_CMPT (W1C)
375  *
376  */
377 #define DAC_IRQ_STS_BUF0_CMPT_MASK (0x1U)
378 #define DAC_IRQ_STS_BUF0_CMPT_SHIFT (0U)
379 #define DAC_IRQ_STS_BUF0_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_STS_BUF0_CMPT_SHIFT) & DAC_IRQ_STS_BUF0_CMPT_MASK)
380 #define DAC_IRQ_STS_BUF0_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_STS_BUF0_CMPT_MASK) >> DAC_IRQ_STS_BUF0_CMPT_SHIFT)
381 
382 /* Bitfield definition for register: IRQ_EN */
383 /*
384  * STEP_CMPT (RW)
385  *
386  */
387 #define DAC_IRQ_EN_STEP_CMPT_MASK (0x10U)
388 #define DAC_IRQ_EN_STEP_CMPT_SHIFT (4U)
389 #define DAC_IRQ_EN_STEP_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_EN_STEP_CMPT_SHIFT) & DAC_IRQ_EN_STEP_CMPT_MASK)
390 #define DAC_IRQ_EN_STEP_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_EN_STEP_CMPT_MASK) >> DAC_IRQ_EN_STEP_CMPT_SHIFT)
391 
392 /*
393  * AHB_ERROR (RW)
394  *
395  */
396 #define DAC_IRQ_EN_AHB_ERROR_MASK (0x8U)
397 #define DAC_IRQ_EN_AHB_ERROR_SHIFT (3U)
398 #define DAC_IRQ_EN_AHB_ERROR_SET(x) (((uint32_t)(x) << DAC_IRQ_EN_AHB_ERROR_SHIFT) & DAC_IRQ_EN_AHB_ERROR_MASK)
399 #define DAC_IRQ_EN_AHB_ERROR_GET(x) (((uint32_t)(x) & DAC_IRQ_EN_AHB_ERROR_MASK) >> DAC_IRQ_EN_AHB_ERROR_SHIFT)
400 
401 /*
402  * FIFO_EMPTY (RW)
403  *
404  */
405 #define DAC_IRQ_EN_FIFO_EMPTY_MASK (0x4U)
406 #define DAC_IRQ_EN_FIFO_EMPTY_SHIFT (2U)
407 #define DAC_IRQ_EN_FIFO_EMPTY_SET(x) (((uint32_t)(x) << DAC_IRQ_EN_FIFO_EMPTY_SHIFT) & DAC_IRQ_EN_FIFO_EMPTY_MASK)
408 #define DAC_IRQ_EN_FIFO_EMPTY_GET(x) (((uint32_t)(x) & DAC_IRQ_EN_FIFO_EMPTY_MASK) >> DAC_IRQ_EN_FIFO_EMPTY_SHIFT)
409 
410 /*
411  * BUF1_CMPT (RW)
412  *
413  */
414 #define DAC_IRQ_EN_BUF1_CMPT_MASK (0x2U)
415 #define DAC_IRQ_EN_BUF1_CMPT_SHIFT (1U)
416 #define DAC_IRQ_EN_BUF1_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_EN_BUF1_CMPT_SHIFT) & DAC_IRQ_EN_BUF1_CMPT_MASK)
417 #define DAC_IRQ_EN_BUF1_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_EN_BUF1_CMPT_MASK) >> DAC_IRQ_EN_BUF1_CMPT_SHIFT)
418 
419 /*
420  * BUF0_CMPT (RW)
421  *
422  */
423 #define DAC_IRQ_EN_BUF0_CMPT_MASK (0x1U)
424 #define DAC_IRQ_EN_BUF0_CMPT_SHIFT (0U)
425 #define DAC_IRQ_EN_BUF0_CMPT_SET(x) (((uint32_t)(x) << DAC_IRQ_EN_BUF0_CMPT_SHIFT) & DAC_IRQ_EN_BUF0_CMPT_MASK)
426 #define DAC_IRQ_EN_BUF0_CMPT_GET(x) (((uint32_t)(x) & DAC_IRQ_EN_BUF0_CMPT_MASK) >> DAC_IRQ_EN_BUF0_CMPT_SHIFT)
427 
428 /* Bitfield definition for register: DMA_EN */
429 /*
430  * STEP_CMPT (RW)
431  *
432  */
433 #define DAC_DMA_EN_STEP_CMPT_MASK (0x10U)
434 #define DAC_DMA_EN_STEP_CMPT_SHIFT (4U)
435 #define DAC_DMA_EN_STEP_CMPT_SET(x) (((uint32_t)(x) << DAC_DMA_EN_STEP_CMPT_SHIFT) & DAC_DMA_EN_STEP_CMPT_MASK)
436 #define DAC_DMA_EN_STEP_CMPT_GET(x) (((uint32_t)(x) & DAC_DMA_EN_STEP_CMPT_MASK) >> DAC_DMA_EN_STEP_CMPT_SHIFT)
437 
438 /*
439  * BUF1_CMPT (RW)
440  *
441  */
442 #define DAC_DMA_EN_BUF1_CMPT_MASK (0x2U)
443 #define DAC_DMA_EN_BUF1_CMPT_SHIFT (1U)
444 #define DAC_DMA_EN_BUF1_CMPT_SET(x) (((uint32_t)(x) << DAC_DMA_EN_BUF1_CMPT_SHIFT) & DAC_DMA_EN_BUF1_CMPT_MASK)
445 #define DAC_DMA_EN_BUF1_CMPT_GET(x) (((uint32_t)(x) & DAC_DMA_EN_BUF1_CMPT_MASK) >> DAC_DMA_EN_BUF1_CMPT_SHIFT)
446 
447 /*
448  * BUF0_CMPT (RW)
449  *
450  */
451 #define DAC_DMA_EN_BUF0_CMPT_MASK (0x1U)
452 #define DAC_DMA_EN_BUF0_CMPT_SHIFT (0U)
453 #define DAC_DMA_EN_BUF0_CMPT_SET(x) (((uint32_t)(x) << DAC_DMA_EN_BUF0_CMPT_SHIFT) & DAC_DMA_EN_BUF0_CMPT_MASK)
454 #define DAC_DMA_EN_BUF0_CMPT_GET(x) (((uint32_t)(x) & DAC_DMA_EN_BUF0_CMPT_MASK) >> DAC_DMA_EN_BUF0_CMPT_SHIFT)
455 
456 /* Bitfield definition for register: ANA_CFG0 */
457 /*
458  * DAC12BIT_LP_MODE (RW)
459  *
460  */
461 #define DAC_ANA_CFG0_DAC12BIT_LP_MODE_MASK (0x100U)
462 #define DAC_ANA_CFG0_DAC12BIT_LP_MODE_SHIFT (8U)
463 #define DAC_ANA_CFG0_DAC12BIT_LP_MODE_SET(x) (((uint32_t)(x) << DAC_ANA_CFG0_DAC12BIT_LP_MODE_SHIFT) & DAC_ANA_CFG0_DAC12BIT_LP_MODE_MASK)
464 #define DAC_ANA_CFG0_DAC12BIT_LP_MODE_GET(x) (((uint32_t)(x) & DAC_ANA_CFG0_DAC12BIT_LP_MODE_MASK) >> DAC_ANA_CFG0_DAC12BIT_LP_MODE_SHIFT)
465 
466 /*
467  * DAC_CONFIG (RW)
468  *
469  */
470 #define DAC_ANA_CFG0_DAC_CONFIG_MASK (0xF0U)
471 #define DAC_ANA_CFG0_DAC_CONFIG_SHIFT (4U)
472 #define DAC_ANA_CFG0_DAC_CONFIG_SET(x) (((uint32_t)(x) << DAC_ANA_CFG0_DAC_CONFIG_SHIFT) & DAC_ANA_CFG0_DAC_CONFIG_MASK)
473 #define DAC_ANA_CFG0_DAC_CONFIG_GET(x) (((uint32_t)(x) & DAC_ANA_CFG0_DAC_CONFIG_MASK) >> DAC_ANA_CFG0_DAC_CONFIG_SHIFT)
474 
475 /*
476  * CALI_DELTA_V_CFG (RW)
477  *
478  */
479 #define DAC_ANA_CFG0_CALI_DELTA_V_CFG_MASK (0xCU)
480 #define DAC_ANA_CFG0_CALI_DELTA_V_CFG_SHIFT (2U)
481 #define DAC_ANA_CFG0_CALI_DELTA_V_CFG_SET(x) (((uint32_t)(x) << DAC_ANA_CFG0_CALI_DELTA_V_CFG_SHIFT) & DAC_ANA_CFG0_CALI_DELTA_V_CFG_MASK)
482 #define DAC_ANA_CFG0_CALI_DELTA_V_CFG_GET(x) (((uint32_t)(x) & DAC_ANA_CFG0_CALI_DELTA_V_CFG_MASK) >> DAC_ANA_CFG0_CALI_DELTA_V_CFG_SHIFT)
483 
484 /*
485  * BYPASS_CALI_GM (RW)
486  *
487  */
488 #define DAC_ANA_CFG0_BYPASS_CALI_GM_MASK (0x2U)
489 #define DAC_ANA_CFG0_BYPASS_CALI_GM_SHIFT (1U)
490 #define DAC_ANA_CFG0_BYPASS_CALI_GM_SET(x) (((uint32_t)(x) << DAC_ANA_CFG0_BYPASS_CALI_GM_SHIFT) & DAC_ANA_CFG0_BYPASS_CALI_GM_MASK)
491 #define DAC_ANA_CFG0_BYPASS_CALI_GM_GET(x) (((uint32_t)(x) & DAC_ANA_CFG0_BYPASS_CALI_GM_MASK) >> DAC_ANA_CFG0_BYPASS_CALI_GM_SHIFT)
492 
493 /*
494  * DAC12BIT_EN (RW)
495  *
496  */
497 #define DAC_ANA_CFG0_DAC12BIT_EN_MASK (0x1U)
498 #define DAC_ANA_CFG0_DAC12BIT_EN_SHIFT (0U)
499 #define DAC_ANA_CFG0_DAC12BIT_EN_SET(x) (((uint32_t)(x) << DAC_ANA_CFG0_DAC12BIT_EN_SHIFT) & DAC_ANA_CFG0_DAC12BIT_EN_MASK)
500 #define DAC_ANA_CFG0_DAC12BIT_EN_GET(x) (((uint32_t)(x) & DAC_ANA_CFG0_DAC12BIT_EN_MASK) >> DAC_ANA_CFG0_DAC12BIT_EN_SHIFT)
501 
502 /* Bitfield definition for register: CFG0_BAK */
503 /*
504  * SW_DAC_DATA (RW)
505  *
506  * dac data used in direct mode(dac_mode==2'b10)
507  */
508 #define DAC_CFG0_BAK_SW_DAC_DATA_MASK (0xFFF0000UL)
509 #define DAC_CFG0_BAK_SW_DAC_DATA_SHIFT (16U)
510 #define DAC_CFG0_BAK_SW_DAC_DATA_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_SW_DAC_DATA_SHIFT) & DAC_CFG0_BAK_SW_DAC_DATA_MASK)
511 #define DAC_CFG0_BAK_SW_DAC_DATA_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_SW_DAC_DATA_MASK) >> DAC_CFG0_BAK_SW_DAC_DATA_SHIFT)
512 
513 /*
514  * DMA_AHB_EN (RW)
515  *
516  * set to enable internal DMA, it will read one burst if enough space in FIFO.
517  * Should only be used in buffer mode.
518  */
519 #define DAC_CFG0_BAK_DMA_AHB_EN_MASK (0x200U)
520 #define DAC_CFG0_BAK_DMA_AHB_EN_SHIFT (9U)
521 #define DAC_CFG0_BAK_DMA_AHB_EN_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_DMA_AHB_EN_SHIFT) & DAC_CFG0_BAK_DMA_AHB_EN_MASK)
522 #define DAC_CFG0_BAK_DMA_AHB_EN_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_DMA_AHB_EN_MASK) >> DAC_CFG0_BAK_DMA_AHB_EN_SHIFT)
523 
524 /*
525  * SYNC_MODE (RW)
526  *
527  * 1: sync dac clock and ahb clock.
528  * all HW trigger signals are pulse in sync mode, can get faster response;
529  * 0: async dac clock and ahb_clock
530  * all HW trigger signals should be level and should be more than one dac clock cycle, used to get accurate output frequency(which may not be divided from AHB clock)
531  */
532 #define DAC_CFG0_BAK_SYNC_MODE_MASK (0x100U)
533 #define DAC_CFG0_BAK_SYNC_MODE_SHIFT (8U)
534 #define DAC_CFG0_BAK_SYNC_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_SYNC_MODE_SHIFT) & DAC_CFG0_BAK_SYNC_MODE_MASK)
535 #define DAC_CFG0_BAK_SYNC_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_SYNC_MODE_MASK) >> DAC_CFG0_BAK_SYNC_MODE_SHIFT)
536 
537 /*
538  * TRIG_MODE (RW)
539  *
540  * 0: single mode, one trigger pulse will send one 12bit data to DAC analog;
541  * 1: continual mode, if trigger signal(either or HW) is set, DAC will send data if FIFO is not empty, if trigger signal is clear, DAC will stop send data.
542  */
543 #define DAC_CFG0_BAK_TRIG_MODE_MASK (0x80U)
544 #define DAC_CFG0_BAK_TRIG_MODE_SHIFT (7U)
545 #define DAC_CFG0_BAK_TRIG_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_TRIG_MODE_SHIFT) & DAC_CFG0_BAK_TRIG_MODE_MASK)
546 #define DAC_CFG0_BAK_TRIG_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_TRIG_MODE_MASK) >> DAC_CFG0_BAK_TRIG_MODE_SHIFT)
547 
548 /*
549  * HW_TRIG_EN (RW)
550  *
551  * set to use trigger signal from trigger_mux, user should config it to pulse in single mode, and level in continual mode
552  */
553 #define DAC_CFG0_BAK_HW_TRIG_EN_MASK (0x40U)
554 #define DAC_CFG0_BAK_HW_TRIG_EN_SHIFT (6U)
555 #define DAC_CFG0_BAK_HW_TRIG_EN_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_HW_TRIG_EN_SHIFT) & DAC_CFG0_BAK_HW_TRIG_EN_MASK)
556 #define DAC_CFG0_BAK_HW_TRIG_EN_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_HW_TRIG_EN_MASK) >> DAC_CFG0_BAK_HW_TRIG_EN_SHIFT)
557 
558 /*
559  * DAC_MODE (RW)
560  *
561  * 00: direct mode, DAC output the fixed configured data(from sw_dac_data)
562  * 01: step mode, DAC output from start_point to end point, with configured step, can step up or step down
563  * 10: buffer mode, read data from buffer, then output to analog, internal DMA will load next burst if enough space in local FIFO;
564  */
565 #define DAC_CFG0_BAK_DAC_MODE_MASK (0x30U)
566 #define DAC_CFG0_BAK_DAC_MODE_SHIFT (4U)
567 #define DAC_CFG0_BAK_DAC_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_DAC_MODE_SHIFT) & DAC_CFG0_BAK_DAC_MODE_MASK)
568 #define DAC_CFG0_BAK_DAC_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_DAC_MODE_MASK) >> DAC_CFG0_BAK_DAC_MODE_SHIFT)
569 
570 /*
571  * BUF_DATA_MODE (RW)
572  *
573  * data structure for buffer mode,
574  * 0: each 32-bit data contains 2 points, b11:0 for first, b27:16 for second.
575  * 1: each 32-bit data contains 1 point, b11:0 for first
576  */
577 #define DAC_CFG0_BAK_BUF_DATA_MODE_MASK (0x8U)
578 #define DAC_CFG0_BAK_BUF_DATA_MODE_SHIFT (3U)
579 #define DAC_CFG0_BAK_BUF_DATA_MODE_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_BUF_DATA_MODE_SHIFT) & DAC_CFG0_BAK_BUF_DATA_MODE_MASK)
580 #define DAC_CFG0_BAK_BUF_DATA_MODE_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_BUF_DATA_MODE_MASK) >> DAC_CFG0_BAK_BUF_DATA_MODE_SHIFT)
581 
582 /*
583  * HBURST_CFG (RW)
584  *
585  * DAC support following fixed burst only
586  * 000-SINGLE; 011-INCR4; 101: INCR8
587  * others are reserved
588  */
589 #define DAC_CFG0_BAK_HBURST_CFG_MASK (0x7U)
590 #define DAC_CFG0_BAK_HBURST_CFG_SHIFT (0U)
591 #define DAC_CFG0_BAK_HBURST_CFG_SET(x) (((uint32_t)(x) << DAC_CFG0_BAK_HBURST_CFG_SHIFT) & DAC_CFG0_BAK_HBURST_CFG_MASK)
592 #define DAC_CFG0_BAK_HBURST_CFG_GET(x) (((uint32_t)(x) & DAC_CFG0_BAK_HBURST_CFG_MASK) >> DAC_CFG0_BAK_HBURST_CFG_SHIFT)
593 
594 /* Bitfield definition for register: STATUS0 */
595 /*
596  * CUR_BUF_OFFSET (RW)
597  *
598  */
599 #define DAC_STATUS0_CUR_BUF_OFFSET_MASK (0xFFFF00UL)
600 #define DAC_STATUS0_CUR_BUF_OFFSET_SHIFT (8U)
601 #define DAC_STATUS0_CUR_BUF_OFFSET_SET(x) (((uint32_t)(x) << DAC_STATUS0_CUR_BUF_OFFSET_SHIFT) & DAC_STATUS0_CUR_BUF_OFFSET_MASK)
602 #define DAC_STATUS0_CUR_BUF_OFFSET_GET(x) (((uint32_t)(x) & DAC_STATUS0_CUR_BUF_OFFSET_MASK) >> DAC_STATUS0_CUR_BUF_OFFSET_SHIFT)
603 
604 /*
605  * CUR_BUF_INDEX (RW)
606  *
607  */
608 #define DAC_STATUS0_CUR_BUF_INDEX_MASK (0x80U)
609 #define DAC_STATUS0_CUR_BUF_INDEX_SHIFT (7U)
610 #define DAC_STATUS0_CUR_BUF_INDEX_SET(x) (((uint32_t)(x) << DAC_STATUS0_CUR_BUF_INDEX_SHIFT) & DAC_STATUS0_CUR_BUF_INDEX_MASK)
611 #define DAC_STATUS0_CUR_BUF_INDEX_GET(x) (((uint32_t)(x) & DAC_STATUS0_CUR_BUF_INDEX_MASK) >> DAC_STATUS0_CUR_BUF_INDEX_SHIFT)
612 
613 
614 
615 /* STEP_CFG register group index macro definition */
616 #define DAC_STEP_CFG_STEP0 (0UL)
617 #define DAC_STEP_CFG_STEP1 (1UL)
618 #define DAC_STEP_CFG_STEP2 (2UL)
619 #define DAC_STEP_CFG_STEP3 (3UL)
620 
621 /* BUF_ADDR register group index macro definition */
622 #define DAC_BUF_ADDR_BUF0 (0UL)
623 #define DAC_BUF_ADDR_BUF1 (1UL)
624 
625 
626 #endif /* HPM_DAC_H */
Definition: hpm_dac_regs.h:12