• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_SDADC_H
10 #define HPM_SDADC_H
11 
12 typedef struct {
13     __RW uint32_t CTRL;                        /* 0x0: SDADC control register */
14     __RW uint32_t CLK_DIV;                     /* 0x4: clock divider */
15     __RW uint32_t TTB;                         /* 0x8: Total Transfer Bits */
16     __RW uint32_t START_OP;                    /* 0xC: Start_Of_Operation */
17     __RW uint32_t MISC;                        /* 0x10: Misc Control */
18     __R  uint32_t ST;                          /* 0x14: Status Register */
19 } SDADC_Type;
20 
21 
22 /* Bitfield definition for register: CTRL */
23 /*
24  * SDM_CFG (RW)
25  *
26  * SDM analog part Configuration
27  */
28 #define SDADC_CTRL_SDM_CFG_MASK (0xFF00000UL)
29 #define SDADC_CTRL_SDM_CFG_SHIFT (20U)
30 #define SDADC_CTRL_SDM_CFG_SET(x) (((uint32_t)(x) << SDADC_CTRL_SDM_CFG_SHIFT) & SDADC_CTRL_SDM_CFG_MASK)
31 #define SDADC_CTRL_SDM_CFG_GET(x) (((uint32_t)(x) & SDADC_CTRL_SDM_CFG_MASK) >> SDADC_CTRL_SDM_CFG_SHIFT)
32 
33 /*
34  * SDM_PGA_CE_SEL (RW)
35  *
36  * SDM_PGA_CE_SEL
37  */
38 #define SDADC_CTRL_SDM_PGA_CE_SEL_MASK (0xC0000UL)
39 #define SDADC_CTRL_SDM_PGA_CE_SEL_SHIFT (18U)
40 #define SDADC_CTRL_SDM_PGA_CE_SEL_SET(x) (((uint32_t)(x) << SDADC_CTRL_SDM_PGA_CE_SEL_SHIFT) & SDADC_CTRL_SDM_PGA_CE_SEL_MASK)
41 #define SDADC_CTRL_SDM_PGA_CE_SEL_GET(x) (((uint32_t)(x) & SDADC_CTRL_SDM_PGA_CE_SEL_MASK) >> SDADC_CTRL_SDM_PGA_CE_SEL_SHIFT)
42 
43 /*
44  * SDM_PGA_CH_SEL (RW)
45  *
46  * SDM_PGA_CH_SEL
47  */
48 #define SDADC_CTRL_SDM_PGA_CH_SEL_MASK (0x3C000UL)
49 #define SDADC_CTRL_SDM_PGA_CH_SEL_SHIFT (14U)
50 #define SDADC_CTRL_SDM_PGA_CH_SEL_SET(x) (((uint32_t)(x) << SDADC_CTRL_SDM_PGA_CH_SEL_SHIFT) & SDADC_CTRL_SDM_PGA_CH_SEL_MASK)
51 #define SDADC_CTRL_SDM_PGA_CH_SEL_GET(x) (((uint32_t)(x) & SDADC_CTRL_SDM_PGA_CH_SEL_MASK) >> SDADC_CTRL_SDM_PGA_CH_SEL_SHIFT)
52 
53 /*
54  * CFG_CDS_CMD (RW)
55  *
56  * config the common mode voltage of CDS CAP
57  */
58 #define SDADC_CTRL_CFG_CDS_CMD_MASK (0x2000U)
59 #define SDADC_CTRL_CFG_CDS_CMD_SHIFT (13U)
60 #define SDADC_CTRL_CFG_CDS_CMD_SET(x) (((uint32_t)(x) << SDADC_CTRL_CFG_CDS_CMD_SHIFT) & SDADC_CTRL_CFG_CDS_CMD_MASK)
61 #define SDADC_CTRL_CFG_CDS_CMD_GET(x) (((uint32_t)(x) & SDADC_CTRL_CFG_CDS_CMD_MASK) >> SDADC_CTRL_CFG_CDS_CMD_SHIFT)
62 
63 /*
64  * LP_MODE_SDM (RW)
65  *
66  * lowpower mode of SDM
67  */
68 #define SDADC_CTRL_LP_MODE_SDM_MASK (0xE00U)
69 #define SDADC_CTRL_LP_MODE_SDM_SHIFT (9U)
70 #define SDADC_CTRL_LP_MODE_SDM_SET(x) (((uint32_t)(x) << SDADC_CTRL_LP_MODE_SDM_SHIFT) & SDADC_CTRL_LP_MODE_SDM_MASK)
71 #define SDADC_CTRL_LP_MODE_SDM_GET(x) (((uint32_t)(x) & SDADC_CTRL_LP_MODE_SDM_MASK) >> SDADC_CTRL_LP_MODE_SDM_SHIFT)
72 
73 /*
74  * LP_MODE_PGA (RW)
75  *
76  * lowpower mode of PGA
77  */
78 #define SDADC_CTRL_LP_MODE_PGA_MASK (0x1C0U)
79 #define SDADC_CTRL_LP_MODE_PGA_SHIFT (6U)
80 #define SDADC_CTRL_LP_MODE_PGA_SET(x) (((uint32_t)(x) << SDADC_CTRL_LP_MODE_PGA_SHIFT) & SDADC_CTRL_LP_MODE_PGA_MASK)
81 #define SDADC_CTRL_LP_MODE_PGA_GET(x) (((uint32_t)(x) & SDADC_CTRL_LP_MODE_PGA_MASK) >> SDADC_CTRL_LP_MODE_PGA_SHIFT)
82 
83 /*
84  * ANA_PWUP (RW)
85  *
86  * 1. Asserted to power up the analog part
87  * 0: Shut off the power for the analog part
88  */
89 #define SDADC_CTRL_ANA_PWUP_MASK (0x20U)
90 #define SDADC_CTRL_ANA_PWUP_SHIFT (5U)
91 #define SDADC_CTRL_ANA_PWUP_SET(x) (((uint32_t)(x) << SDADC_CTRL_ANA_PWUP_SHIFT) & SDADC_CTRL_ANA_PWUP_MASK)
92 #define SDADC_CTRL_ANA_PWUP_GET(x) (((uint32_t)(x) & SDADC_CTRL_ANA_PWUP_MASK) >> SDADC_CTRL_ANA_PWUP_SHIFT)
93 
94 /*
95  * BYPASS_PGA (RW)
96  *
97  * 1: PGA is bypassed
98  * 0: PGA is enabled
99  */
100 #define SDADC_CTRL_BYPASS_PGA_MASK (0x10U)
101 #define SDADC_CTRL_BYPASS_PGA_SHIFT (4U)
102 #define SDADC_CTRL_BYPASS_PGA_SET(x) (((uint32_t)(x) << SDADC_CTRL_BYPASS_PGA_SHIFT) & SDADC_CTRL_BYPASS_PGA_MASK)
103 #define SDADC_CTRL_BYPASS_PGA_GET(x) (((uint32_t)(x) & SDADC_CTRL_BYPASS_PGA_MASK) >> SDADC_CTRL_BYPASS_PGA_SHIFT)
104 
105 /*
106  * CONT_MODE (RW)
107  *
108  * 1: continuous mode of ADC conversion
109  * 0: burst mode of ADC conversion.
110  */
111 #define SDADC_CTRL_CONT_MODE_MASK (0x8U)
112 #define SDADC_CTRL_CONT_MODE_SHIFT (3U)
113 #define SDADC_CTRL_CONT_MODE_SET(x) (((uint32_t)(x) << SDADC_CTRL_CONT_MODE_SHIFT) & SDADC_CTRL_CONT_MODE_MASK)
114 #define SDADC_CTRL_CONT_MODE_GET(x) (((uint32_t)(x) & SDADC_CTRL_CONT_MODE_MASK) >> SDADC_CTRL_CONT_MODE_SHIFT)
115 
116 /*
117  * RST_SDM (RW)
118  *
119  * 1: reset  SDM. Should be de-asserted by software
120  * 0: no reset SDM
121  */
122 #define SDADC_CTRL_RST_SDM_MASK (0x4U)
123 #define SDADC_CTRL_RST_SDM_SHIFT (2U)
124 #define SDADC_CTRL_RST_SDM_SET(x) (((uint32_t)(x) << SDADC_CTRL_RST_SDM_SHIFT) & SDADC_CTRL_RST_SDM_MASK)
125 #define SDADC_CTRL_RST_SDM_GET(x) (((uint32_t)(x) & SDADC_CTRL_RST_SDM_MASK) >> SDADC_CTRL_RST_SDM_SHIFT)
126 
127 /*
128  * RST_PGA (RW)
129  *
130  * 1: reset  PGA. Should be de-asserted by software
131  * 0: no reset PGA
132  */
133 #define SDADC_CTRL_RST_PGA_MASK (0x2U)
134 #define SDADC_CTRL_RST_PGA_SHIFT (1U)
135 #define SDADC_CTRL_RST_PGA_SET(x) (((uint32_t)(x) << SDADC_CTRL_RST_PGA_SHIFT) & SDADC_CTRL_RST_PGA_MASK)
136 #define SDADC_CTRL_RST_PGA_GET(x) (((uint32_t)(x) & SDADC_CTRL_RST_PGA_MASK) >> SDADC_CTRL_RST_PGA_SHIFT)
137 
138 /*
139  * EN (RW)
140  *
141  * Module enable, to enable clok divder. Etc
142  */
143 #define SDADC_CTRL_EN_MASK (0x1U)
144 #define SDADC_CTRL_EN_SHIFT (0U)
145 #define SDADC_CTRL_EN_SET(x) (((uint32_t)(x) << SDADC_CTRL_EN_SHIFT) & SDADC_CTRL_EN_MASK)
146 #define SDADC_CTRL_EN_GET(x) (((uint32_t)(x) & SDADC_CTRL_EN_MASK) >> SDADC_CTRL_EN_SHIFT)
147 
148 /* Bitfield definition for register: CLK_DIV */
149 /*
150  * FACTOR (RW)
151  *
152  * 0: disable clock output
153  * 1: bypass the clock divider
154  * 2: divide the clock by 2
155  * …
156  * n: divide the clock by n
157  */
158 #define SDADC_CLK_DIV_FACTOR_MASK (0xFFU)
159 #define SDADC_CLK_DIV_FACTOR_SHIFT (0U)
160 #define SDADC_CLK_DIV_FACTOR_SET(x) (((uint32_t)(x) << SDADC_CLK_DIV_FACTOR_SHIFT) & SDADC_CLK_DIV_FACTOR_MASK)
161 #define SDADC_CLK_DIV_FACTOR_GET(x) (((uint32_t)(x) & SDADC_CLK_DIV_FACTOR_MASK) >> SDADC_CLK_DIV_FACTOR_SHIFT)
162 
163 /* Bitfield definition for register: TTB */
164 /*
165  * VAL (RW)
166  *
167  * the maximal number of output bits when ADC is in burst mode
168  */
169 #define SDADC_TTB_VAL_MASK (0xFFFFFUL)
170 #define SDADC_TTB_VAL_SHIFT (0U)
171 #define SDADC_TTB_VAL_SET(x) (((uint32_t)(x) << SDADC_TTB_VAL_SHIFT) & SDADC_TTB_VAL_MASK)
172 #define SDADC_TTB_VAL_GET(x) (((uint32_t)(x) & SDADC_TTB_VAL_MASK) >> SDADC_TTB_VAL_SHIFT)
173 
174 /* Bitfield definition for register: START_OP */
175 /*
176  * SDM_EN (RW)
177  *
178  * 1. Enable sigma-delta ADC.  Auto clear in burst mode when TTB bits are received. In cont mode, must be cleared manually.
179  * 0: disable sigma-delta ADC
180  */
181 #define SDADC_START_OP_SDM_EN_MASK (0x1U)
182 #define SDADC_START_OP_SDM_EN_SHIFT (0U)
183 #define SDADC_START_OP_SDM_EN_SET(x) (((uint32_t)(x) << SDADC_START_OP_SDM_EN_SHIFT) & SDADC_START_OP_SDM_EN_MASK)
184 #define SDADC_START_OP_SDM_EN_GET(x) (((uint32_t)(x) & SDADC_START_OP_SDM_EN_MASK) >> SDADC_START_OP_SDM_EN_SHIFT)
185 
186 /* Bitfield definition for register: MISC */
187 /*
188  * BURST_DONE_IE (RW)
189  *
190  * Asserted to enable BURST_DONE event interrupt. Should not be asserted for continuous mode.
191  */
192 #define SDADC_MISC_BURST_DONE_IE_MASK (0x2U)
193 #define SDADC_MISC_BURST_DONE_IE_SHIFT (1U)
194 #define SDADC_MISC_BURST_DONE_IE_SET(x) (((uint32_t)(x) << SDADC_MISC_BURST_DONE_IE_SHIFT) & SDADC_MISC_BURST_DONE_IE_MASK)
195 #define SDADC_MISC_BURST_DONE_IE_GET(x) (((uint32_t)(x) & SDADC_MISC_BURST_DONE_IE_MASK) >> SDADC_MISC_BURST_DONE_IE_SHIFT)
196 
197 /*
198  * PDM_CLK_SEL (RW)
199  *
200  * Asserted to use PDM clk input. Default to use MCLK which is directly from PLL.
201  */
202 #define SDADC_MISC_PDM_CLK_SEL_MASK (0x1U)
203 #define SDADC_MISC_PDM_CLK_SEL_SHIFT (0U)
204 #define SDADC_MISC_PDM_CLK_SEL_SET(x) (((uint32_t)(x) << SDADC_MISC_PDM_CLK_SEL_SHIFT) & SDADC_MISC_PDM_CLK_SEL_MASK)
205 #define SDADC_MISC_PDM_CLK_SEL_GET(x) (((uint32_t)(x) & SDADC_MISC_PDM_CLK_SEL_MASK) >> SDADC_MISC_PDM_CLK_SEL_SHIFT)
206 
207 /* Bitfield definition for register: ST */
208 /*
209  * ANA_RST (RO)
210  *
211  * Asserted when analog module is in reset mode.
212  */
213 #define SDADC_ST_ANA_RST_MASK (0x4U)
214 #define SDADC_ST_ANA_RST_SHIFT (2U)
215 #define SDADC_ST_ANA_RST_GET(x) (((uint32_t)(x) & SDADC_ST_ANA_RST_MASK) >> SDADC_ST_ANA_RST_SHIFT)
216 
217 /*
218  * DIV_STABLE (RO)
219  *
220  * Asserted when CLK_DIV reaches stable status. Cleared automatically when CLK_DIV[FACTOR] is assigned a different value.
221  */
222 #define SDADC_ST_DIV_STABLE_MASK (0x2U)
223 #define SDADC_ST_DIV_STABLE_SHIFT (1U)
224 #define SDADC_ST_DIV_STABLE_GET(x) (((uint32_t)(x) & SDADC_ST_DIV_STABLE_MASK) >> SDADC_ST_DIV_STABLE_SHIFT)
225 
226 /*
227  * BURST_DONE (RO)
228  *
229  * Asserted when burst transfer is done. Auto cleared after the ST register is read while this bit is asserted.
230  */
231 #define SDADC_ST_BURST_DONE_MASK (0x1U)
232 #define SDADC_ST_BURST_DONE_SHIFT (0U)
233 #define SDADC_ST_BURST_DONE_GET(x) (((uint32_t)(x) & SDADC_ST_BURST_DONE_MASK) >> SDADC_ST_BURST_DONE_SHIFT)
234 
235 
236 
237 
238 #endif /* HPM_SDADC_H */
239