#ifndef _SR_BSP_ADC_H
#define _SR_BSP_ADC_H

// 国民头文件
#include <n32l40x_adc.h>

#include "sr_config.h"

#define BSP_ADC_CHN0    ADC_CH_0
#define BSP_ADC_CHN1    ADC_CH_1_PA0
#define BSP_ADC_CHN2    ADC_CH_2_PA1
#define BSP_ADC_CHN3    ADC_CH_3_PA2
#define BSP_ADC_CHN4    ADC_CH_4_PA3
#define BSP_ADC_CHN5    ADC_CH_5_PA4
#define BSP_ADC_CHN6    ADC_CH_6_PA5
#define BSP_ADC_CHN7    ADC_CH_7_PA6
#define BSP_ADC_CHN8    ADC_CH_8_PA7
#define BSP_ADC_CHN9    ADC_CH_9_PB0
#define BSP_ADC_CHN10   ADC_CH_10_PB1
#define BSP_ADC_CHN11   ADC_CH_11_PC0
#define BSP_ADC_CHN12   ADC_CH_12_PC1
#define BSP_ADC_CHN13   ADC_CH_13_PC2
#define BSP_ADC_CHN14   ADC_CH_14_PC3
#define BSP_ADC_CHN15   ADC_CH_15_PC4 
#define BSP_ADC_CHN16   ADC_CH_16_PC5
#define BSP_ADC_CHN17   ADC_CH_17 
#define BSP_ADC_CHN18   ADC_CH_18
#define BSP_ADC_CHN19   SR_INVALID

//扩展特殊通道
#define SR_ADC_CH_VREFINT      ADC_CH_VREFINT      
#define SR_ADC_CH_TEMP_SENSOR  ADC_CH_TEMP_SENSOR
#define SR_ADC_CH_VREFBUF      ADC_CH_VREFBUF   


#define BSP_ANALOG_VOLT_RANGE     1200    //ADC模拟电压的量程  1.2V

//引脚配置



/**
 * @brief ADC接口索引
 *        和原厂索引保持一致
 */
typedef enum
{
  SR_ADC1 = 0,     /*!< ADC1 */
  
} SR_ADC_ID_E;





/**
 * @brief ADC BSP信息结构体
 *        用于存储第三方平台ADC信息
 */
typedef struct BSP_ADC_INFO
{
  const char *name; /*!< ADC名字 */

  void *trdHandle; /*!< 第三方平台使用的句柄指针*/

#if  0
  union
  {
    uint8_t extMaxRange; /*!< 第三方平台参数：最大输入检测电压 ,取值为BSP_ADC_RANGE_E*/
    uint8_t extResDiv;   /*!< 第三方平台参数：输入电压分压比例,取值为BSP_ADC_RESDIV_E */
  };
#endif
  ADC_Module *instance;  /*!< 国名平台HAL库变量，对应ADC寄存器地址*/
  int8_t srId; /*!< 朝阳使用的ID*/

} BSP_ADC_INFO_T;


/*BSP层要适配的接口*/
SR_DEVICE_T *BspAdcOpen(SR_ADC_ID_E adcId);
int BspAdcClose(SR_DEVICE_T *dev);
int BspAdcChnEnable(SR_DEVICE_T *dev, uint32_t chn,uint8_t isEnable);
int BspAdcRead(SR_DEVICE_T *dev, uint8_t chn, int *valRaw,int *valCvt);


#endif
