從datasheet中可以看到內(nèi)部基準(zhǔn)出廠校準(zhǔn)值儲存在地址0x1ffff7ba~0x1ffff7bb

VREFINT_CAL.png
注意到該值是在VDDA=3.3V時測量得到.
讀取校準(zhǔn)值的過程是對該地址進(jìn)行直接尋址:
#define VREFINT_CAL_ADR 0x1ffff7ba //定義地址
#define pVREFINT_CAL ((uint16_t*)VREFINT_CAL_ADR) //定義指針
uint16_t VrefInt = *pVREFINT_CAL; //讀取
我讀到的VrefInt 值為1521,換算成電壓:(1521/4095)*3.3V=1.226V.
因為Vref連接到ADC的通道17,用ADC對其進(jìn)行采樣得到當(dāng)前系統(tǒng)電壓下的值為1696,當(dāng)前VDDA標(biāo)稱值為3V.用以上參數(shù)可以計算實際VDDA電壓,原理如下
3.3V系統(tǒng)下,Vref電壓為:
當(dāng)前系統(tǒng)下,Vref電壓為:
顯然,兩個算式應(yīng)該相等,于是可以得到:
參考手冊252頁中有本方法的計算,有印刷錯誤,其中的.3V應(yīng)該為3.3V

REF Manual Page252.png
用萬用表測量值為2.97V

VDDA.png
可見該方法還是靠譜的.