問題
今天在使用 STM32F407的ADC時遇到一個問題:ADC的參考電壓都是通過Vref+提供的並作爲ADC轉換器的基準電壓。當我們使用的Vref+是直接取自用VDD電壓時,當VDD電壓波動比較大時或穩壓性能比較差時,轉換結果自然就不準確了!
供電方案
MCU的參考手冊都會有一章節單獨介紹MCU的電源管理,針對不同的MCU(封裝不同等)其外部電源如何連接也是有要求的,我們在MCU上一般都會發現如下引腳:
- VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator. Provided externally through VDD pins.
- VSSA, VDDA = 2.0 to 3.6 V: external analog power supplies for ADC, reset blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the ADC is used). VDDA and VSSA must be connected to VDD and VSS, respectively.
- VBAT = 1.8 to 3.6 V: power supply for RTC, external clock 32 kHz oscillator and backup registers (through power switch) when VDD is not present.
- VREF+: 正模擬參考電壓輸入(部分芯片沒有個引腳)
下面以STM32F1和STM32F2的MCU比較來具體看看
供電架構如下圖所示:
不同的供電所管理的供電域
供電電壓
- VCC: C=circuit 表示電路的意思, 即接入電路的電壓
- VDD: D=device 表示器件的意思, 即器件內部的工作電壓;
- VSS: S=series 表示公共連接的意思,通常指電路公共接地端電壓
- stm32的VDDA和VSSA不能懸空,復位模塊和RC振盪器需要VDDA和VSSA。否則無法下載程序!
電源引腳連接
- VDD引腳外接去藕電容連到外部穩壓源
- 一個最小值4.7uF、典型值10uF的鉭電容或陶瓷電容
- 每個VDD引腳再接一個100nF的陶瓷電容
- VBAT引腳外接電池。若沒有電池,推薦通過100nF的陶瓷電容連到VDD引腳
- VDDA引腳外接兩個去藕電容
- 一個100nF的陶瓷電容
- 一個1uF的鉭電容或陶瓷電容
- VREF+引腳連到VDDA
- 若有單獨的參考穩壓源連接
一個100nF和1uF的電容
- 若有單獨的參考穩壓源連接
- VCAP1和VCAP2通常只各連接一個2.2uF的電容
- 特殊封裝上,可外接1.2V電源來旁路內部主電壓調節器
- 特殊封裝上,可外接1.2V電源來旁路內部主電壓調節器
ADC的參考電壓
在部分MCU的封裝中,會有單獨的一個Vref引腳
我們可以把外部基準電壓芯片(例如REF3133,輸出的電壓是標準的3.300V)連接到Vref引腳。一般100腳的STM32 MCU(如上圖STM32F4)都有VREF引腳。
對於100腳以下的芯片,STM32沒有把VREF引腳引出來,所以,我們只能把基準電壓芯片連接到VDDA引腳。注意,STM32單片機上面有好多電源引腳,其中有若干VDD引腳,只有一個VDDA引腳,VDDA引腳就是模擬供電引腳。不過,需要注意,VDDA的電壓不是隨便定義的。例如,STM32F051系列單片機就規定,VDDA必須要大於或者等於VDD纔可以正常工作,所以這時候,最好是給單片機3.0V供電,再給VDDA採用一個3.3V的基準電壓芯片供電。
內部參照電壓
以上兩種方法都需要外加基準電壓芯片,在實際應用中,往往是VDDA引腳和VDD引腳連在一起,都是由電源芯片供電。這個時候如果要提高ADC轉換準確性該怎麼辦呢?
在每個MCU的內部,都有一個叫內部參照電壓的東西。關於該部分的介紹,位於對應 MCU 的數據手冊中(不同MCU的數據手冊介紹有多又少,同樣是STM32F0的數據手冊介紹更爲詳細),如下圖:
內部參考電壓在芯片出廠時已經校準過精度了!且不同的MCU是有可能不同的!其廠內校準過程是在外部供3.3V電源,將採樣內部參考的ADC值寫入到固定的內存中去(如上地址,不同MCU具體位置可能不同)!而我們就可以利用這個來校準自己的ADC。
STM32的ADC內部都有一個參考電壓引腳,可以通過配置,把這個腳連接到ADC輸入引腳,是內部連接。然後再計算實際的VDDA值。MCU不同具體鏈接的ADC引腳也是不同的。下面是STM32F4芯片的參考手冊的說明:
這樣我們就可以用ADC實際採樣,得到VREFINT的採樣值,然後使用上面的校準值進行計算即可!
關於使用內部參照電壓的具體方法,只有在STM32F0x芯片的參考手冊中才能找到,其他MCU的參考手冊都是很簡單的幾句說明。
更進一步,在計算其他通道的時候,我們就可以使用以上計算的VDDA來作爲基準了!
參考
- STM32F4、STM32F0、STM32F1、STM32F2的數據手冊,參考手冊
- ST的培訓資料