晶元型號:stm32l051c8(其它型號請參考datasheet,僅供參考)
使用adc採集電壓時若使用外部參考電壓,如果外部電壓變化,且低於正常ldo工作電壓時,輸出的電壓將發生改變,導致基準電壓改變而導致adc電壓出現偏差,因此在該晶元上檢視datasheet後得知,廠家已經為我們考慮到這種情況,並在出廠時將類似於基準電壓的值寫在flash中。該值的環境:25°c, vdd = 3v時的情況,可以直接位址訪問讀取,我讀取了兩個晶元的值,大概在1670值左右。通過該值我們就有乙個標準。
接下來看參考手冊中對該款晶元的介紹,
1、adc in17內部參考電壓原始資料,也就是下圖公式中的 vrefint_data
2、讀取電池電量連線通道原始資料,也就是下圖公式中的adc_datax值,我在板子上接的是adc in4
下圖的計算公式就是利用內部參考的校準電壓值和實際讀取的內部參考電壓值作乙個線性關係,將這個斜率對應到我們需要測量的通道值。
vrefint_cal = *(__io uint16_t *)(0x1ff80078);
full_scale:根據我們設定的adc解析度而定,12位adc解析度值:2^12 - 1 = 4096 - 1.
實測資料:
vrefint_cal:1669 vrefint_data: 1716
adc_datax: 2046 full_scale: 4095
根據公式計算到電壓值: vol = 3 * 1669 * 2046 / (1716 * 4095) = 1.4578
電池電量: 1.4578 * 2 = 2.915 v
用萬用表測量的電壓值:1.44~ 1.45v波動, 校驗成功。
STM32精確延時
前面用 stm32 的gpio 模擬液晶驅動 時序時遇到乙個問題,就是怎樣產生一段較為精確的延時。通常產生一小段延時的方法就是利用乙個遞增或者遞減迴圈進行軟體延時。例 void delay void 我在使用 mplab ide 進行pic 微控制器的開發時,mplab 提供了乙個 watch 跑錶...
STM32之ADC 內部基準電壓,參考電壓)
轉 stm32內部參照電壓vrefin的使用 每個stm32晶元都有乙個內部的參照電壓,相當於乙個標準電壓測量點,在晶元內部連線到adc1的通道17。根據資料手冊中的資料,這個參照電壓的典型值是1.20v,最小值是1.16v,最大值是1.24v。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個...
STM32內建參照電壓的使用
每個stm32晶元都有乙個內部的參照電壓,相當於乙個標準電壓測量點,在晶元內部連線到adc1的通道17。根據資料手冊中的資料,這個參照電壓的典型值是1.20v,最小值是1.16v,最大值是1.24v。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與adc的參考電壓混淆。adc的參考電...