STM8L内部含有一个12位的ADC,拥有25个输入通道,包括一个内部温度传感器,一个内部参考电压。

STM8L使用外部参考电压作为ADC参考电压,由于VDD,GND一般和ADC的外部参考电压引脚VREF+,VREF-连接在一起。所以VDD的电压就是ADC的参考电压,由于LDO供给MCU的电压有一定的偏差。所以使用ADC前需要知道VDD的电压为多少,对于十二位的ADC,VDD电压对应的转换出的数值为4096(2^12).
从第一张图中可以看到,STM8L内部还有一个内部参考电压,这个内部参考电压的电压值是可知的,且是精确的。由数据手册可知,内部参考电压为1.225V。

ADC选择内部参考电压作为测量通道,可以测量到内部电压的转化值Nadc。
此时,已经VDD的转化值4096,VREFINT电压值1.225V及对应的转化值Nadc。
这些值满足比例关系,VDD/4096=VREFINT/Nadc
VDD/4096 =1.225/Nadc
VDD=1.225*4096/Nadc

本文使用ADC的单次转换模式,每隔大约0.5S触发一次ADC转换。ADC转换的通道需要在ADC_SQR寄存器中选择。
ADC完成一次数据采集转化后,会进入中断。我们在中断中打一个断点,查看变量VDD_Value中的数据,可以看到此时数据为2976(电压值被扩大了1000倍),即VDD的电压为2.976V。.与实际用万用表测量的2.99V几乎一样。
|