123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /**
- * 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 <stdio.h>
- #include "ycdef.h"
- #include "yc_otp.h"
- #include <stdint.h>
- //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
|