STM8L探索套件学习笔记-测量VDD(七)
今天我们测量下VDD参考电压,是通过测量VREF电压换算出来的,换算的方法有两种:
第一种比较准确,VREF是出厂做的校准,存储在FLASH当中。计算公式为:VDD=(VREF出厂值/VREF实际测量值)×VDD出厂值
第二种方法是假定理论上VREF=1.224V,计算公式为:
VDD=(1.224/VREF实际测量值)×4096
一般我们采用第二种方法测量VDD,测量步骤为下:
1、使能ADC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
2、出现初始化ADC1
ADC_DeInit(ADC1);
3、设置ADC通道,精度,转换时间
ADC_Init(ADC1, ADC_ConversionMode_Single,ADC_Resolution_12Bit, ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
4、使能
ADC_VrefintCmd(ENABLE);
ADC_Cmd(ADC1, ENABLE);
ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint, ENABLE);
5、测量8次取平均值
u16 VREF_Value(void)//测量内部参考电压VREF值,测量8次平均
{
uint8_t i;
uint16_t res=0;
for(i=8; i>0; i--)
{
/* start ADC convertion by software */
ADC_SoftwareStartConv(ADC1);
/* wait until end-of-covertion */
while( ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0 );
/* read ADC convertion result */
res += ADC_GetConversionValue(ADC1);
}
return (res>>3);
}
评论