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幾乎一樣。
|