2013-05-24 10:04:51 +08:00
|
|
|
/** @file adc.h
|
|
|
|
* @brief ADC Driver Header File
|
2013-05-29 16:42:26 +08:00
|
|
|
* @date 29.May.2013
|
|
|
|
* @version 03.05.02
|
2013-05-24 10:04:51 +08:00
|
|
|
*
|
|
|
|
* This file contains:
|
|
|
|
* - Definitions
|
|
|
|
* - Types
|
|
|
|
* - Interface Prototypes
|
|
|
|
* .
|
|
|
|
* which are relevant for the ADC driver.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* (c) Texas Instruments 2009-2013, All rights reserved. */
|
|
|
|
|
|
|
|
#ifndef __ADC_H__
|
|
|
|
#define __ADC_H__
|
|
|
|
|
|
|
|
#include "reg_adc.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* USER CODE BEGIN (0) */
|
|
|
|
/* USER CODE END */
|
|
|
|
|
|
|
|
/* ADC General Definitions */
|
|
|
|
|
|
|
|
/** @def adcGROUP0
|
|
|
|
* @brief Alias name for ADC event group
|
|
|
|
*
|
|
|
|
* @note This value should be used for API argument @a group
|
|
|
|
*/
|
|
|
|
#define adcGROUP0 0U
|
|
|
|
|
|
|
|
/** @def adcGROUP1
|
|
|
|
* @brief Alias name for ADC group 1
|
|
|
|
*
|
|
|
|
* @note This value should be used for API argument @a group
|
|
|
|
*/
|
|
|
|
#define adcGROUP1 1U
|
|
|
|
|
|
|
|
/** @def adcGROUP2
|
|
|
|
* @brief Alias name for ADC group 2
|
|
|
|
*
|
|
|
|
* @note This value should be used for API argument @a group
|
|
|
|
*/
|
|
|
|
#define adcGROUP2 2U
|
|
|
|
|
|
|
|
/** @enum adcResolution
|
|
|
|
* @brief Alias names for data resolution
|
|
|
|
* This enumeration is used to provide alias names for the data resolution:
|
|
|
|
* - 12 bit resolution
|
|
|
|
* - 10 bit resolution
|
|
|
|
* - 8 bit resolution
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum adcResolution
|
|
|
|
{
|
|
|
|
ADC_12_BIT = 0x00000000U, /**< Alias for 12 bit data resolution */
|
|
|
|
ADC_10_BIT = 0x00000100U, /**< Alias for 10 bit data resolution */
|
|
|
|
ADC_8_BIT = 0x00000200U /**< Alias for 8 bit data resolution */
|
|
|
|
};
|
|
|
|
|
|
|
|
/** @enum adcFiFoStatus
|
|
|
|
* @brief Alias names for FiFo status
|
|
|
|
* This enumeration is used to provide alias names for the current FiFo states:
|
|
|
|
* - FiFo is not full
|
|
|
|
* - FiFo is full
|
|
|
|
* - FiFo overflow occurred
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum adcFiFoStatus
|
|
|
|
{
|
|
|
|
ADC_FIFO_IS_NOT_FULL = 0U, /**< Alias for FiFo is not full */
|
|
|
|
ADC_FIFO_IS_FULL = 1U, /**< Alias for FiFo is full */
|
|
|
|
ADC_FIFO_OVERFLOW = 3U /**< Alias for FiFo overflow occurred */
|
|
|
|
};
|
|
|
|
|
|
|
|
/** @enum adcConversionStatus
|
|
|
|
* @brief Alias names for conversion status
|
|
|
|
* This enumeration is used to provide alias names for the current conversion states:
|
|
|
|
* - Conversion is not finished
|
|
|
|
* - Conversion is finished
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum adcConversionStatus
|
|
|
|
{
|
|
|
|
ADC_CONVERSION_IS_NOT_FINISHED = 0U, /**< Alias for current conversion is not finished */
|
|
|
|
ADC_CONVERSION_IS_FINISHED = 8U /**< Alias for current conversion is finished */
|
|
|
|
};
|
|
|
|
|
|
|
|
/** @enum adc1HwTriggerSource
|
|
|
|
* @brief Alias names for hardware trigger source
|
|
|
|
* This enumeration is used to provide alias names for the hardware trigger sources:
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum adc1HwTriggerSource
|
|
|
|
{
|
|
|
|
ADC1_EVENT = 0U, /**< Alias for event pin */
|
|
|
|
ADC1_HET1_8 = 1U, /**< Alias for HET1 pin 8 */
|
|
|
|
ADC1_HET1_10 = 2U, /**< Alias for HET1 pin 10 */
|
|
|
|
ADC1_RTI_COMP0 = 3U, /**< Alias for RTI compare 0 match */
|
|
|
|
ADC1_HET1_12 = 4U, /**< Alias for HET1 pin 12 */
|
|
|
|
ADC1_HET1_14 = 5U, /**< Alias for HET1 pin 14 */
|
|
|
|
ADC1_GIOB0 = 6U, /**< Alias for GIO port b pin 0 */
|
|
|
|
ADC1_GIOB1 = 7U, /**< Alias for GIO port b pin 1 */
|
|
|
|
|
|
|
|
ADC1_HET2_5 = 1U, /**< Alias for HET2 pin 5 */
|
|
|
|
ADC1_HET1_27 = 2U, /**< Alias for HET1 pin 27 */
|
|
|
|
ADC1_HET1_17 = 4U, /**< Alias for HET1 pin 17 */
|
|
|
|
ADC1_HET1_19 = 5U, /**< Alias for HET1 pin 19 */
|
|
|
|
ADC1_HET1_11 = 6U, /**< Alias for HET1 pin 11 */
|
|
|
|
ADC1_HET2_13 = 7U, /**< Alias for HET2 pin 13 */
|
|
|
|
|
|
|
|
ADC1_EPWM_B = 1U, /**< Alias for B Signal EPWM */
|
|
|
|
ADC1_EPWM_A1 = 3U, /**< Alias for A1 Signal EPWM */
|
|
|
|
ADC1_HET2_1 = 5U, /**< Alias for HET2 pin 1 */
|
|
|
|
ADC1_EPWM_A2 = 6U, /**< Alias for A2 Signal EPWM */
|
|
|
|
ADC1_EPWM_AB = 7U /**< Alias for AB Signal EPWM */
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/** @enum adc2HwTriggerSource
|
|
|
|
* @brief Alias names for hardware trigger source
|
|
|
|
* This enumeration is used to provide alias names for the hardware trigger sources:
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum adc2HwTriggerSource
|
|
|
|
{
|
|
|
|
ADC2_EVENT = 0U, /**< Alias for event pin */
|
|
|
|
ADC2_HET1_8 = 1U, /**< Alias for HET1 pin 8 */
|
|
|
|
ADC2_HET1_10 = 2U, /**< Alias for HET1 pin 10 */
|
|
|
|
ADC2_RTI_COMP0 = 3U, /**< Alias for RTI compare 0 match */
|
|
|
|
ADC2_HET1_12 = 4U, /**< Alias for HET1 pin 12 */
|
|
|
|
ADC2_HET1_14 = 5U, /**< Alias for HET1 pin 14 */
|
|
|
|
ADC2_GIOB0 = 6U, /**< Alias for GIO port b pin 0 */
|
|
|
|
ADC2_GIOB1 = 7U, /**< Alias for GIO port b pin 1 */
|
|
|
|
ADC2_HET2_5 = 1U, /**< Alias for HET2 pin 5 */
|
|
|
|
ADC2_HET1_27 = 2U, /**< Alias for HET1 pin 27 */
|
|
|
|
ADC2_HET1_17 = 4U, /**< Alias for HET1 pin 17 */
|
|
|
|
ADC2_HET1_19 = 5U, /**< Alias for HET1 pin 19 */
|
|
|
|
ADC2_HET1_11 = 6U, /**< Alias for HET1 pin 11 */
|
|
|
|
ADC2_HET2_13 = 7U, /**< Alias for HET2 pin 13 */
|
|
|
|
|
|
|
|
ADC2_EPWM_B = 1U, /**< Alias for B Signal EPWM */
|
|
|
|
ADC2_EPWM_A1 = 3U, /**< Alias for A1 Signal EPWM */
|
|
|
|
ADC2_HET2_1 = 5U, /**< Alias for HET2 pin 1 */
|
|
|
|
ADC2_EPWM_A2 = 6U, /**< Alias for A2 Signal EPWM */
|
|
|
|
ADC2_EPWM_AB = 7U /**< Alias for AB Signal EPWM */
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/* USER CODE BEGIN (1) */
|
|
|
|
/* USER CODE END */
|
|
|
|
|
|
|
|
/** @struct adcData
|
|
|
|
* @brief ADC Conversion data structure
|
|
|
|
*
|
|
|
|
* This type is used to pass adc conversion data.
|
|
|
|
*/
|
|
|
|
/** @typedef adcData_t
|
|
|
|
* @brief ADC Data Type Definition
|
|
|
|
*/
|
|
|
|
typedef struct adcData
|
|
|
|
{
|
|
|
|
uint32 id; /**< Channel/Pin Id */
|
|
|
|
uint16 value; /**< Conversion data value */
|
|
|
|
} adcData_t;
|
|
|
|
|
|
|
|
|
|
|
|
/* USER CODE BEGIN (2) */
|
|
|
|
/* USER CODE END */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup ADC ADC
|
|
|
|
* @brief Analog To Digital Converter Module.
|
|
|
|
*
|
|
|
|
* The microcontroller includes two 12-bit ADC modules with selectable 10-bit or 12-bit resolution
|
|
|
|
*
|
|
|
|
* Related Files
|
|
|
|
* - reg_adc.h
|
|
|
|
* - adc.h
|
|
|
|
* - adc.c
|
|
|
|
* @addtogroup ADC
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* ADC Interface Functions */
|
|
|
|
|
|
|
|
void adcInit(void);
|
|
|
|
void adcStartConversion(adcBASE_t *adc, uint32 group);
|
|
|
|
void adcStopConversion(adcBASE_t *adc, uint32 group);
|
|
|
|
void adcResetFiFo(adcBASE_t *adc, uint32 group);
|
|
|
|
uint32 adcGetData(adcBASE_t *adc, uint32 group, adcData_t *data);
|
|
|
|
uint32 adcIsFifoFull(adcBASE_t *adc, uint32 group);
|
|
|
|
uint32 adcIsConversionComplete(adcBASE_t *adc, uint32 group);
|
|
|
|
void adcEnableNotification(adcBASE_t *adc, uint32 group);
|
|
|
|
void adcDisableNotification(adcBASE_t *adc, uint32 group);
|
|
|
|
void adcCalibration(adcBASE_t *adc);
|
|
|
|
uint32 adcMidPointCalibration(adcBASE_t *adc);
|
|
|
|
|
|
|
|
/** @fn void adcNotification(adcBASE_t *adc, uint32 group)
|
|
|
|
* @brief Group notification
|
|
|
|
* @param[in] adc Pointer to ADC node:
|
|
|
|
* - adcREG1: ADC1 module pointer
|
|
|
|
* - adcREG2: ADC2 module pointer
|
|
|
|
* @param[in] group number of ADC node:
|
|
|
|
* - adcGROUP0: ADC event group
|
|
|
|
* - adcGROUP1: ADC group 1
|
|
|
|
* - adcGROUP2: ADC group 2
|
|
|
|
*
|
|
|
|
* @note This function has to be provide by the user.
|
|
|
|
*/
|
|
|
|
void adcNotification(adcBASE_t *adc, uint32 group);
|
|
|
|
|
|
|
|
/**@}*/
|
|
|
|
/* USER CODE BEGIN (3) */
|
|
|
|
/* USER CODE END */
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|