以STM32L476为例,VREFINT与内部ADC1_INP0相连
当VDDA与VREF+引脚连在一起时,该电压可能波动,这将导致ADC转换误差很大,因此可通过利用单片机内部的参照电压来算出该时刻的实际参考电压VREF+。
VREFINT_CAL:从下图中的地址0x1FFF 75AA-0x1FFF75AB读出;
VREF+_Charac:3.0V(±10mV);
VREFINT_DATA:ADC1_INP0当前转换得到的ADC数值。
对于某个ADC通道而言,该通道采集到的电压值与参考电压VREF+之间有一个比例关系,如下式:
当VDDA未知时(VDDA与VREF+相连),或有波动时,为了使得采集到的该通道的实际电压值的表达式中与VDDA无关,也就是说VDDA(或VREF+)用(1)式代替,这样就可以得到(3)式:
FULL_SCALE:4095;
VREF+_Charac:3.0V(±10mV);
VREFINT_CAL:从下图中的地址0x1FFF 75AA-0x1FFF75AB读出;
VREFINT_DATA:ADC1_INP0当前转换得到的ADC数值。
ADC_DATA: V_CHANNELx所对应的ADC转换后的数字值;
VREFINT_CAL值读取方法:wVREFINT_CAL = *(__IO uint16_t *)(0x1FFF75AA);