MSPM0G1X0X_G3X0X TI-Driver Library  1.20.01.06
ADCMSPM0.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2023, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*!****************************************************************************
33  * @file ADCMSPM0.h
34  * @brief ADC driver implementation for the ADC peripheral on MSPM0
35  * devices
36  * @defgroup ADCMSPM0 ADC driver APIs
37  *
38  * This ADC driver implementation is designed to operate on a ADC peripheral
39  * for MSPM0 devices.
40  *
41  * Refer to ADC.h for a complete description of APIs & example of use.
42  *
43  ******************************************************************************
44  */
49 /* clang-format off */
50 #ifndef ti_drivers_adc_ADCMSPM0__include
51 #define ti_drivers_adc_ADCMSPM0__include
52 
53 #include <stdint.h>
54 #include <stdbool.h>
55 
56 
57 #include <ti/drivers/ADC.h>
58 #include <ti/driverlib/dl_adc12.h>
59 
60 #ifdef POWER_MANAGEMENT_MSPM0
61 #include <ti/drivers/Power.h>
62 #endif
63 #include <ti/devices/DeviceFamily.h>
64 
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68 
69 #define ADC_ALL_INTERRUPTS_MASK 0xFFFFFFFFUL
70 
76 typedef enum
77 {
79  ADCMSPM0_RESOLUTION_12_BIT = DL_ADC12_SAMP_CONV_RES_12_BIT,
81  ADCMSPM0_RESOLUTION_10_BIT = DL_ADC12_SAMP_CONV_RES_10_BIT,
83  ADCMSPM0_RESOLUTION_8_BIT = DL_ADC12_SAMP_CONV_RES_8_BIT,
85 
100 typedef enum
101 {
103  ADCMSPM0_VDDA_REFERENCE = DL_ADC12_REFERENCE_VOLTAGE_VDDA,
105  ADCMSPM0_INTERNAL_REFERENCE = DL_ADC12_REFERENCE_VOLTAGE_INTREF,
107  ADCMSPM0_EXTERNAL_REFERENCE = DL_ADC12_REFERENCE_VOLTAGE_EXTREF
109 
116 typedef enum
117 {
119  ADCMSPM0_CLKDIV_1 = DL_ADC12_CLOCK_DIVIDE_1,
121  ADCMSPM0_CLKDIV_2 = DL_ADC12_CLOCK_DIVIDE_2,
123  ADCMSPM0_CLKDIV_4 = DL_ADC12_CLOCK_DIVIDE_4,
125  ADCMSPM0_CLKDIV_8 = DL_ADC12_CLOCK_DIVIDE_8,
127  ADCMSPM0_CLKDIV_16 = DL_ADC12_CLOCK_DIVIDE_16,
129  ADCMSPM0_CLKDIV_24 = DL_ADC12_CLOCK_DIVIDE_24,
131  ADCMSPM0_CLKDIV_32 = DL_ADC12_CLOCK_DIVIDE_32,
133  ADCMSPM0_CLKDIV_48 = DL_ADC12_CLOCK_DIVIDE_48
135 
142 typedef enum
143 {
145  ADCMSPM0_CLK_SYSOSC = DL_ADC12_CLOCK_SYSOSC,
147  ADCMSPM0_CLK_ULPCLK = DL_ADC12_CLOCK_ULPCLK,
149  ADCMSPM0_CLK_HFCLK = DL_ADC12_CLOCK_HFCLK,
151 
157 typedef enum
158 {
160  ADCMSPM0_CLK_FREQ_RANGE_1TO4 = DL_ADC12_CLOCK_FREQ_RANGE_1_TO_4,
162  ADCMSPM0_CLK_FREQ_RANGE_4TO8 = DL_ADC12_CLOCK_FREQ_RANGE_4_TO_8,
164  ADCMSPM0_CLK_FREQ_RANGE_8TO16 = DL_ADC12_CLOCK_FREQ_RANGE_8_TO_16,
166  ADCMSPM0_CLK_FREQ_RANGE_16TO20 = DL_ADC12_CLOCK_FREQ_RANGE_16_TO_20,
168  ADCMSPM0_CLK_FREQ_RANGE_20TO24 = DL_ADC12_CLOCK_FREQ_RANGE_20_TO_24,
170  ADCMSPM0_CLK_FREQ_RANGE_24TO32 = DL_ADC12_CLOCK_FREQ_RANGE_24_TO_32,
172  ADCMSPM0_CLK_FREQ_RANGE_32TO40 = DL_ADC12_CLOCK_FREQ_RANGE_32_TO_40,
174  ADCMSPM0_CLK_FREQ_RANGE_40TO48 = DL_ADC12_CLOCK_FREQ_RANGE_40_TO_48,
176 
182 typedef enum
183 {
185  ADCMSPM0_SINGLE_CH_SINGLE_CONV = DL_ADC12_SAMP_MODE_SINGLE,
187  ADCMSPM0_MULTI_CH_SEQUENCE_CONV = DL_ADC12_SAMP_MODE_SEQUENCE,
189 
195 typedef enum
196 {
198  ADCMSPM0_REPEAT_MODE_ENABLED = DL_ADC12_REPEAT_MODE_ENABLED,
200  ADCMSPM0_REPEAT_MODE_DISABLED = DL_ADC12_REPEAT_MODE_DISABLED,
202 
208 typedef enum
209 {
214  ADCMSPM0_SAMPLING_MODE_AUTO = DL_ADC12_SAMPLING_SOURCE_AUTO,
216  ADCMSPM0_SAMPLING_MODE_MANUAL = DL_ADC12_SAMPLING_SOURCE_MANUAL,
218 
224 typedef enum
225 {
227  ADCMSPM0_SAMPLING_TRIG_SW = DL_ADC12_TRIG_SRC_SOFTWARE,
229  ADCMSPM0_SAMPLING_TRIG_EVENT = DL_ADC12_TRIG_SRC_EVENT,
231 
237 typedef enum
238 {
240  ADCMSPM0_CONV_DATA_FORMAT_UNSIGNED = DL_ADC12_SAMP_CONV_DATA_FORMAT_UNSIGNED,
242  ADCMSPM0_CONV_DATA_FORMAT_SIGNED = DL_ADC12_SAMP_CONV_DATA_FORMAT_SIGNED,
244 
252 typedef enum
253 {
255  ADCMSPM0_SAMP_TMR_SOURCE_SCOMP0 = DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0,
257  ADCMSPM0_SAMP_TMR_SOURCE_SCOMP1 = DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP1,
259 
265 typedef enum
266 {
268  ADCMSPM0_NEXT_CONV_AUTO = DL_ADC12_TRIGGER_MODE_AUTO_NEXT,
270  ADCMSPM0_NEXT_CONV_WITH_TRIG = DL_ADC12_TRIGGER_MODE_TRIGGER_NEXT,
272 
278 typedef enum
279 {
281  ADCMSPM0_HW_AVG_ENABLED = DL_ADC12_AVERAGING_MODE_ENABLED,
283  ADCMSPM0_HW_AVG_DISABLED = DL_ADC12_AVERAGING_MODE_DISABLED,
285 
292 typedef enum
293 {
294  ADCMSPM0_HW_AVG_NUM_ACC_DISABLED = DL_ADC12_HW_AVG_NUM_ACC_DISABLED,
295  ADCMSPM0_HW_AVG_NUM_ACC_2 = DL_ADC12_HW_AVG_NUM_ACC_2,
296  ADCMSPM0_HW_AVG_NUM_ACC_4 = DL_ADC12_HW_AVG_NUM_ACC_4,
297  ADCMSPM0_HW_AVG_NUM_ACC_8 = DL_ADC12_HW_AVG_NUM_ACC_8,
298  ADCMSPM0_HW_AVG_NUM_ACC_16 = DL_ADC12_HW_AVG_NUM_ACC_16,
299  ADCMSPM0_HW_AVG_NUM_ACC_32 = DL_ADC12_HW_AVG_NUM_ACC_32,
300  ADCMSPM0_HW_AVG_NUM_ACC_64 = DL_ADC12_HW_AVG_NUM_ACC_64,
301  ADCMSPM0_HW_AVG_NUM_ACC_128 = DL_ADC12_HW_AVG_NUM_ACC_128,
303 
309 typedef enum
310 {
311  ADCMSPM0_HW_AVG_DEN_DIV_BY_1 = DL_ADC12_HW_AVG_DEN_DIV_BY_1,
312  ADCMSPM0_HW_AVG_DEN_DIV_BY_2 = DL_ADC12_HW_AVG_DEN_DIV_BY_2,
313  ADCMSPM0_HW_AVG_DEN_DIV_BY_4 = DL_ADC12_HW_AVG_DEN_DIV_BY_4,
314  ADCMSPM0_HW_AVG_DEN_DIV_BY_8 = DL_ADC12_HW_AVG_DEN_DIV_BY_8,
315  ADCMSPM0_HW_AVG_DEN_DIV_BY_16 = DL_ADC12_HW_AVG_DEN_DIV_BY_16,
316  ADCMSPM0_HW_AVG_DEN_DIV_BY_32 = DL_ADC12_HW_AVG_DEN_DIV_BY_32,
317  ADCMSPM0_HW_AVG_DEN_DIV_BY_64 = DL_ADC12_HW_AVG_DEN_DIV_BY_64,
318  ADCMSPM0_HW_AVG_DEN_DIV_BY_128 = DL_ADC12_HW_AVG_DEN_DIV_BY_128,
320 
326 typedef enum
327 {
329  ADCMSPM0_Pwr_Dn_MODE_AUTO = DL_ADC12_POWER_DOWN_MODE_AUTO,
331  ADCMSPM0_Pwr_Dn_MODE_MANUAL = DL_ADC12_POWER_DOWN_MODE_MANUAL,
333 
340 typedef enum
341 {
342  ADCMSPM0_SEQ_START_ADDR_00 = DL_ADC12_SEQ_START_ADDR_00,
343  ADCMSPM0_SEQ_START_ADDR_01 = DL_ADC12_SEQ_START_ADDR_01,
344  ADCMSPM0_SEQ_START_ADDR_02 = DL_ADC12_SEQ_START_ADDR_02,
345  ADCMSPM0_SEQ_START_ADDR_03 = DL_ADC12_SEQ_START_ADDR_03,
346  ADCMSPM0_SEQ_START_ADDR_04 = DL_ADC12_SEQ_START_ADDR_04,
347  ADCMSPM0_SEQ_START_ADDR_05 = DL_ADC12_SEQ_START_ADDR_05,
348  ADCMSPM0_SEQ_START_ADDR_06 = DL_ADC12_SEQ_START_ADDR_06,
349  ADCMSPM0_SEQ_START_ADDR_07 = DL_ADC12_SEQ_START_ADDR_07,
350  ADCMSPM0_SEQ_START_ADDR_08 = DL_ADC12_SEQ_START_ADDR_08,
351  ADCMSPM0_SEQ_START_ADDR_09 = DL_ADC12_SEQ_START_ADDR_09,
352  ADCMSPM0_SEQ_START_ADDR_10 = DL_ADC12_SEQ_START_ADDR_10,
353  ADCMSPM0_SEQ_START_ADDR_11 = DL_ADC12_SEQ_START_ADDR_11,
355 
362 typedef enum
363 {
364  ADCMSPM0_SEQ_END_ADDR_00 = DL_ADC12_SEQ_END_ADDR_00,
365  ADCMSPM0_SEQ_END_ADDR_01 = DL_ADC12_SEQ_END_ADDR_01,
366  ADCMSPM0_SEQ_END_ADDR_02 = DL_ADC12_SEQ_END_ADDR_02,
367  ADCMSPM0_SEQ_END_ADDR_03 = DL_ADC12_SEQ_END_ADDR_03,
368  ADCMSPM0_SEQ_END_ADDR_04 = DL_ADC12_SEQ_END_ADDR_04,
369  ADCMSPM0_SEQ_END_ADDR_05 = DL_ADC12_SEQ_END_ADDR_05,
370  ADCMSPM0_SEQ_END_ADDR_06 = DL_ADC12_SEQ_END_ADDR_06,
371  ADCMSPM0_SEQ_END_ADDR_07 = DL_ADC12_SEQ_END_ADDR_07,
372  ADCMSPM0_SEQ_END_ADDR_08 = DL_ADC12_SEQ_END_ADDR_08,
373  ADCMSPM0_SEQ_END_ADDR_09 = DL_ADC12_SEQ_END_ADDR_09,
374  ADCMSPM0_SEQ_END_ADDR_10 = DL_ADC12_SEQ_END_ADDR_10,
375  ADCMSPM0_SEQ_END_ADDR_11 = DL_ADC12_SEQ_END_ADDR_11,
377 
386 typedef struct
387 {
389  ADC12_Regs *adc;
391  uint8_t adcInputDIO;
393  uint8_t adcInputPincm;
395  uint32_t adcInputPinMux;
397  uint8_t adcPosRefDIO;
399  uint8_t adcPosRefPincm;
401  uint32_t adcPosRefPinMux;
403  uint8_t adcNegRefDIO;
405  uint8_t adcNegRefPincm;
407  uint32_t adcNegRefPinMux;
409  uint8_t adcChannel;
411  uint_fast32_t refVoltage;
413  ADCMSPM0_Reference_Source refSource;
417  ADCMSPM0_Resolution_Bits resolutionBits;
419  ADCMSPM0_Clock_Divider adcClkkDivider;
421  ADCMSPM0_Clock_Select adcClkSelect;
423  ADCMSPM0_Freq_Range adcClkFreqRange;
424 
426  ADCMSPM0_Conversion_Mode conversionMode;
428  ADCMSPM0_CONV_START_ADDRESS conversionStartAddr;
430  ADCMSPM0_CONV_END_ADDRESS conversionEndAddr;
432  ADCMSPM0_Repeat_Conversion_Mode repeatConversionMode;
434  ADCMSPM0_Sampling_Mode samplingMode;
436  ADCMSPM0_Sampling_Trg sampleTrigger;
438  ADCMSPM0_Conv_Data_Format conversionDataFormat;
440  ADCMSPM0_Sample_Timer_Source sampleTimerSrc;
442  ADCMSPM0_Conv_Trig_Src conversionTrigger;
444  ADCMSPM0_HW_Avg adcHWAveraging;
446  ADCMSPM0_AVGD adcHwAvgDenominator;
448  ADCMSPM0_AVGN adcHwAvgNumerator;
450  uint8_t idxMEMCTLx;
452 
458 typedef struct
459 {
461  bool isOpen;
465 
466 #ifdef __cplusplus
467 }
468 #endif
469 
470 #endif /* ti_drivers_adc_ADCMSPM0__include */
471 /* clang-format on */
ADCMSPM0_Clock_Select adcClkSelect
Definition: ADCMSPM0.h:421
ADC12_Regs * adc
Definition: ADCMSPM0.h:389
Definition: ADCMSPM0.h:216
Definition: ADCMSPM0.h:174
Definition: ADCMSPM0.h:185
ADCMSPM0_Reference_Source
Specifies the source of the ADC reference voltage.
Definition: ADCMSPM0.h:100
Definition: ADCMSPM0.h:147
Definition: ADCMSPM0.h:149
uint8_t adcNegRefPincm
Definition: ADCMSPM0.h:405
ADCMSPM0_HW_Avg
ADC HW averaging.
Definition: ADCMSPM0.h:278
Definition: ADCMSPM0.h:198
ADCMSPM0_Conversion_Mode
ADC conversion mode.
Definition: ADCMSPM0.h:182
ADCMSPM0 Hardware attributes These fields are used by driverlib APIs and therefore must be populated ...
Definition: ADCMSPM0.h:386
Definition: ADCMSPM0.h:214
Definition: ADCMSPM0.h:268
ADCMSPM0_Sample_Timer_Source sampleTimerSrc
Definition: ADCMSPM0.h:440
Definition: ADCMSPM0.h:240
ADCMSPM0_Clock_Select
ADC clock source select.
Definition: ADCMSPM0.h:142
uint8_t adcInputPincm
Definition: ADCMSPM0.h:393
ADCMSPM0_AVGD adcHwAvgDenominator
Definition: ADCMSPM0.h:446
Definition: ADCMSPM0.h:166
uint8_t adcNegRefDIO
Definition: ADCMSPM0.h:403
Definition: ADCMSPM0.h:270
Definition: ADCMSPM0.h:83
Definition: ADCMSPM0.h:331
ADCMSPM0_Conversion_Mode conversionMode
Definition: ADCMSPM0.h:426
Definition: ADCMSPM0.h:121
ADCMSPM0_Clock_Divider adcClkkDivider
Definition: ADCMSPM0.h:419
Definition: ADCMSPM0.h:160
Definition: ADCMSPM0.h:200
ADCMSPM0_Conv_Trig_Src
ADC conversion trigger.
Definition: ADCMSPM0.h:265
ADCMSPM0_AVGN adcHwAvgNumerator
Definition: ADCMSPM0.h:448
Definition: ADCMSPM0.h:257
Definition: ADCMSPM0.h:107
Definition: ADCMSPM0.h:168
ADCMSPM0_Reference_Source refSource
Definition: ADCMSPM0.h:413
Definition: ADCMSPM0.h:105
ADCMSPM0_Repeat_Conversion_Mode
ADC Repeat conversion mode.
Definition: ADCMSPM0.h:195
ADCMSPM0_Freq_Range
ADC clock freq range.
Definition: ADCMSPM0.h:157
Definition: ADCMSPM0.h:123
Definition: ADCMSPM0.h:125
Definition: ADCMSPM0.h:170
uint16_t samplingDuration
Definition: ADCMSPM0.h:415
ADCMSPM0_Sampling_Trg sampleTrigger
Definition: ADCMSPM0.h:436
uint32_t adcNegRefPinMux
Definition: ADCMSPM0.h:407
ADCMSPM0_Repeat_Conversion_Mode repeatConversionMode
Definition: ADCMSPM0.h:432
Definition: ADCMSPM0.h:131
Definition: ADCMSPM0.h:187
Definition: ADCMSPM0.h:119
ADCMSPM0_Conv_Trig_Src conversionTrigger
Definition: ADCMSPM0.h:442
uint8_t adcChannel
Definition: ADCMSPM0.h:409
ADCMSPM0_CONV_END_ADDRESS
Sequence end address.
Definition: ADCMSPM0.h:362
Analog to Digital Conversion (ADC) Input Driver.
ADCMSPM0_CONV_END_ADDRESS conversionEndAddr
Definition: ADCMSPM0.h:430
ADCMSPM0_Conv_Data_Format conversionDataFormat
Definition: ADCMSPM0.h:438
ADCMSPM0_Sample_Timer_Source
ADC sample timer source.
Definition: ADCMSPM0.h:252
uint8_t adcInputDIO
Definition: ADCMSPM0.h:391
ADCMSPM0_AVGN
Hardware averager numerator.
Definition: ADCMSPM0.h:292
Definition: ADCMSPM0.h:164
Definition: ADCMSPM0.h:283
uint8_t adcPosRefDIO
Definition: ADCMSPM0.h:397
ADCMSPM0_CONV_START_ADDRESS conversionStartAddr
Definition: ADCMSPM0.h:428
Definition: ADCMSPM0.h:329
uint_fast32_t refVoltage
Definition: ADCMSPM0.h:411
Definition: ADCMSPM0.h:255
ADCMSPM0_Clock_Divider
ADC clock-divider.
Definition: ADCMSPM0.h:116
ADCMSPM0_HW_Avg adcHWAveraging
Definition: ADCMSPM0.h:444
Definition: ADCMSPM0.h:81
ADCMSPM0_Freq_Range adcClkFreqRange
Definition: ADCMSPM0.h:423
ADCMSPM0_CONV_START_ADDRESS
Sequence start address.
Definition: ADCMSPM0.h:340
Definition: ADCMSPM0.h:129
Definition: ADCMSPM0.h:79
ADCMSPM0 Object.
Definition: ADCMSPM0.h:458
ADCMSPM0_Pwr_Dn_Mode
ADC power down mode.
Definition: ADCMSPM0.h:326
ADCMSPM0_Sampling_Trg
ADC sampling trigger source.
Definition: ADCMSPM0.h:224
bool isOpen
Definition: ADCMSPM0.h:461
ADCMSPM0_Resolution_Bits
Resolution of ADC-conversion.
Definition: ADCMSPM0.h:76
Definition: ADCMSPM0.h:145
Definition: ADCMSPM0.h:242
Definition: ADCMSPM0.h:103
ADCMSPM0_Resolution_Bits resolutionBits
Definition: ADCMSPM0.h:417
uint32_t adcInputPinMux
Definition: ADCMSPM0.h:395
Definition: ADCMSPM0.h:127
Definition: ADCMSPM0.h:281
Definition: ADCMSPM0.h:162
uint32_t adcPosRefPinMux
Definition: ADCMSPM0.h:401
bool isProtected
Definition: ADCMSPM0.h:463
Definition: ADCMSPM0.h:172
Definition: ADCMSPM0.h:133
ADCMSPM0_Sampling_Mode samplingMode
Definition: ADCMSPM0.h:434
ADCMSPM0_Sampling_Mode
ADC sampling mode.
Definition: ADCMSPM0.h:208
ADCMSPM0_Conv_Data_Format
ADC conversion data format.
Definition: ADCMSPM0.h:237
ADCMSPM0_AVGD
Hardware averager denominator.
Definition: ADCMSPM0.h:309
uint8_t adcPosRefPincm
Definition: ADCMSPM0.h:399
Definition: ADCMSPM0.h:227
uint8_t idxMEMCTLx
Definition: ADCMSPM0.h:450
Definition: ADCMSPM0.h:229
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale