stm32內部參照電壓vrefin的使用
stm32的內部參照電壓vrefint和adcx_in17相連線,它的作用是相當於乙個標準電壓測量點,內部參照電壓vrefint只能出現在主adc1中使用。
內部參照電壓vrefint與參考電壓不是一回事。adc的參考電壓都是通過vref+提供的並作為adc轉換器的基準電壓。
當我們使用的vref+是直接取自用vcc電壓時,當vcc電壓波動比較大時或穩壓效能比較差時,可以借用stm32的內部參照電壓vrefint校正測量精度。
以測量1通道的電壓值為例,先讀出參照電壓的adc測量結果,記為adre;再讀出要測量通道1的adc轉換結果,記為adch1;則要測量的電壓為:
vch1 = vrefint* (((adch1*(vref/4096))/(adre*(vref/4096)))
注:vrefint=1.2v,vref為參考電壓值=3.3v
公式簡化:
vch1 = vrefint*(adch1/adre)
這種方法等於變相將內部參照電壓vrefint當成是adc參考電壓,也就是說,此時vref參考電壓的準確度已在此已對結果影響不大了,adc的轉換結果基本由vrefint的精度決定。
注:一般情況下,這種辦法只適合於當vref+參考電壓(其實也就是vcc電壓)離散性實在太差的情況下使用。
我們知道,stm32中64腳和小於64腳的型號,vref+在晶元內部與vcc訊號線相連,沒有引到片外,這樣ad的參考電壓就是vcc上的電壓,那麼我們可以使用乙個高精度的外部參照電壓,然後用上面的方法,也許可以解決因vcc電源電壓精度不高帶來的adc測量不準確的問題。
本帖最後由 abbott 於 2014-5-5 08:56 編輯
建議採用以下方法結合使用:
1,採用內部參考
內部參考在晶元出廠時已經校準過精度了!(不清楚是否所有型號都校準過)
其廠內校準過程是在外部供3v電源,將取樣內部參考的adc值寫入校準暫存器vrefint_cal!
因此,我們可以使用以下公式算出實際電壓:
v=(3*vrefint_cal*adc_data)/(vrefint_data*full_scale)
根據這個公式,程式需要獲取vrefint_data和adc_data!
不過我們實際測試這個電壓參考在低溫下偏差比較大,可能是晶元本身的問題,目前還不清楚是全系列,還是個別型號有這個問題!
2,使用過取樣!
adc 取樣 通道
今天學習stm32的adc部分,adc1有18個通道,其中adc16和adc17是內部通道,分別接內部溫度計和vrefint。在做a d轉換的時候,16個多路通道可以分為兩組 規則組和注入組。不知道大家怎麼看,也許是我看的不夠專注,反正我覺得stm32的參考手冊真是晦澀難懂,就像 一樣。就規則組這個...
ADC 取樣資料抖動
msp430或stm32,在使用內部adc出現的取樣資料異常抖動問題 取樣設計 用於檢測供電線路電流及電壓。產品執行在兩種模式下,1 低功耗靜態模式 倉儲態 2 全功能全速執行模式 工作態 在倉儲態下,所有外設均處於關閉狀態,mcu也處於低功耗模式下 如msp430處於lpm3模式,stm32處於s...
STM32的ADC取樣與多通道ADC取樣
stm32庫開發實戰指南 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器 10k 即用stm32來測量pb0和gnd兩端的電壓,這樣的電路設計比較簡單也容易理解,但是存在一定的弊端,下面給出 stm32庫開發實戰指南 上面配套...