复旦微国产化开发板FM33G0系列之ADC采集

四、ADC采集
复旦微FMG033系列的ADC是11位的。
我直接上最主要的采集ADC代码吧:

//ADC外部输入通道测试
uint32 Test_ADC_ExVolt(uint8_t Ch_selec)
{
	uint16 ADCData[16];
	uint08 i;
	volatile uint32 fVlotage = 0;
	uint32 fTempADC = 0;

	ADC_IO_Init();							            //IO口配置为ADC输入		
	ADC_Init_TsetExVolt(Ch_selec);					//配置ADC
	
	for(i=0; i<16; i++)
	{
		ADCData[i] = 0;
	}
	ADC_Struct.Bufu16 = ADCData;//数据缓冲区地址
	ADC_Struct.SampleNeed = 15;	//需要采样数据的个数,需要8个有效数据,第一个采样结果丢弃
	ADC_Struct.SampleCount = 0;	//清零采样计数
	
	ANAC_ADCCON_ADC_EN_Setable(ENABLE);		//ADC启动
	while(ADC_Struct.SampleCount != ADC_Struct.SampleNeed);//等待转换完成
		
	//计算8次采样数据的平均值
	fTempADC = 0;
	for(i=3; i<15; i++)	
	{
		fTempADC += ADCData[i];
	}
	
	fTempADC = fTempADC/12.0;
	
	fVlotage = ANAC_ADC_VoltageCalc(fTempADC,12);//AD值转换为电压,电源电压为5V      
	return fVlotage;
	
}

uint32_t ANAC_ADC_VoltageCalc(uint32_t fADCData,uint8_t Vdd)函数是例程中的函数,没有改过。

int main(void)
{
   uint32 value_adc=0;
   float adc_v;
   value_adc = Test_ADC_ExVolt(CH_IN1);
   adc_v;=value_adc  /1000 ;       
}

得到的adc_v是使用ADC码值对应的电压值这样的分段函数计算出来的引脚值。是引脚上的电压,且单位是伏v。分段函数就是此函数:uint32_t ANAC_ADC_VoltageCalc(uint32_t fADCData,uint8_t Vdd)里面进行计算的,出来的电压单位是mv。

当然也可以不用分段函数来得到引脚电压值。直接在函数uint32 Test_ADC_ExVolt(uint8_t Ch_selec)中返回 fTempADC这个值。
那主函数变为:

int main(void)
{
   uint32 value_adc=0;
   float adc_v;
   value_adc = Test_ADC_ExVolt(CH_IN1);
   adc_v =value_adc * (ADC_VOLTAGE_REF / 2047)   

}

adc_v 就是使用参考电压和adc采集的电压计算出来的引脚电压值,ADC_VOLTAGE_REF 是参考电压,2047是因为ADC分辨率是11bit,所以参考电压能对应的最大的数,就是2的11次方-1。

在此附上一段数字转字符的函数,也许在显示中有所用到。

/*
	@ 数字转字符串
	@ value:输入数字
	@ str:输出字符串
	@return:字符串长度
	@ by fll
*/
uint8_t Int2String(uint32_t value,uint8_t *str)
{
	uint32_t i=0;
	uint32_t j=0;
	uint32_t temp=0;
	
	if(value==0)
	{
		str[i]=0+'0';
	}
	else
	{
		while(value)
		{
			str[i++]=value%10+'0';
			value/=10;
		}
	
		for( ;j<i/2;j++)
		{
			i=i-1+j;
			temp=str[i];
			str[i]=str[j];
			str[j]=temp;
		}
	}
	return (i+1);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值