114 lines
3.0 KiB
C
114 lines
3.0 KiB
C
#ifndef __ADC_API_H__
|
||
#define __ADC_API_H__
|
||
|
||
/**
|
||
* \name AD channel define
|
||
* \{
|
||
*/
|
||
#define AD_CH_PA07 (0x0)
|
||
#define AD_CH_PA08 (0x1)
|
||
#define AD_CH_PA10 (0x2)
|
||
#define AD_CH_PB01 (0x3)
|
||
#define AD_CH_PB06 (0x4)
|
||
#define AD_CH_PB07 (0x5)
|
||
#define AD_CH_PC00 (0x6)
|
||
#define AD_CH_PC01 (0x7)
|
||
#define AD_CH_PC09 (0x8)
|
||
#define AD_CH_PC10 (0x9)
|
||
#define AD_CH_PH00 (0xa)
|
||
#define AD_CH_PH03 (0xb)
|
||
#define AD_CH_DM (0xc)
|
||
#define AD_CH_DP (0xd)
|
||
#define AD_CH_RTC (0xe)
|
||
#define AD_CH_PMU (0xf)
|
||
#define AD_CH_SYSPLL (0xf)
|
||
#define AD_CH_AUDIO (0xf)
|
||
#define AD_CH_WIFI (0xf)
|
||
#define AD_CH_CTMU (0xf)
|
||
|
||
|
||
#define ADC_PMU_CH_VBG (0x0<<16)
|
||
#define ADC_PMU_CH_VDC14 (0x1<<16)
|
||
#define ADC_PMU_CH_SYSVDD (0x2<<16)
|
||
#define ADC_PMU_CH_VTEMP (0x3<<16)
|
||
#define ADC_PMU_CH_PROGF (0x4<<16)
|
||
#define ADC_PMU_CH_VBAT (0x5<<16) //1/4 vbat
|
||
#define ADC_PMU_CH_LDO5V (0x6<<16) //1/4 LDO 5V
|
||
#define ADC_PMU_CH_WVDD (0x7<<16)
|
||
|
||
#define AD_CH_LDOREF AD_CH_PMU_VBG
|
||
|
||
#define AD_CH_PMU_VBG (AD_CH_PMU | ADC_PMU_CH_VBG)
|
||
#define AD_CH_VDC14 (AD_CH_PMU | ADC_PMU_CH_VDC14)
|
||
#define AD_CH_SYSVDD (AD_CH_PMU | ADC_PMU_CH_SYSVDD)
|
||
#define AD_CH_VTEMP (AD_CH_PMU | ADC_PMU_CH_VTEMP)
|
||
#define AD_CH_VBAT (AD_CH_PMU | ADC_PMU_CH_VBAT)
|
||
#define AD_CH_LDO5V (AD_CH_PMU | ADC_PMU_CH_LDO5V)
|
||
#define AD_CH_WVDD (AD_CH_PMU | ADC_PMU_CH_WVDD)
|
||
|
||
|
||
#define AD_AUDIO_VCM ((BIT(0))<<16)
|
||
#define AD_AUDIO_VOUTL ((BIT(1))<<16)
|
||
#define AD_AUDIO_VOUTR ((BIT(2))<<16)
|
||
#define AD_AUDIO_DACVDD ((BIT(3))<<16)
|
||
|
||
|
||
#define AD_CH_VCM (AD_CH_AUDIO | AD_AUDIO_VCM)
|
||
#define AD_CH_VOUTL (AD_CH_AUDIO | AD_AUDIO_VOUTL)
|
||
#define AD_CH_VOUTR (AD_CH_AUDIO | AD_AUDIO_VOUTR)
|
||
#define AD_CH_DACVDD (AD_CH_AUDIO | AD_AUDIO_DACVDD)
|
||
|
||
#define ADC_MAX_CH 10
|
||
/* \} name */
|
||
|
||
/**
|
||
* @brief adc_init, adc初始化
|
||
*/
|
||
void adc_init(void);
|
||
|
||
/**
|
||
* @brief adc_pmu_detect_en, 使能adc通道
|
||
* @param ch : ADC通道号, AD_CH_PA07
|
||
*/
|
||
void adc_pmu_detect_en(u32 ch);
|
||
|
||
/**
|
||
* @brief adc_vdc14_save, 存储vdc14的值
|
||
*/
|
||
void adc_vdc14_save(void);
|
||
|
||
/**
|
||
* @brief adc_vdc14_restore, 再次存储vdc14的值,避免被中途修改
|
||
*/
|
||
void adc_vdc14_restore(void);
|
||
|
||
/**
|
||
* @brief adc_get_value, 获取adc通道测得的数值(3.3*数值/1024)即得对应的电压值采用等待的方式采值,直到转换结束,才出来,即死等
|
||
* @param ch : ADC通道号, AD_CH_PA07
|
||
* @return 当前通道的AD值
|
||
*/
|
||
u32 adc_get_value(u32 ch);
|
||
|
||
/**
|
||
* @brief adc_add_sample_ch, 添加adc测试通道
|
||
* @param ch : ADC通道号
|
||
* @return 当前通道值
|
||
*/
|
||
u32 adc_add_sample_ch(u32 ch);
|
||
|
||
/**
|
||
* @brief adc_remove_sample_ch, 移除adc测试通道
|
||
* @param ch : ADC通道号
|
||
* @return 当前通道值
|
||
*/
|
||
u32 adc_remove_sample_ch(u32 ch);
|
||
|
||
/**
|
||
* @brief adc_get_voltage, 换算电压的公式函数, 获取adc通道电压值,如果测得与实际不符,则需留意芯片是否trim过,trim值是否正确。
|
||
* @param ch : ADC通道号
|
||
* @return 当前通道的电压值,单位mv
|
||
*/
|
||
u32 adc_get_voltage(u32 ch);
|
||
|
||
#endif
|