/** * Copyright 2016, yichip Semiconductor(shenzhen office) * All Rights Reserved. * * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor; * the contents of this file may not be disclosed to third parties, copied * or duplicated in any form, in whole or in part, without the prior * written permission of Yichip Semiconductor. */ /** *@file adc.h *@brief adc support for application. */ #ifndef _DRV_ADC_H_ #define _DRV_ADC_H_ #include #include "ycdef.h" #include "yc_otp.h" #include //adc参考电压 #define GPIO_LOW_VOLTAGE_REF 500 //GPIO 的参考低电压为0.5V #define GPIO_HIGH_VOLTAGE_REF 1000 //GPIO 的参考高电压为 1 V #define HVIN_LOW_VOLTAGE_REF 3000 //hvin 的参考低电压为0.5V #define HVIN_HIGH_VOLTAGE_REF 5000 //hvin 的参考高电压为 1 V #define VINLPM_LOW_VOLTAGE_REF 3000 //vinlpm的参考低电压3 V #define VINLPM_HIGH_VOLTAGE_REF 3300 //vinlpm的参考高电压 3.3V //adc参考值 //#define GPIO_LOW_REF_REG mem_0_5_adc_io_data //#define GPIO_HIGH_REF_REG mem_1v_adc_io_data //#define HVIN_LOW_REF_REG mem_3v_adc_hvin_data //#define HVIN_HIGH_REF_REG mem_5v_adc_hvin_data //#define VINLPM_LOW_REF_REG mem_3v_adc_vinlpm_data //#define VINLPM_HIGH_REF_REG mem_3v3_adc_vinlpm_data //#define OTP_ADC_FLAG_REG mem_otp_adc_flag //adc参考值存放位置 #define OTP_ADC_IO_0_5V_ADDR 0x1fe2 #define OTP_ADC_HVIN_3V_ADDR 0x1fe4 #define OTP_ADC_VINLPM_2V_ADDR 0x1fe6 #define OTP_ADC_IO_1V_ADDR 0x1fe8 #define OTP_ADC_HVIN_5V_ADDR 0x1fea #define OTP_ADC_VINLPM_3V3_ADDR 0x1fec #define OTP_ADC_FLAG_ADDR 0x1fee #define OTP_ADC_FLAG 0xaa55 #define WAIT_TIME 5000 /** *@brief ADC gpio. */ /** *@brief ADC channel. */ typedef enum { ADC_CHANNEL_0 = 0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7, }ADC_ChxTypeDef; #define IS_ADC_CHANNEL(CHANNEL_NUM) (((CHANNEL_NUM) == ADC_CHANNEL_0) || \ ((CHANNEL_NUM) == ADC_CHANNEL_1) || \ ((CHANNEL_NUM) == ADC_CHANNEL_2) || \ ((CHANNEL_NUM) == ADC_CHANNEL_3) || \ ((CHANNEL_NUM) == ADC_CHANNEL_4) || \ ((CHANNEL_NUM) == ADC_CHANNEL_5) || \ ((CHANNEL_NUM) == ADC_CHANNEL_6)||\ ((CHANNEL_NUM) == ADC_CHANNEL_7)) typedef enum { ADC_GPIO = 0, ADC_DIFF, ADC_HVIN, ADC_VINLPM, }ADC_ModeTypeDef; #define IS_ADC_MODE(MODE) ((MODE == ADC_GPIO)||\ (MODE == ADC_DIFF)||\ (MODE == ADC_HVIN)||\ (MODE == ADC_VINLPM)) /* ADC Struct Define*/ typedef struct _ADC_InitTypeDef { ADC_ChxTypeDef ADC_Channel; /* ADC Channel select */ ADC_ModeTypeDef ADC_Mode; } ADC_InitTypeDef; /** *@brief ADC initialization. *@param ADC_InitStruct : piont to ADC_InitTypeDef struct *@return None. */ void ADC_Init(ADC_InitTypeDef *ADC_InitStruct); /** * @brief Get ADC result * * @param ADC_Channel : In gpio mode ,the para can be every value of ADC_ChxTypeDef, * in gpio diff mode, the param can be ADC_CHANNEL_0 to ADC_CHANNEL_3,and in other mode, * the param can be 0. * @retval 0:fail other:adc value */ uint16_t ADC_GetResult(ADC_ChxTypeDef ADC_Channel); /** * @brief Get voltage * @param ADC_Channel: ADC_Channel Select channel, * @retval -1:fail; other:adc voltage (mV); */ int ADC_GetVoltage(ADC_ChxTypeDef ADC_Channel); #endif