STM8L中等容量有25个模仿通道(1个快速通道1us和24慢速通道)。中等+和高密度器材有28个通道(4个快速1us和24个慢速通道)。内部有两个通道衔接带温度触发器和内部电压参阅电压。能够装备为单次和接连形式。能够设置ADC时钟预分频比,模仿看门狗,DMA功用,能够设置为6/8/10/12位转化精度。
今日咱们丈量下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);
}