STM32 ADC應(yīng)用中信號源特性對轉(zhuǎn)換結(jié)果的影響
STM32家族中的所有芯片都內(nèi)置了逐次逼近寄存器型ADC模塊.內(nèi)部大致框架如下: 每次ADC轉(zhuǎn)換先進(jìn)行采樣保持,然后分多步執(zhí)行比較輸出,步數(shù)等于ADC的位數(shù),每個(gè)ADC時(shí)鐘產(chǎn)生一個(gè)數(shù)據(jù)位。說到這里,用過STM32 ADC的人是不是想到了參考手冊中關(guān)于12位ADC轉(zhuǎn)換時(shí)間的公式: ST官方就如何保障或改善ADC精度寫了一篇應(yīng)用筆記AN2834。該應(yīng)用筆記旨在幫助用戶了解ADC誤差的產(chǎn)生以及如何提高ADC的精度。主要介紹了與ADC設(shè)計(jì)的相關(guān)內(nèi)容,比如外部硬件設(shè)計(jì)參數(shù),不同類型的ADC誤差來源分析等,并提出了一些如何減小誤差的設(shè)計(jì)上建議。 這里我摘取部分內(nèi)容,結(jié)合個(gè)人的理解加以整理與大家分享。更多細(xì)節(jié)可以去www.st.com搜索AN2834下載細(xì)看。 當(dāng)我們在做STM32的ADC應(yīng)用遇到轉(zhuǎn)換結(jié)果不如意時(shí),常有人提醒或建議你對采樣時(shí)間或外部采樣電路做調(diào)整。這里調(diào)整的最終目的就是讓信號進(jìn)入ADC模塊的充電時(shí)間與內(nèi)部采樣時(shí)間匹配,保證采得的電壓盡量真實(shí),最終得到符合精度要求的轉(zhuǎn)換結(jié)果。下面就聊聊相關(guān)話題。 一、模擬信號源阻抗的影響 在做ADC操作時(shí),在信號源與ADC引腳之間,或者說在串行電阻RAIN與ADC引腳AIN之間總有電流流過,自然會產(chǎn)生壓降。內(nèi)部采樣電容CADC的充電由阻容網(wǎng)絡(luò)中的開關(guān)和RADC控制。 顯然,對CADC有效的充電由【RADC +RAIN】控制,充電時(shí)間常數(shù)是tc = (RADC + RAIN) ×CADC。不難理解如果采樣時(shí)間小于CADC通過RADC +RAIN充電的時(shí)間,即ts < tc,則ADC轉(zhuǎn)換得到的數(shù)值會小于實(shí)際數(shù)值。 可以看出,隨著電阻(RADC+RAIN)的增加,對保持電容的充電時(shí)間也需要相應(yīng)增加。對于STM32而言,RADC是內(nèi)部的采樣開關(guān)電阻,阻值相對固定,具體數(shù)值在芯片的數(shù)據(jù)手冊里有給出。所以,這里真正可能變動(dòng)的電阻就是信號源電阻RAIN了,它的變化影響充電常數(shù),進(jìn)而影響到芯片內(nèi)部采樣時(shí)間的選擇。 注:tc是電容CADC充電完全的時(shí)間,此時(shí)Vc = VAIN(最大1/2LSB 誤差) Vc:采樣電容CADC上的電壓 tc = (RADC + RAIN) × CADC 【CADC的值也是相對固定的】 二、信號源的容抗與PCB分布電容的對ADC的影響 做ADC時(shí),除了考慮信號源端的電阻外,還需要考慮信號源本身容抗和在模擬輸入端的分布電容(參見下圖)。信號源的電阻和電容構(gòu)成一個(gè)阻容網(wǎng)絡(luò),如果外部的電容(CAIN +Cp)沒能完全充電至輸入信號電壓,ADC轉(zhuǎn)換的結(jié)果顯然是不準(zhǔn)確的。(CAIN + Cp)的值越大,信號源的頻率也就越受限制。(信號源上的外部電容和分布電容分別用CAIN和Cp表示。) 當(dāng)外部電路的電容沒有被模擬信號源完全充電的情況下,模擬輸入信號電壓與模擬輸入腳的電壓VAIN就不相同。如果模擬輸入信號產(chǎn)生變化,它的變化頻率(FAIN)的周期至少應(yīng)該滿足10RC原理,即10 × RAIN × (CAIN +Cp)。 TAIN = 模擬信號的周期 =1/FAIN 因?yàn)椋篢AIN ≥ 10 x RAIN x (CAIN + CP) 因此:FAIN ≤ 1 / [10 x RAIN x (CAIN+ CP)] 假如:RAIN = 25kΩ,CAIN = 7pF,CP = 3pF,則: FAINmax = 1 / [10 x 25x103 x (7 +3)x10-12] 即信號源的最高頻率FAIN(max)= 400kHz。 對于上述給出的信號源特性(容抗與阻抗),它的頻率不能超過400kHz,否則ADC的轉(zhuǎn)換結(jié)果將是不準(zhǔn)確的。 三、模擬信號源的阻抗估算 上面聊了信號源阻抗和AD輸入端的電容對ADC的影響,在這個(gè)基礎(chǔ)上來看下最大允許信號源阻抗的估算。假定最大允許的誤差是1/2 LSB。 參照上面的圖9中的描述,假定此時(shí)輸入端不存在輸入信號充電不充分的情況。 這樣得到誤差 = VAIN – Vc 【Vc為內(nèi)部采樣電容CADC上的電壓】 這里tS是采樣時(shí)間。 tS = TS / fADC,其中TS是以ADC時(shí)鐘周期為單位的采樣時(shí)鐘個(gè)數(shù) 。 對于給定的tS,對應(yīng)VAIN = VREF+的誤差要大于對應(yīng)VAIN< VREF+時(shí)的誤差,這是因?yàn)榘袰ADC從0V充電至VAIN,VAIN = VREF+時(shí)需要比在VAIN < VREF+時(shí)需要更多的充電時(shí)間。因此VAIN = VREF+時(shí)是計(jì)算最大允許信號源阻抗時(shí)需要考慮的最壞情況,此時(shí)誤差為1/2LSB. Rmax = (RAIN + RADC)max 這里N 是 ADC 分辨率 12 我們可以進(jìn)一步得到: 以STM32F103芯片為例,如果這里Ts=7.5, fADC=14MHz,Cadc=12pF,RadcMax=1K,在誤差為1/2LSB時(shí)的最大允許信號源阻抗為:RAIN(max) = 6.4 k? 通過上面的分析,我們可以得知選擇較長的采樣時(shí)間或較慢的ADC時(shí)鐘,能保障更好的轉(zhuǎn)換效果;蛘咄ㄟ^降低ADC時(shí)鐘頻率、選擇較長采樣時(shí)間或選擇較低的分辨率,可以容許更大的外部信號源阻抗。 注:如果使用跟隨放大器可以減小信號源的阻抗效應(yīng),因?yàn)榉糯笃鞯母咻斎胱杩购头浅5偷妮敵鲎杩拱裄AIN與RADC隔離開來。當(dāng)然,放大器自身引入的偏移誤差也應(yīng)加以注意和考慮。 上面提到的RadcMax、Cadc參數(shù)在芯片數(shù)據(jù)手冊的ADC特性表格里,我把STM32F103的截圖如下。好,先就聊到這里。整個(gè)完整應(yīng)用筆記請前往官網(wǎng)搜索AN2834,其中有不少關(guān)于提高或改善ADC精度的建議,比如關(guān)于電源的處理等。編輯:admin 最后修改時(shí)間:2019-01-03