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