Files
stc32g128k/Drivers/adc.h

62 lines
1.9 KiB
C
Raw Permalink Normal View History

#ifndef __ADC_H__
#define __ADC_H__
#include "../App/config.h"
/* ====== ADC 通道与硬件引脚定义 ====== */
#define ADC_CHANNEL_KEY_DOWN 11 // KEY_DOWN (P0.3) 对应 STC32G 的 ADC 通道 11
#define ADC_CHANNEL_BATTERY 3 // 电池检测 (P1.3) 对应 STC32G 的 ADC 通道 3
#define ADC_CHANNEL_CHRG_DET 2 // 充电检测 (P1.2) 对应 STC32G 的 ADC 通道 2
/* ====== 判定阈值定义 (基于 12 位 ADC, 0~4095) ====== */
// KEY_DOWN 2.2V 常态 (ADC~2700), 3.7V 按下 (ADC 饱和 4095)
#define KEY_DOWN_ADC_THRESHOLD 3400 // ADC 采样值超过 3400 判定为按键按下
/**
* @brief STC32G ADC
* @details ADC P0.3 P1.3
*/
void ADC_Init(void);
/**
* @brief ADC 12
* @param channel ADC (0~15)
* @return u16 12 ADC (0 ~ 4095)
*/
u16 ADC_ReadRaw(u8 channel);
/**
* @brief ADC
* @param channel ADC (0~15)
* @return u16 12 ADC
*/
u16 ADC_ReadFiltered(u8 channel);
/**
* @brief KEY_DOWN (P0.3) (ADC )
* @return bit 1: ( ~3.7V), 0: / ( ~2.0V)
*/
bit ADC_IsKeyDown(void);
/**
* @brief P1.3 ( mV)
* @return u16 mV ( 3850 3.85V)
*/
u16 ADC_GetBatteryVoltage_mV(void);
/**
* @brief (0% ~ 100%)
* @return u8 (0 ~ 100)
*/
u8 ADC_GetBatteryPercent(void);
/**
* @brief USB
* @return bit 0=, 1=
* @note TP4054 CHRG
* MCU
*/
bit Is_Charging(void);
#endif // __ADC_H__