当然,也可以用查表的方法。手册里面都列出来了。
用ADC采样都需要一个参考电压,一般的系统中都采用mcu的VDD引脚的电压,但是针对电池供电的系统,VDD引脚的电压可能会随着电池电压的降低而降低,这个时候采集到的数据就会有误差。 这个时候,我们就需要用到mcu内部的参考电压,这个电压是mcu出厂的时候校准之后固化好的,误差很小。 以stm32L151为例子,内部的参考电压(1.224V)连接到了ADC_IN17通道上面,我们可以采集出这个电压对应的数字量,从而作为参考计算出其他通道上面的电压。
部分参考代码:
- vdiv = AdcGetValue( 0, ADC_Channel_0 ); //连接至Vo的ADC通道
vref = AdcGetValue( 0, ADC_Channel_17 ); //连接至内部参考电压的通道
temperturevoltage=( 1.224 /vref ) *vdiv; //1.224/vref就是数字量对应电压的关系
|