adc.h 6.8 KB

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