1 /** @file adc.h
2 *   @brief ADC Driver Header File
3 *   @date 29.May.2013
4 *   @version 03.05.02
5 *
6 *   This file contains:
7 *   - Definitions
8 *   - Types
9 *   - Interface Prototypes
10 *   .
11 *   which are relevant for the ADC driver.
12 */
13 
14 /* (c) Texas Instruments 2009-2013, All rights reserved. */
15 
16 #ifndef __ADC_H__
17 #define __ADC_H__
18 
19 #include "reg_adc.h"
20 
21 
22 
23 /* USER CODE BEGIN (0) */
24 /* USER CODE END */
25 
26 /* ADC General Definitions */
27 
28 /** @def adcGROUP0
29 *   @brief Alias name for ADC event group
30 *
31 *   @note This value should be used for API argument @a group
32 */
33 #define adcGROUP0 0U
34 
35 /** @def adcGROUP1
36 *   @brief Alias name for ADC group 1
37 *
38 *   @note This value should be used for API argument @a group
39 */
40 #define adcGROUP1 1U
41 
42 /** @def adcGROUP2
43 *   @brief Alias name for ADC group 2
44 *
45 *   @note This value should be used for API argument @a group
46 */
47 #define adcGROUP2 2U
48 
49 /** @enum adcResolution
50 *   @brief Alias names for data resolution
51 *   This enumeration is used to provide alias names for the data resolution:
52 *     - 12 bit resolution
53 *     - 10 bit resolution
54 *     - 8  bit resolution
55 */
56 
57 enum adcResolution
58 {
59     ADC_12_BIT = 0x00000000U, /**< Alias for 12 bit data resolution */
60     ADC_10_BIT = 0x00000100U, /**< Alias for 10 bit data resolution */
61     ADC_8_BIT  = 0x00000200U  /**< Alias for 8 bit data resolution  */
62 };
63 
64 /** @enum adcFiFoStatus
65 *   @brief Alias names for FiFo status
66 *   This enumeration is used to provide alias names for the current FiFo states:
67 *     - FiFo is not full
68 *     - FiFo is full
69 *     - FiFo overflow occurred
70 */
71 
72 enum adcFiFoStatus
73 {
74     ADC_FIFO_IS_NOT_FULL = 0U, /**< Alias for FiFo is not full       */
75     ADC_FIFO_IS_FULL     = 1U, /**< Alias for FiFo is full           */
76     ADC_FIFO_OVERFLOW    = 3U  /**< Alias for FiFo overflow occurred  */
77 };
78 
79 /** @enum adcConversionStatus
80 *   @brief Alias names for conversion status
81 *   This enumeration is used to provide alias names for the current conversion states:
82 *     - Conversion is not finished
83 *     - Conversion is finished
84 */
85 
86 enum adcConversionStatus
87 {
88     ADC_CONVERSION_IS_NOT_FINISHED = 0U, /**< Alias for current conversion is not finished */
89     ADC_CONVERSION_IS_FINISHED     = 8U  /**< Alias for current conversion is  finished    */
90 };
91 
92 /** @enum adc1HwTriggerSource
93 *   @brief Alias names for hardware trigger source
94 *   This enumeration is used to provide alias names for the hardware trigger sources:
95 */
96 
97 enum adc1HwTriggerSource
98 {
99 	ADC1_EVENT = 0U,       /**< Alias for event pin             */
100 	ADC1_HET1_8 = 1U,      /**< Alias for HET1 pin 8            */
101 	ADC1_HET1_10 = 2U,     /**< Alias for HET1 pin 10           */
102 	ADC1_RTI_COMP0 = 3U,   /**< Alias for RTI compare 0 match   */
103 	ADC1_HET1_12 = 4U,     /**< Alias for HET1 pin 12           */
104 	ADC1_HET1_14 = 5U,     /**< Alias for HET1 pin 14           */
105 	ADC1_GIOB0 = 6U,       /**< Alias for GIO port b pin 0      */
106 	ADC1_GIOB1 = 7U,       /**< Alias for GIO port b pin 1      */
107 
108 	ADC1_HET2_5 = 1U,      /**< Alias for HET2 pin 5            */
109 	ADC1_HET1_27 = 2U,     /**< Alias for HET1 pin 27           */
110 	ADC1_HET1_17 = 4U,     /**< Alias for HET1 pin 17           */
111 	ADC1_HET1_19 = 5U,     /**< Alias for HET1 pin 19           */
112 	ADC1_HET1_11 = 6U,     /**< Alias for HET1 pin 11           */
113 	ADC1_HET2_13 = 7U,     /**< Alias for HET2 pin 13           */
114 
115 	ADC1_EPWM_B = 1U,      /**< Alias for B Signal EPWM         */
116 	ADC1_EPWM_A1 = 3U,     /**< Alias for A1 Signal EPWM        */
117 	ADC1_HET2_1 = 5U,      /**< Alias for HET2 pin 1            */
118 	ADC1_EPWM_A2 = 6U,     /**< Alias for A2 Signal EPWM        */
119 	ADC1_EPWM_AB = 7U      /**< Alias for AB Signal EPWM        */
120 
121 };
122 
123 /** @enum adc2HwTriggerSource
124 *   @brief Alias names for hardware trigger source
125 *   This enumeration is used to provide alias names for the hardware trigger sources:
126 */
127 
128 enum adc2HwTriggerSource
129 {
130 	ADC2_EVENT = 0U,       /**< Alias for event pin             */
131 	ADC2_HET1_8 = 1U,      /**< Alias for HET1 pin 8            */
132 	ADC2_HET1_10 = 2U,     /**< Alias for HET1 pin 10           */
133 	ADC2_RTI_COMP0 = 3U,   /**< Alias for RTI compare 0 match   */
134 	ADC2_HET1_12 = 4U,     /**< Alias for HET1 pin 12           */
135 	ADC2_HET1_14 = 5U,     /**< Alias for HET1 pin 14           */
136 	ADC2_GIOB0 = 6U,       /**< Alias for GIO port b pin 0      */
137 	ADC2_GIOB1 = 7U,       /**< Alias for GIO port b pin 1      */
138 	ADC2_HET2_5 = 1U,      /**< Alias for HET2 pin 5            */
139 	ADC2_HET1_27 = 2U,     /**< Alias for HET1 pin 27           */
140 	ADC2_HET1_17 = 4U,     /**< Alias for HET1 pin 17           */
141 	ADC2_HET1_19 = 5U,     /**< Alias for HET1 pin 19           */
142 	ADC2_HET1_11 = 6U,     /**< Alias for HET1 pin 11           */
143 	ADC2_HET2_13 = 7U,     /**< Alias for HET2 pin 13           */
144 
145 	ADC2_EPWM_B = 1U,      /**< Alias for B Signal EPWM         */
146 	ADC2_EPWM_A1 = 3U,     /**< Alias for A1 Signal EPWM        */
147 	ADC2_HET2_1 = 5U,      /**< Alias for HET2 pin 1            */
148 	ADC2_EPWM_A2 = 6U,     /**< Alias for A2 Signal EPWM        */
149 	ADC2_EPWM_AB = 7U      /**< Alias for AB Signal EPWM        */
150 
151 };
152 
153 /* USER CODE BEGIN (1) */
154 /* USER CODE END */
155 
156 /** @struct adcData
157 *   @brief ADC Conversion data structure
158 *
159 *   This type is used to pass adc conversion data.
160 */
161 /** @typedef adcData_t
162 *   @brief ADC Data Type Definition
163 */
164 typedef struct adcData
165 {
166     uint32            id;     /**< Channel/Pin Id        */
167     uint16 value;  /**< Conversion data value */
168 } adcData_t;
169 
170 
171 /* USER CODE BEGIN (2) */
172 /* USER CODE END */
173 
174 /**
175  *  @defgroup ADC ADC
176  *  @brief Analog To Digital Converter Module.
177  *
178  *  The microcontroller includes two 12-bit ADC modules with selectable 10-bit or 12-bit resolution
179  *
180  *	Related Files
181  *   - reg_adc.h
182  *   - adc.h
183  *   - adc.c
184  *  @addtogroup ADC
185  *  @{
186  */
187 
188 /* ADC Interface Functions */
189 
190 void adcInit(void);
191 void adcStartConversion(adcBASE_t *adc, uint32 group);
192 void adcStopConversion(adcBASE_t *adc, uint32 group);
193 void adcResetFiFo(adcBASE_t *adc, uint32 group);
194 uint32  adcGetData(adcBASE_t *adc, uint32 group, adcData_t *data);
195 uint32  adcIsFifoFull(adcBASE_t *adc, uint32 group);
196 uint32  adcIsConversionComplete(adcBASE_t *adc, uint32 group);
197 void adcEnableNotification(adcBASE_t *adc, uint32 group);
198 void adcDisableNotification(adcBASE_t *adc, uint32 group);
199 void adcCalibration(adcBASE_t *adc);
200 uint32 adcMidPointCalibration(adcBASE_t *adc);
201 
202 /** @fn void adcNotification(adcBASE_t *adc, uint32 group)
203 *   @brief Group notification
204 *   @param[in] adc Pointer to ADC node:
205 *              - adcREG1: ADC1 module pointer
206 *              - adcREG2: ADC2 module pointer
207 *   @param[in] group number of ADC node:
208 *              - adcGROUP0: ADC event group
209 *              - adcGROUP1: ADC group 1
210 *              - adcGROUP2: ADC group 2
211 *
212 *   @note This function has to be provide by the user.
213 */
214 void adcNotification(adcBASE_t *adc, uint32 group);
215 
216 /**@}*/
217 /* USER CODE BEGIN (3) */
218 /* USER CODE END */
219 
220 
221 #endif
222