STM8L探索套件學(xué)習(xí)筆記-測(cè)量VDD(七)
今天我們測(cè)量下VDD參考電壓,是通過(guò)測(cè)量VREF電壓換算出來(lái)的,換算的方法有兩種:
第一種比較準(zhǔn)確,VREF是出廠做的校準(zhǔn),存儲(chǔ)在FLASH當(dāng)中。計(jì)算公式為:VDD=(VREF出廠值/VREF實(shí)際測(cè)量值)×VDD出廠值
第二種方法是假定理論上VREF=1.224V,計(jì)算公式為:
VDD=(1.224/VREF實(shí)際測(cè)量值)×4096
一般我們采用第二種方法測(cè)量VDD,測(cè)量步驟為下:
1、使能ADC時(shí)鐘
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
2、出現(xiàn)初始化ADC1
ADC_DeInit(ADC1);
3、設(shè)置ADC通道,精度,轉(zhuǎn)換時(shí)間
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、測(cè)量8次取平均值
u16 VREF_Value(void)//測(cè)量?jī)?nèi)部參考電壓VREF值,測(cè)量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);
}
評(píng)論