/* ****************************************************************************** * * @file adc.h * @brief adc module * @ic sy8835 * * @version 1.0 * @date 2024/11/01 09:59:40 * @author Alex Xu * * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. * All Rights Reserved * * History: * Revision Date Author Desc * 1.0.0 2024/11/01 Alex build this file ****************************************************************************** */ #ifndef __ADC_H__ #define __ADC_H__ /*_____ I N C L U D E S ____________________________________________________*/ #include "define.h" #if ADC_ENABLE /******************************************************************************\ Macro definitions \******************************************************************************/ #define VREF 1000 /******************************************************************************\ Variables definitions \******************************************************************************/ extern uint8_t ADC_Chn_Num; extern idata uint16_t Vbat_Adc; extern idata int16 g_Vpmu_Adc; extern idata int16 g_Vntc_Adc; #if 0 extern idata uint16_t g_Vbjt_Adc; extern idata uint16_t g_Vp13_Adc; extern idata uint16_t g_Vref_Adc; #endif extern uint8_t g_PMU_ADC_Chn; extern idata uint16_t g_pmu_Adc_Ivol; extern idata uint16_t g_pmu_Adc_Vin; extern idata uint16_t g_pmu_Adc_Vpmid; extern idata uint16_t g_pmu_Adc_Vor; extern idata uint16_t g_pmu_Adc_Vol; extern idata uint16_t g_pmu_Adc_Vdd; extern idata uint16_t g_pmu_Adc_Ivor; typedef enum { ADC_PMU_CH0 = 0x01, ADC_NTC_CH1, ADC_BJT_CH2, ADC_P13_CH3, ADC_VREF_CH4, }ADC_CHANNELS_E; typedef enum { pmu_ADC_IVOL = 0x00, pmu_ADC_VBAT, //vbat的2分压 pmu_ADC_VIN, //vin的8分压 pmu_ADC_VPMID, //PMID的4分压 pmu_ADC_VOR, //vor的4分压 pmu_ADC_VOL, //vol的4分压 pmu_ADC_VDD, //vdd的2分压 pmu_ADC_IVOR, pmu_ADC_MAX, }PMU_ADC_CHANNELS_E; /* ADC 控制寄存器0 -- ADC_Ctrl0 */ #define ADC_EN_Pos (7U) #define ADC_EN_Pos_Msk (0x1UL << ADC_EN_Pos) #define ADC_EN ADC_EN_Pos_Msk #define ADC_AVG_NUM_Pos (4U) #define ADC_AVG_NUM_4_Pos_Msk (0x0UL << ADC_AVG_NUM_Pos) #define ADC_AVG_NUM_4 ADC_AVG_NUM_4_Pos_Msk #define ADC_AVG_NUM_8_Pos_Msk (0x1UL << ADC_AVG_NUM_Pos) #define ADC_AVG_NUM_8 ADC_AVG_NUM_8_Pos_Msk #define ADC_AVG_NUM_16_Pos_Msk (0x2UL << ADC_AVG_NUM_Pos) #define ADC_AVG_NUM_16 ADC_AVG_NUM_16_Pos_Msk #define ADC_AVG_NUM_32_Pos_Msk (0x3UL << ADC_AVG_NUM_Pos) #define ADC_AVG_NUM_32 ADC_AVG_NUM_32_Pos_Msk #define ADC_AVG_NUM_64_Pos_Msk (0x4UL << ADC_AVG_NUM_Pos) #define ADC_AVG_NUM_64 ADC_AVG_NUM_64_Pos_Msk #define ADC_SINGLE_EN_Pos (3U) #define ADC_SINGLE_EN_Pos_Msk (0x1UL << ADC_SINGLE_EN_Pos) #define ADC_SINGLE_EN ADC_SINGLE_EN_Pos_Msk #define ADC_CLK_DIV_Pos (2U) #define ADC_CLK_DIV_16_Pos_Msk (0x0UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_16 ADC_CLK_DIV_16_Pos_Msk #define ADC_CLK_DIV_24_Pos_Msk (0x1UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_24 ADC_CLK_DIV_24_Pos_Msk #define ADC_CLK_DIV_32_Pos_Msk (0x2UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_32 ADC_CLK_DIV_32_Pos_Msk #define ADC_CLK_DIV_48_Pos_Msk (0x3UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_48 ADC_CLK_DIV_48_Pos_Msk #define ADC_CLK_DIV_64_Pos_Msk (0x4UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_64 ADC_CLK_DIV_64_Pos_Msk #define ADC_CLK_DIV_96_Pos_Msk (0x5UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_96 ADC_CLK_DIV_96_Pos_Msk #define ADC_CLK_DIV_128_Pos_Msk (0x6UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_128 ADC_CLK_DIV_128_Pos_Msk #define ADC_CLK_DIV_160_Pos_Msk (0x7UL << ADC_CLK_DIV_Pos) #define ADC_CLK_DIV_160 ADC_CLK_DIV_160_Pos_Msk /* ADC控制寄存器1 -- ADC_Ctrl1 */ #define ADC_START_Pos (7U) #define ADC_START_Pos_Msk (0x1UL << ADC_START_Pos) #define ADC_START ADC_START_Pos_Msk #define ADC_CHN_4_Pos (4U) #define ADC_CHN_4_Pos_Msk (0x1UL << ADC_CHN_4_Pos) #define ADC_CHN_4 ADC_CHN_4_Pos_Msk #define ADC_CHN_3_Pos (3U) #define ADC_CHN_3_Pos_Msk (0x1UL << ADC_CHN_3_Pos) #define ADC_CHN_3 ADC_CHN_3_Pos_Msk #define ADC_CHN_2_Pos (2U) #define ADC_CHN_2_Pos_Msk (0x1UL << ADC_CHN_2_Pos) #define ADC_CHN_2 ADC_CHN_2_Pos_Msk #define ADC_CHN_1_Pos (1U) #define ADC_CHN_1_Pos_Msk (0x1UL << ADC_CHN_1_Pos) #define ADC_CHN_1 ADC_CHN_1_Pos_Msk #define ADC_CHN_0_Pos (0U) #define ADC_CHN_0_Pos_Msk (0x1UL << ADC_CHN_0_Pos) #define ADC_CHN_0 ADC_CHN_0_Pos_Msk /******************************************************************************\ Functions definitions \******************************************************************************/ extern void Adc_Init(void); extern void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn); extern void ADC_NTC_Data(void); #endif #endif