從早期的8位,10位到12位ADC,現在ADC模塊已經成為了單片機的標配。但是ADC使用的時候采出來的數據一定是準確的嗎?其實工程師朋友們在使用的時候如果不注意的話,得到的采樣值會與實際之前存在一定的誤差。這是由于SAR ADC的結構所決定的,SAR ADC的標準結構如下圖: 在采樣過程中開關處于閉合狀態,并對采樣電容進行充電。如果采樣的速度過快或者輸入電流過小會造成電容Csh充電不滿,得到的采樣值會低于實際值。當電路輸入為小電流時,為了保護外部電路,防止由于電容突然與自己的輸出相連而對外部電路形成沖擊,我們在片上集成了一個模擬緩沖器如下圖方框里所示。
緩沖器更像是一個阻抗變換器,它會把自己輸出端電容量的變化轉化為其輸入端電容量的變化。可以通過對寄存器ADC_CR0中的BUFEN位進行配置來選擇是否啟用緩沖器。當緩沖器打開后最大的采樣速率為200sps,其它情況下的采樣速率如下表:
注意不同電壓與采樣率的問題:2.4v以上,最大采樣率是1Msps,2.4v以下,最大采樣降低為500KSps, 低于2.2v,最大采樣率降低為200Ksps,注意不同參考源與采樣率的問題:使用內部Vref時,最大采樣率為200KSPS,達不到1MSPS。
知道了模塊的原理后如何提高采樣的精度? 第一種方法是找到噪聲源,回避這個噪聲源,比如在噪聲源穩定,或者消失的時候,進行采樣。就像電機驅動一樣,ADC不會在PWM切換時 采樣信號,因為PWM切換瞬間,噪聲是最大的。 第二種方法是無法回避這個噪聲源,那么我們的產品是有內部累加器的,比如進行16次采樣,讀取累加器高12位,就是16次采樣的平均值,芯片內部都已經集成這個累積,求平均的硬件算法。 第三種方法是輸入端加一個電容,進行去耦以及降低噪聲影響,再使用ADC進行采樣。 第四種方法是細節描述,比如在采樣的幾個cycle時,最好MCU的IO停止翻轉驅動,因為這樣會影響電源噪聲。 最重要的是:外部Vref的這個GPIO 在ADC采樣時,必須停止翻轉,因為共享一個PAD,GPIO的翻轉會把噪聲引入ADC的Vref。 第五種方法是細節描述,比如采樣的的幾個cycle時,我們可以配置采樣時間,加大sample的時間,這樣可以更精確的采樣信號。華大單片機ADC使用時推薦如下: ADC的典型應用如下圖所示: 對于0.5LSB 采樣誤差精度要求的條件下,外部輸入阻抗的計算公式如下: 其中F_ADC為 ADC 時鐘頻率,寄存器 ADC_CR0<3:2>可設定其與 PCLK 的關系,如下表: 下表為ADC 時鐘頻率F_ADC和 PCLK 分頻比關系: M 為采樣周期個數,由寄存器ADC_CR0<13:12>設定。
下表為采樣時間t_sa和 ADC 時鐘頻率F_ADC的關系: 下為ADC 時鐘頻率F_ADC和外部電阻R_AIN的關系(M=12,采樣誤差 0.5LSB 的條件下):
R_AIN(KOhm) F_ADC(KHz) 10 5600 30 2100 50 1300 80 820 100 660 120 550 150 450 盡量減小ADC輸入端口AIN_X 的寄生電容C_PARACITIC; 除了考慮R_AIN值外,如果信號源V_AIN的內阻較大時,也需要加入考慮 華大單片機-中國芯,中國夢中國人用自己的“芯” • 如有技術與價格疑問,可以隨時撥打電話或QQ咨詢 • 我司有強大的技術團隊,可根據您的要求進行研發設計,量身定做,客戶滿意是我們的最高宗旨~! • 電話:18124577713 QQ:783592501 • 華大MCU交流QQ群: 164973950
|