CH579采集电压时,电压输入增加输出的采样值不变,电压减小值发生变化(电压变化范围0~2V)?
/**********************************?(C)?COPYRIGHT?*******************************
*?File?Name??????????:?Main.c
*?Author?????????????:?WCH
*?Version????????????:?V1.0
*?Date???????????????:?2018/12/15
*?Description?		?:?adc采样示例,包括温度检测、单通道检测、差分通道检测、TouchKey检测、中断方式采样。
*******************************************************************************/

#include?"CH57x_common.h"


UINT16?abcBuff[40];
volatile?UINT8??adclen;

void?DebugInit(void)		
{
????GPIOA_SetBits(GPIO_Pin_9);
????GPIOA_ModeCfg(GPIO_Pin_8,?GPIO_ModeIN_PU);
????GPIOA_ModeCfg(GPIO_Pin_9,?GPIO_ModeOut_PP_5mA);
????UART1_DefInit();
}

int?main()
{
????UINT8?i;
????signed?short??RoughCalib_Value=0;		//?ADC粗调偏差值
????
/*?配置串口调试?*/???
????DebugInit();
????PRINT(?"Start?@ChipID=%02X\n",?R8_CHIP_ID?);
	/*?单通道采样:选择adc通道9做采样,对应?PA0引脚,?带数据校准功能?*/???
????PRINT(?"\n2.Single?channel?sampling...\n");
????GPIOA_ModeCfg(GPIO_Pin_0,?GPIO_ModeIN_Floating);
????ADC_ExtSingleChSampInit(?SampleFreq_3_2,?ADC_PGA_1_2);
????
/*?
????注意:数据校准包括?粗调和细调:
????ADC_DataCalib_Rough()?是粗调函数,调用前需保证PA5引脚配置浮空输入模式,外部没有电压信号,在ADC初始化之后调用,一般调用一次,除非更改了ADC模式(增益改变)
????ADC_DataCalib_Fine()?是细调函数,对于粗调过的数据进行拟合算法运算,得到更精确数据
*/????
????GPIOA_ModeCfg(GPIO_Pin_5,?GPIO_ModeIN_Floating);
????RoughCalib_Value?=?ADC_DataCalib_Rough();??//?用于计算ADC内部偏差,记录到全局变量?RoughCalib_Value中??
????PRINT("=%d?\n",?RoughCalib_Value);?
	
	
????while(1)
	{????
	????int?sum=0;
		ADC_ChannelCfg(?9?);????????
		for(i=0;?i<20;?i++)
		{
			abcBuff[i]?=?ADC_ExcutSingleConver()?+?RoughCalib_Value;??????//?连续采样20次
			ADC_DataCalib_Fine(?&abcBuff[i],?ADC_PGA_1_2);
			
			sum?+=?abcBuff[i];
		}
		printf("ADC值:%d\r\n",sum/20);
	}		
}


根据不同的增益可以采集不同的电压值,默认使用0db增益,那么超过2v采样值就不会改变。emobile_2022-06-09_16-48-36.png


增益选择没有问题,是测量0~3.3V的



只有登录才能回复,可以选择微信账号登录