1 /*
2  * Copyright (c) 2016-2020, 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       ADCCC32XX.h
34  *  @brief      ADC driver implementation for the ADC peripheral on CC32XX
35  *
36  *  This ADC driver implementation is designed to operate on a CC32XX ADC
37  *  peripheral.
38  *
39  *  Refer to @ref ADC.h for a complete description of APIs & example of use.
40  *
41  ******************************************************************************
42  */
43 #ifndef ti_drivers_adc_ADCCC32XX__include
44 #define ti_drivers_adc_ADCCC32XX__include
45 
46 #include <stdint.h>
47 #include <stdbool.h>
48 
49 #include <ti/drivers/ADC.h>
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 /*
56  *  The bits in the pin mode macros are as follows:
57  *  The lower 8 bits of the macro refer to the pin, offset by 1, to match
58  *  driverlib pin defines.
59  *  The upper 16 bits is the value that can be passed to APIs as the
60  *  ulChannel parameter.
61  */
62 
63 /*!< PIN 57 is used for ADC channel 0 */
64 #define ADCCC32XX_PIN_57_CH_0  (ADC_CH_0 << 8) | 0x38
65 /*!< PIN 58 is used for ADC channel 1 */
66 #define ADCCC32XX_PIN_58_CH_1  (ADC_CH_1 << 8) | 0x39
67 /*!< PIN 59 is used for ADC channel 2 */
68 #define ADCCC32XX_PIN_59_CH_2  (ADC_CH_2 << 8) | 0x3a
69 /*!< PIN 60 is used for ADC channel 3 */
70 #define ADCCC32XX_PIN_60_CH_3  (ADC_CH_3 << 8) | 0x3b
71 
72 /* ADC function table pointer */
73 extern const ADC_FxnTable ADCCC32XX_fxnTable;
74 
75 /*!
76  *  @brief  ADCCC32XX Hardware attributes
77  *
78  *  These fields are used by driverlib APIs and therefore must be populated by
79  *  driverlib macro definitions. For CC32XXWare these definitions are found in:
80  *      - ti/devices/cc32xx/driverlib/adc.h
81  *
82  *  A sample structure is shown below:
83  *  @code
84  *  const ADCCC32XX_HWAttrsV1 adcCC32XXHWAttrs[1] = {
85  *      {
86  *          .adcPin = ADCCC32XX_PIN_57
87  *      }
88  *  };
89  *  @endcode
90  */
91 typedef struct {
92     uint_fast16_t adcPin;
93 } ADCCC32XX_HWAttrsV1;
94 
95 /*!
96  *  @brief ADCCC32XX_Status
97  *
98  *  The application must not access any member variables of this structure!
99  */
100 typedef struct {
101     uint_fast32_t     baseAddr;
102     uint_least8_t     numOpenChannels;
103 } ADCCC32XX_State;
104 
105 /*!
106  *  @brief  ADCCC32XX Object
107  *
108  *  The application must not access any member variables of this structure!
109  */
110 typedef struct {
111     bool              isOpen;
112 } ADCCC32XX_Object;
113 
114 #ifdef __cplusplus
115 }
116 #endif
117 
118 #endif /* ti_drivers_adc_ADCCC32XX__include */
119