libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
adc_common.h
Go to the documentation of this file.
1/** @addtogroup adc_defines
2 */
3/*
4 * This file is part of the libopencm3 project.
5 *
6 * Copyright (C) 2015 Kuldeep Singh Dhaka <kuldeepdhaka9@gmail.com>
7 *
8 * This library is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this library. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22/**@{*/
23
24#pragma once
25
28
29#define ADC_CTRL(base) MMIO32((base) + 0x000)
30#define ADC_CMD(base) MMIO32((base) + 0x004)
31#define ADC_STATUS(base) MMIO32((base) + 0x008)
32#define ADC_SINGLECTRL(base) MMIO32((base) + 0x00C)
33#define ADC_SCANCTRL(base) MMIO32((base) + 0x010)
34#define ADC_IEN(base) MMIO32((base) + 0x014)
35#define ADC_IF(base) MMIO32((base) + 0x018)
36#define ADC_IFS(base) MMIO32((base) + 0x01C)
37#define ADC_IFC(base) MMIO32((base) + 0x020)
38#define ADC_SINGLEDATA(base) MMIO32((base) + 0x024)
39#define ADC_SCANDATA(base) MMIO32((base) + 0x028)
40#define ADC_SINGLEDATAP(base) MMIO32((base) + 0x02C)
41#define ADC_SCANDATAP(base) MMIO32((base) + 0x030)
42#define ADC_CAL(base) MMIO32((base) + 0x034)
43#define ADC_BIASPROG(base) MMIO32((base) + 0x03C)
44
45/* ADC_CTRL */
46#define ADC_CTRL_OVERSEL_SHIFT (24)
47#define ADC_CTRL_OVERSEL_MASK (0xF << ADC_CTRL_OVERSEL_SHIFT)
48#define ADC_CTRL_OVERSEL(v) \
49 (((v) << ADC_CTRL_OVERSEL_SHIFT) & ADC_CTRL_OVERSEL_MASK)
50#define ADC_CTRL_OVERSEL_X2 0
51#define ADC_CTRL_OVERSEL_X4 1
52#define ADC_CTRL_OVERSEL_X8 2
53#define ADC_CTRL_OVERSEL_X16 3
54#define ADC_CTRL_OVERSEL_X32 4
55#define ADC_CTRL_OVERSEL_X64 5
56#define ADC_CTRL_OVERSEL_X128 6
57#define ADC_CTRL_OVERSEL_X256 7
58#define ADC_CTRL_OVERSEL_X512 8
59#define ADC_CTRL_OVERSEL_X1024 9
60#define ADC_CTRL_OVERSEL_X2048 10
61#define ADC_CTRL_OVERSEL_X4096 11
62
63#define ADC_CTRL_TIMEBASE_SHIFT (16)
64#define ADC_CTRL_TIMEBASE_MASK (0x3F << ADC_CTRL_TIMEBASE_SHIFT)
65#define ADC_CTRL_TIMEBASE(v) \
66 (((v) << ADC_CTRL_TIMEBASE_SHIFT) & ADC_CTRL_TIMEBASE_MASK)
67
68#define ADC_CTRL_PRESC_SHIFT (8)
69#define ADC_CTRL_PRESC_MASK (0x3F << ADC_CTRL_PRESC_SHIFT)
70#define ADC_CTRL_PRESC(v) \
71 (((v) << ADC_CTRL_PRESC_SHIFT) & ADC_CTRL_PRESC_MASK)
72
73#define ADC_CTRL_LPFMODE_SHIFT (4)
74#define ADC_CTRL_LPFMODE_MASK (0x3 << ADC_CTRL_LPFMODE_SHIFT)
75#define ADC_CTRL_LPFMODE(v) \
76 (((v) << ADC_CTRL_LPFMODE_SHIFT) & ADC_CTRL_LPFMODE_MASK)
77#define ADC_CTRL_LPFMODE_BYPASS 0
78#define ADC_CTRL_LPFMODE_DECAP 1
79#define ADC_CTRL_LPFMODE_RCFILT 2
80
81#define ADC_CTRL_TAILGATE (1 << 3)
82
83#define ADC_CTRL_WARMUPMODE_SHIFT (0)
84#define ADC_CTRL_WARMUPMODE_MASK (0x3 << ADC_CTRL_WARMUPMODE_SHIFT)
85#define ADC_CTRL_WARMUPMODE(v) \
86 (((v) << ADC_CTRL_WARMUPMODE_SHIFT) & ADC_CTRL_WARMUPMODE_MASK)
87#define ADC_CTRL_WARMUPMODE_NORMAL 0
88#define ADC_CTRL_WARMUPMODE_FASTBG 1
89#define ADC_CTRL_WARMUPMODE_KEEPSCANREFWARM 2
90#define ADC_CTRL_WARMUPMODE_KEEPADCWARM 3
91
92/* ADC_CMD */
93#define ADC_CMD_SCANSTOP (1 << 3)
94#define ADC_CMD_SCANSTART (1 << 2)
95#define ADC_CMD_SINGLESTOP (1 << 1)
96#define ADC_CMD_SINGLESTART (1 << 0)
97
98/* ADC_STATUS */
99#define ADC_STATUS_SCANDATASRC_SHIFT (0)
100#define ADC_STATUS_SCANDATASRC_MASK (0x7 << ADC_STATUS_SCANDATASRC_SHIFT)
101#define ADC_STATUS_SCANDATASRC(v) \
102 (((v) << ADC_STATUS_SCANDATASRC_SHIFT) & ADC_STATUS_SCANDATASRC_MASK)
103
104#define ADC_STATUS_SCANDV (1 << 17)
105#define ADC_STATUS_SINGLEDV (1 << 16)
106#define ADC_STATUS_WARM (1 << 12)
107#define ADC_STATUS_SCANREFWARM (1 << 9)
108#define ADC_STATUS_SINGLEREFWARM (1 << 8)
109#define ADC_STATUS_SCANACT (1 << 1)
110#define ADC_STATUS_SINGLEACT (1 << 0)
111
112/* ADC_SINGLECTRL */
113#define ADC_SINGLECTRL_PRSSEL_SHIFT (28)
114#define ADC_SINGLECTRL_PRSSEL_MASK (0xF << ADC_SINGLECTRL_PRSSEL_SHIFT)
115#define ADC_SINGLECTRL_PRSSEL(v) \
116 (((v) << ADC_SINGLECTRL_PRSSEL_SHIFT) & ADC_SINGLECTRL_PRSSEL_MASK)
117#define ADC_SINGLECTRL_PRSSEL_PRSCHx(x) ADC_SINGLECTRL_PRSSEL(x)
118#define ADC_SINGLECTRL_PRSSEL_PRSCH0 0
119#define ADC_SINGLECTRL_PRSSEL_PRSCH1 1
120#define ADC_SINGLECTRL_PRSSEL_PRSCH2 2
121#define ADC_SINGLECTRL_PRSSEL_PRSCH3 3
122#define ADC_SINGLECTRL_PRSSEL_PRSCH4 4
123#define ADC_SINGLECTRL_PRSSEL_PRSCH5 5
124#define ADC_SINGLECTRL_PRSSEL_PRSCH6 6
125#define ADC_SINGLECTRL_PRSSEL_PRSCH7 7
126#define ADC_SINGLECTRL_PRSSEL_PRSCH8 8
127#define ADC_SINGLECTRL_PRSSEL_PRSCH9 9
128#define ADC_SINGLECTRL_PRSSEL_PRSCH10 10
129#define ADC_SINGLECTRL_PRSSEL_PRSCH11 11
130
131#define ADC_SINGLECTRL_PRSEN (1 << 24)
132
133#define ADC_SINGLECTRL_AT_SHIFT (20)
134#define ADC_SINGLECTRL_AT_MASK (0xF << ADC_SINGLECTRL_AT_SHIFT)
135#define ADC_SINGLECTRL_AT(v) \
136 (((v) << ADC_SINGLECTRL_AT_SHIFT) & ADC_SINGLECTRL_AT_MASK)
137#define ADC_SINGLECTRL_AT_1CYCLE 0x0
138#define ADC_SINGLECTRL_AT_2CYCLES 0x1
139#define ADC_SINGLECTRL_AT_4CYCLES 0x2
140#define ADC_SINGLECTRL_AT_8CYCLES 0x3
141#define ADC_SINGLECTRL_AT_16CYCLES 0x4
142#define ADC_SINGLECTRL_AT_32CYCLES 0x5
143#define ADC_SINGLECTRL_AT_64CYCLES 0x6
144#define ADC_SINGLECTRL_AT_128CYCLES 0x7
145#define ADC_SINGLECTRL_AT_256CYCLES 0x8
146
147#define ADC_SINGLECTRL_REF_SHIFT (16)
148#define ADC_SINGLECTRL_REF_MASK (0xF << ADC_SINGLECTRL_REF_SHIFT)
149#define ADC_SINGLECTRL_REF(v) \
150 (((v) << ADC_SINGLECTRL_REF_SHIFT) & ADC_SINGLECTRL_REF_MASK)
151#define ADC_SINGLECTRL_REF_1V25 0
152#define ADC_SINGLECTRL_REF_2V5 1
153#define ADC_SINGLECTRL_REF_VDD 2
154#define ADC_SINGLECTRL_REF_5VDIFF 3
155#define ADC_SINGLECTRL_REF_EXTSINGLE 4
156#define ADC_SINGLECTRL_REF_2XEXTDIFF 5
157#define ADC_SINGLECTRL_REF_2XVDD 6
158
159#define ADC_SINGLECTRL_INPUTSEL_SHIFT (8)
160#define ADC_SINGLECTRL_INPUTSEL_MASK (0xF << ADC_SINGLECTRL_INPUTSEL_SHIFT)
161#define ADC_SINGLECTRL_INPUTSEL(v) \
162 (((v) << ADC_SINGLECTRL_INPUTSEL_SHIFT) & ADC_SINGLECTRL_INPUTSEL_MASK)
163/* DIFF=0 */
164#define ADC_SINGLECTRL_INPUTSEL_CHx(x) ADC_SINGLECTRL_INPUTSEL(x)
165#define ADC_SINGLECTRL_INPUTSEL_CH0 0
166#define ADC_SINGLECTRL_INPUTSEL_CH1 1
167#define ADC_SINGLECTRL_INPUTSEL_CH2 2
168#define ADC_SINGLECTRL_INPUTSEL_CH3 3
169#define ADC_SINGLECTRL_INPUTSEL_CH4 4
170#define ADC_SINGLECTRL_INPUTSEL_CH5 5
171#define ADC_SINGLECTRL_INPUTSEL_CH6 6
172#define ADC_SINGLECTRL_INPUTSEL_CH7 7
173#define ADC_SINGLECTRL_INPUTSEL_TEMP 8
174#define ADC_SINGLECTRL_INPUTSEL_VDDDIV3 9
175#define ADC_SINGLECTRL_INPUTSEL_VDD 10
176#define ADC_SINGLECTRL_INPUTSEL_VSS 11
177#define ADC_SINGLECTRL_INPUTSEL_VREFDIV2 12
178#define ADC_SINGLECTRL_INPUTSEL_DAC0OUT0 13
179#define ADC_SINGLECTRL_INPUTSEL_DAC0OUT1 14
180/* DIFF=1 */
181#define ADC_SINGLECTRL_INPUTSEL_CH0CH1 0
182#define ADC_SINGLECTRL_INPUTSEL_CH2CH3 1
183#define ADC_SINGLECTRL_INPUTSEL_CH4CH5 2
184#define ADC_SINGLECTRL_INPUTSEL_CH6CH7 3
185#define ADC_SINGLECTRL_INPUTSEL_DIFF0 4
186
187#define ADC_SINGLECTRL_RES_SHIFT (4)
188#define ADC_SINGLECTRL_RES_MASK (0x3 << ADC_SINGLECTRL_RES_SHIFT)
189#define ADC_SINGLECTRL_RES(v) \
190 (((v) << ADC_SINGLECTRL_RES_SHIFT) & ADC_SINGLECTRL_RES_MASK)
191#define ADC_SINGLECTRL_RES_12BIT 0
192#define ADC_SINGLECTRL_RES_8BIT 1
193#define ADC_SINGLECTRL_RES_6BIT 2
194#define ADC_SINGLECTRL_RES_OVS 3
195
196#define ADC_SINGLECTRL_ADJ (1 << 2)
197#define ADC_SINGLECTRL_DIFF (1 << 1)
198#define ADC_SINGLECTRL_REP (1 << 0)
199
200/* ADC_SCANCTRL */
201#define ADC_SCANCTRL_PRSSEL_SHIFT (28)
202#define ADC_SCANCTRL_PRSSEL_MASK (0xF << ADC_SCANCTRL_PRSSEL_SHIFT)
203#define ADC_SCANCTRL_PRSSEL(v) \
204 (((v) << ADC_SCANCTRL_PRSSEL_SHIFT) & ADC_SCANCTRL_PRSSEL_MASK)
205#define ADC_SCANCTRL_PRSSEL_PRSCHx(x) ADC_SCANCTRL_PRSSEL(x)
206#define ADC_SCANCTRL_PRSSEL_PRSCH0 0
207#define ADC_SCANCTRL_PRSSEL_PRSCH1 1
208#define ADC_SCANCTRL_PRSSEL_PRSCH2 2
209#define ADC_SCANCTRL_PRSSEL_PRSCH3 3
210#define ADC_SCANCTRL_PRSSEL_PRSCH4 4
211#define ADC_SCANCTRL_PRSSEL_PRSCH5 5
212#define ADC_SCANCTRL_PRSSEL_PRSCH6 6
213#define ADC_SCANCTRL_PRSSEL_PRSCH7 7
214#define ADC_SCANCTRL_PRSSEL_PRSCH8 8
215#define ADC_SCANCTRL_PRSSEL_PRSCH9 9
216#define ADC_SCANCTRL_PRSSEL_PRSCH10 10
217#define ADC_SCANCTRL_PRSSEL_PRSCH11 11
218
219#define ADC_SCANCTRL_PRSEN (1 << 24)
220
221#define ADC_SCANCTRL_AT_SHIFT (20)
222#define ADC_SCANCTRL_AT_MASK (0xF << ADC_SCANCTRL_AT_SHIFT)
223#define ADC_SCANCTRL_AT(v) \
224 (((v) << ADC_SCANCTRL_AT_SHIFT) & ADC_SCANCTRL_AT_MASK)
225#define ADC_SCANCTRL_AT_1CYCLE 0
226#define ADC_SCANCTRL_AT_2CYCLES 1
227#define ADC_SCANCTRL_AT_4CYCLES 2
228#define ADC_SCANCTRL_AT_8CYCLES 3
229#define ADC_SCANCTRL_AT_16CYCLES 4
230#define ADC_SCANCTRL_AT_32CYCLES 5
231#define ADC_SCANCTRL_AT_64CYCLES 6
232#define ADC_SCANCTRL_AT_128CYCLES 7
233#define ADC_SCANCTRL_AT_256CYCLES 8
234
235#define ADC_SCANCTRL_REF_SHIFT (16)
236#define ADC_SCANCTRL_REF_MASK (0xF << ADC_SCANCTRL_REF_SHIFT)
237#define ADC_SCANCTRL_REF(v) \
238 (((v) << ADC_SCANCTRL_REF_SHIFT) & ADC_SCANCTRL_REF_MASK)
239#define ADC_SCANCTRL_REF_1V25 0
240#define ADC_SCANCTRL_REF_2V5 1
241#define ADC_SCANCTRL_REF_VDD 2
242#define ADC_SCANCTRL_REF_5VDIFF 3
243#define ADC_SCANCTRL_REF_EXTSCAN 4
244#define ADC_SCANCTRL_REF_2XEXTDIFF 5
245#define ADC_SCANCTRL_REF_2XVDD 6
246
247
248#define ADC_SCANCTRL_INPUTSEL_SHIFT (8)
249#define ADC_SCANCTRL_INPUTSEL_MASK (0xFF << ADC_SCANCTRL_INPUTSEL_SHIFT)
250#define ADC_SCANCTRL_INPUTSEL(v) \
251 (((v) << ADC_SCANCTRL_INPUTSEL_SHIFT) & ADC_SCANCTRL_INPUTSEL_MASK)
252/* DIFF=0 */
253#define ADC_SCANCTRL_INPUTSEL_CHx(x) ADC_SCANCTRL_INPUTSEL(1 << (x))
254#define ADC_SCANCTRL_INPUTSEL_CH0 ADC_SCANCTRL_INPUTSEL_CHx(0)
255#define ADC_SCANCTRL_INPUTSEL_CH1 ADC_SCANCTRL_INPUTSEL_CHx(1)
256#define ADC_SCANCTRL_INPUTSEL_CH2 ADC_SCANCTRL_INPUTSEL_CHx(2)
257#define ADC_SCANCTRL_INPUTSEL_CH3 ADC_SCANCTRL_INPUTSEL_CHx(3)
258#define ADC_SCANCTRL_INPUTSEL_CH4 ADC_SCANCTRL_INPUTSEL_CHx(4)
259#define ADC_SCANCTRL_INPUTSEL_CH5 ADC_SCANCTRL_INPUTSEL_CHx(5)
260#define ADC_SCANCTRL_INPUTSEL_CH6 ADC_SCANCTRL_INPUTSEL_CHx(6)
261#define ADC_SCANCTRL_INPUTSEL_CH7 ADC_SCANCTRL_INPUTSEL_CHx(7)
262/* DIFF=1 */
263#define ADC_SCANCTRL_INPUTSEL_CH0CH1 ADC_SCANCTRL_INPUTSEL(1 << 0)
264#define ADC_SCANCTRL_INPUTSEL_CH2CH3 ADC_SCANCTRL_INPUTSEL(1 << 1)
265#define ADC_SCANCTRL_INPUTSEL_CH4CH5 ADC_SCANCTRL_INPUTSEL(1 << 2)
266#define ADC_SCANCTRL_INPUTSEL_CH6CH7 ADC_SCANCTRL_INPUTSEL(1 << 3)
267
268#define ADC_SCANCTRL_RES_SHIFT (4)
269#define ADC_SCANCTRL_RES_MASK (0x3 << ADC_SCANCTRL_RES_SHIFT)
270#define ADC_SCANCTRL_RES(v) \
271 (((v) << ADC_SCANCTRL_RES_SHIFT) & ADC_SCANCTRL_RES_MASK)
272#define ADC_SCANCTRL_RES_12BIT 0
273#define ADC_SCANCTRL_RES_8BIT 1
274#define ADC_SCANCTRL_RES_6BIT 2
275#define ADC_SCANCTRL_RES_OVS 3
276
277#define ADC_SCANCTRL_ADJ (1 << 2)
278#define ADC_SCANCTRL_DIFF (1 << 1)
279#define ADC_SCANCTRL_REP (1 << 0)
280
281/* ADC_IEN */
282#define ADC_IEN_SCANOF (1 << 9)
283#define ADC_IEN_SINGLEOF (1 << 8)
284#define ADC_IEN_SCAN (1 << 1)
285#define ADC_IEN_SINGLE (1 << 0)
286
287/* ADC_IF */
288#define ADC_IF_SCANOF (1 << 9)
289#define ADC_IF_SINGLEOF (1 << 8)
290#define ADC_IF_SCAN (1 << 1)
291#define ADC_IF_SINGLE (1 << 0)
292
293/* ADC_IFS */
294#define ADC_IFS_SCANOF (1 << 9)
295#define ADC_IFS_SINGLEOF (1 << 8)
296#define ADC_IFS_SCAN (1 << 1)
297#define ADC_IFS_SINGLE (1 << 0)
298
299/* ADC_IFC */
300#define ADC_IFC_SCANOF (1 << 9)
301#define ADC_IFC_SINGLEOF (1 << 8)
302#define ADC_IFC_SCAN (1 << 1)
303#define ADC_IFC_SINGLE (1 << 0)
304
305/* ADC_CAL */
306#define ADC_CAL_SCANGAIN_SHIFT (24)
307#define ADC_CAL_SCANGAIN_MASK (0x7F)
308
309#define ADC_CAL_SCANOFF_SHIFT (16)
310#define ADC_CAL_SCANOFF_MASK (0x7F)
311
312#define ADC_CAL_SINGLEGAIN_SHIFT (8)
313#define ADC_CAL_SINGLEGAIN_MASK (0x7F)
314
315#define ADC_CAL_SINGLEOFF_SHIFT (0)
316#define ADC_CAL_SINGLEOFF_MASK (0x7F)
317
318/* ADC_BIASPROG */
319#define ADC_BIASPROG_COMPBIAS_SHIFT (8)
320#define ADC_BIASPROG_COMPBIAS_MASK (0xF)
321
322#define ADC_BIASPROG_HALFBIAS (1 << 6)
323
324#define ADC_BIASPROG_BIASPROG_SHIFT (0)
325#define ADC_BIASPROG_BIASPROG_MASK (0xF)
326
327/* ADC0 */
328#define ADC0 ADC0_BASE
329#define ADC0_CTRL ADC_CTRL(ADC0)
330#define ADC0_CMD ADC_CMD(ADC0)
331#define ADC0_STATUS ADC_STATUS(ADC0)
332#define ADC0_SINGLECTRL ADC_SINGLECTRL(ADC0)
333#define ADC0_SCANCTRL ADC_SCANCTRL(ADC0)
334#define ADC0_IEN ADC_IEN(ADC0)
335#define ADC0_IF ADC_IF(ADC0)
336#define ADC0_IFS ADC_IFS(ADC0)
337#define ADC0_IFC ADC_IFC(ADC0)
338#define ADC0_SINGLEDATA ADC_SINGLEDATA(ADC0)
339#define ADC0_SCANDATA ADC_SCANDATA(ADC0)
340#define ADC0_SINGLEDATAP ADC_SINGLEDATAP(ADC0)
341#define ADC0_SCANDATAP ADC_SCANDATAP(ADC0)
342#define ADC0_CAL ADC_CAL(ADC0)
343#define ADC0_BIASPROG ADC_BIASPROG(ADC0)
344
345/** @defgroup adc_ch ADC Channel Number
346@{*/
347#define ADC_CH0 0
348#define ADC_CH1 1
349#define ADC_CH2 2
350#define ADC_CH3 3
351#define ADC_CH4 4
352#define ADC_CH5 5
353#define ADC_CH6 6
354#define ADC_CH7 7
355#define ADC_CH_TEMP 8
356#define ADC_CH_VDDDIV3 9
357#define ADC_CH_VDD 10
358#define ADC_CH_VSS 11
359#define ADC_CH_VREFDIV2 12
360#define ADC_CH_DAC0OUT0 13
361#define ADC_CH_DAC0OUT1 14
362
363#define ADC_CH_CH0CH1 0
364#define ADC_CH_CH2CH3 1
365#define ADC_CH_CH4CH5 2
366#define ADC_CH_CH6CH7 3
367#define ADC_CH_DIFF0 4
368/**@}*/
369
371
372void adc_set_oversampling(uint32_t adc, uint32_t oversamp);
373void adc_set_warm_up(uint32_t adc, uint8_t clocks);
374void adc_set_clock_prescaler(uint32_t adc, uint8_t factor);
375void adc_set_lowpass_filter(uint32_t adc, uint32_t lpfmode);
376
377void adc_enable_tailgating(uint32_t adc);
378void adc_disable_tailgating(uint32_t adc);
379
380void adc_set_warm_up_mode(uint32_t adc, uint32_t warmupmode);
381
382void adc_single_start(uint32_t adc);
383void adc_single_stop(uint32_t adc);
384
385void adc_scan_start(uint32_t adc);
386void adc_scan_stop(uint32_t adc);
387
388/* TODO: ADC_STATUS */
389
390void adc_set_single_prs_trigger(uint32_t adc, uint8_t prssel);
391void adc_enable_single_prs_trigger(uint32_t adc);
392void adc_disable_single_prs_trigger(uint32_t adc);
393void adc_set_single_acquisition_cycle(uint32_t adc, uint32_t at);
394void adc_set_single_reference(uint32_t adc, uint32_t ref);
395void adc_set_single_channel(uint32_t adc, uint8_t ch);
396void adc_set_single_resolution(uint32_t adc, uint32_t res);
397void adc_set_single_left_aligned(uint32_t adc);
398void adc_set_single_right_aligned(uint32_t adc);
399void adc_set_single_single_ended(uint32_t adc);
400void adc_set_single_differential(uint32_t adc);
401void adc_enable_single_repeat_conv(uint32_t adc);
402void adc_disable_single_repeat_conv(uint32_t adc);
403
404void adc_set_scan_prs_trigger(uint32_t adc, uint8_t prssel);
405void adc_enable_scan_prs_trigger(uint32_t adc);
406void adc_disable_scan_prs_trigger(uint32_t adc);
407void adc_set_scan_acquisition_cycle(uint32_t adc, uint32_t at);
408void adc_set_scan_reference(uint32_t adc, uint32_t ref);
409void adc_set_scan_channel(uint32_t adc, uint8_t length,
410 uint8_t channel[]);
411void adc_set_scan_resolution(uint32_t adc, uint32_t res);
412void adc_set_scan_left_aligned(uint32_t adc);
413void adc_set_scan_right_aligned(uint32_t adc);
414void adc_set_scan_single_ended(uint32_t adc);
415void adc_set_scan_differential(uint32_t adc);
416void adc_enable_scan_repeat_conv(uint32_t adc);
417void adc_disable_scan_repeat_conv(uint32_t adc);
418
427
428bool adc_get_single_result_overflow_flag(uint32_t adc);
430bool adc_get_scan_result_overflow_flag(uint32_t adc);
432
433void adc_set_single_result_overflow_flag(uint32_t adc);
435void adc_set_scan_result_overflow_flag(uint32_t adc);
437
440void adc_clear_scan_result_overflow_flag(uint32_t adc);
442
443uint32_t adc_single_data(uint32_t adc);
444uint32_t adc_scan_data(uint32_t adc);
445
446uint32_t adc_single_data_peak(uint32_t adc);
447uint32_t adc_scan_data_peak(uint32_t adc);
448
449void adc_set_calibration_scan_gain(uint32_t adc, uint8_t scan_gain);
450void adc_set_calibration_scan_offset(uint32_t adc, uint8_t scan_offset);
451
452void adc_set_calibration_single_gain(uint32_t adc, uint8_t single_gain);
453void adc_set_calibration_single_offset(uint32_t adc, uint8_t single_offset);
454
456
457/**@}*/
#define END_DECLS
Definition: common.h:34
#define BEGIN_DECLS
Definition: common.h:33
Dispatcher for the base address definitions, depending on the particular Gecko family.
void adc_disable_tailgating(uint32_t adc)
Disable tail gating.
Definition: adc_common.c:83
void adc_single_start(uint32_t adc)
Start ADC in single acquisition.
Definition: adc_common.c:103
uint32_t adc_single_data_peak(uint32_t adc)
Get result from last single conversion (peak) Reading result using this function will not clear SINGL...
Definition: adc_common.c:621
void adc_set_scan_channel(uint32_t adc, uint8_t length, uint8_t channel[])
Set scan channel list.
Definition: adc_common.c:325
void adc_enable_scan_repeat_conv(uint32_t adc)
Enable scan repeated conversion.
Definition: adc_common.c:392
void adc_set_single_result_overflow_flag(uint32_t adc)
Set single result overflow flag.
Definition: adc_common.c:526
void adc_set_scan_right_aligned(uint32_t adc)
Set scan right aligned output.
Definition: adc_common.c:363
void adc_enable_scan_prs_trigger(uint32_t adc)
Enable scan PRS Triggering.
Definition: adc_common.c:282
void adc_clear_single_result_overflow_flag(uint32_t adc)
Clear single result overflow flag.
Definition: adc_common.c:562
void adc_disable_scan_result_overflow_interrupt(uint32_t adc)
Disable scan result overflow interrupt.
Definition: adc_common.c:455
bool adc_get_single_conversion_complete_flag(uint32_t adc)
Get single conversion complete flag.
Definition: adc_common.c:495
void adc_set_scan_result_overflow_flag(uint32_t adc)
Set scan result overflow flag.
Definition: adc_common.c:544
uint32_t adc_single_data(uint32_t adc)
Get result from last scan conversion.
Definition: adc_common.c:599
void adc_set_warm_up_mode(uint32_t adc, uint32_t warmupmode)
Set warm up mode.
Definition: adc_common.c:93
void adc_set_single_differential(uint32_t adc)
Set single differential conversion.
Definition: adc_common.c:242
void adc_enable_single_prs_trigger(uint32_t adc)
Enable single PRS Triggering.
Definition: adc_common.c:152
void adc_scan_stop(uint32_t adc)
Stop ADC in scan acquisition.
Definition: adc_common.c:130
void adc_set_scan_single_ended(uint32_t adc)
Set scan single ended conversion.
Definition: adc_common.c:372
void adc_set_single_acquisition_cycle(uint32_t adc, uint32_t at)
Set single acquisition cycle.
Definition: adc_common.c:171
void adc_disable_single_prs_trigger(uint32_t adc)
Disable single PRS Triggering.
Definition: adc_common.c:161
void adc_disable_single_repeat_conv(uint32_t adc)
Disable single repeated conversion.
Definition: adc_common.c:260
bool adc_get_scan_conversion_complete_flag(uint32_t adc)
Get scan conversion complete flag.
Definition: adc_common.c:517
void adc_set_oversampling(uint32_t adc, uint32_t oversamp)
Set ADC over sampling.
Definition: adc_common.c:32
void adc_enable_scan_conversion_complete_interrupt(uint32_t adc)
Disable scan conversion complete interrupt.
Definition: adc_common.c:464
bool adc_get_scan_result_overflow_flag(uint32_t adc)
Get scan result overflow flag.
Definition: adc_common.c:506
void adc_enable_tailgating(uint32_t adc)
Enable tail gating.
Definition: adc_common.c:74
void adc_disable_scan_repeat_conv(uint32_t adc)
Disable scan repeated conversion.
Definition: adc_common.c:401
void adc_set_single_channel(uint32_t adc, uint8_t ch)
Set single channel.
Definition: adc_common.c:193
void adc_enable_single_conversion_complete_interrupt(uint32_t adc)
Enable single conversion complete interrupt.
Definition: adc_common.c:428
void adc_set_calibration_single_offset(uint32_t adc, uint8_t single_offset)
Set ADC single offset calibration.
Definition: adc_common.c:673
void adc_disable_scan_conversion_complete_interrupt(uint32_t adc)
Disable scan conversion complete interrupt.
Definition: adc_common.c:473
void adc_set_single_prs_trigger(uint32_t adc, uint8_t prssel)
Set single PRS trigger.
Definition: adc_common.c:141
void adc_set_single_conversion_complete_flag(uint32_t adc)
Set single conversion complete flag.
Definition: adc_common.c:535
void adc_set_clock_prescaler(uint32_t adc, uint8_t factor)
Clock division factor.
Definition: adc_common.c:54
void adc_set_scan_reference(uint32_t adc, uint32_t ref)
Set scan reference for acquisition.
Definition: adc_common.c:312
void adc_set_single_right_aligned(uint32_t adc)
Set single right aligned output.
Definition: adc_common.c:224
void adc_set_scan_conversion_complete_flag(uint32_t adc)
Set scan conversion complete flag.
Definition: adc_common.c:553
bool adc_get_single_result_overflow_flag(uint32_t adc)
Get single result overflow flag.
Definition: adc_common.c:484
void adc_enable_single_repeat_conv(uint32_t adc)
Enable single channel repeated conversion.
Definition: adc_common.c:251
void adc_scan_start(uint32_t adc)
Start ADC in scan acquisition.
Definition: adc_common.c:121
void adc_set_scan_acquisition_cycle(uint32_t adc, uint32_t at)
Set scan acquisition cycle.
Definition: adc_common.c:301
void adc_enable_single_result_overflow_interrupt(uint32_t adc)
Enable single result overflow interrupt.
Definition: adc_common.c:410
void adc_set_calibration_single_gain(uint32_t adc, uint8_t single_gain)
Set ADC single gain calibration.
Definition: adc_common.c:663
void adc_set_scan_differential(uint32_t adc)
Set scan differential conversion.
Definition: adc_common.c:381
void adc_set_scan_left_aligned(uint32_t adc)
Set scan left aligned output.
Definition: adc_common.c:354
void adc_set_scan_resolution(uint32_t adc, uint32_t res)
Set scan resolution of conversion.
Definition: adc_common.c:344
void adc_single_stop(uint32_t adc)
Stop ADC in single acquisition.
Definition: adc_common.c:112
void adc_set_warm_up(uint32_t adc, uint8_t clocks)
Set ADC warm up.
Definition: adc_common.c:43
void adc_set_lowpass_filter(uint32_t adc, uint32_t lpfmode)
Set low pass filter mode.
Definition: adc_common.c:65
void adc_set_single_resolution(uint32_t adc, uint32_t res)
Set single resolution of conversion.
Definition: adc_common.c:205
void adc_set_single_single_ended(uint32_t adc)
Set single single-ended conversion.
Definition: adc_common.c:233
void adc_set_single_reference(uint32_t adc, uint32_t ref)
Set single reference for acquisition.
Definition: adc_common.c:182
void adc_set_single_left_aligned(uint32_t adc)
Set single left aligned output.
Definition: adc_common.c:215
void adc_set_calibration_scan_gain(uint32_t adc, uint8_t scan_gain)
Set ADC scan gain calibration.
Definition: adc_common.c:643
void adc_enable_scan_result_overflow_interrupt(uint32_t adc)
Enable scan result overflow interrupt.
Definition: adc_common.c:446
void adc_disable_scan_prs_trigger(uint32_t adc)
Disable scan PRS Triggering.
Definition: adc_common.c:291
void adc_disable_single_result_overflow_interrupt(uint32_t adc)
Disable single result overflow interrupt.
Definition: adc_common.c:419
void adc_set_scan_prs_trigger(uint32_t adc, uint8_t prssel)
Set scan PRS trigger.
Definition: adc_common.c:271
void adc_clear_scan_conversion_complete_flag(uint32_t adc)
Clear scan conversion complete flag.
Definition: adc_common.c:589
void adc_clear_scan_result_overflow_flag(uint32_t adc)
Clear scan result overflow flag.
Definition: adc_common.c:580
void adc_disable_single_conversion_complete_interrupt(uint32_t adc)
Disable single conversion complete interrupt.
Definition: adc_common.c:437
uint32_t adc_scan_data_peak(uint32_t adc)
Get result from last scan conversion (peak) Reading result using this function will not clear SCANDV ...
Definition: adc_common.c:633
void adc_clear_single_conversion_complete_flag(uint32_t adc)
Clear single conversion complete flag.
Definition: adc_common.c:571
void adc_set_calibration_scan_offset(uint32_t adc, uint8_t scan_offset)
Set ADC scan offset calibration.
Definition: adc_common.c:653
uint32_t adc_scan_data(uint32_t adc)
Get result from last scan conversion.
Definition: adc_common.c:609