187 lines
5.1 KiB
C
187 lines
5.1 KiB
C
/*
|
|
******************************************************************************
|
|
*
|
|
* @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 uint16_t Vbat_Adc;
|
|
|
|
extern int16 g_Vpmu_Adc;
|
|
|
|
extern int16 g_Vntc_Adc;
|
|
|
|
extern uint8_t g_PMU_ADC_Chn;
|
|
|
|
extern uint16_t g_pmu_Adc_Ivol;
|
|
|
|
extern uint16_t g_pmu_Adc_Vin;
|
|
|
|
extern uint16_t g_pmu_Adc_Vpmid;
|
|
|
|
extern uint16_t g_pmu_Adc_Vor;
|
|
|
|
extern uint16_t g_pmu_Adc_Vol;
|
|
|
|
extern uint16_t g_pmu_Adc_Vdd;
|
|
|
|
extern 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
|
|
|