高志斌 ,鄒 波 ,張 麗 ,王力文 ,鄒詩苑
(1.上海機電工程研究所,上海 201100;2.上海自動化儀表有限公司,上海 200072)
TMS320F28335型DSP的A/D轉換模塊是12位帶流水線的模數轉換器,理論上來講,ADC模塊的采樣精度還是較好的,但是根據工程經驗,一般ADC模塊的采樣精度實際都會比理論值少3位,也就是說12位的ADC模塊,在采樣精度比較好的情況下可以達到9位,也就是1/512,約為0.2%。但是在實際應用過程中,ADC模塊的精度往往不盡如人意,采樣值和實際值之間的相對誤差有時候最大可以達到15%,這給實際應用帶來了很大的困擾[1]。
ADC的模擬電路包括前端模擬多路復用開關(MUXs)、采樣/保持(S/H)電路、變換核心、電壓調節器以及其他模擬支持電路部分。模數轉換器的數字電路為本文中所指的外圍部分,包括可編程的轉換序列發生器、結果寄存器、與模擬電路的接口、與設備外圍總線的接口以及與其他芯片模塊的接口[2]。
AD器件理想輸出與實際輸出之差定義為偏移誤差。所有數字代碼都存在這種誤差。在實際中,偏移誤差會使傳遞函數或模擬輸入電壓與對應數值輸出代碼間存在一個固定的偏移。
增益誤差是預估傳遞參數和實際斜率的差別,增益誤差通常在模數轉換器最末或最后一個傳輸代碼轉換點計算。
模數器件的精度指標是用積分非線性值INL來表示的。這個參數表示了ADC器件在所有的數值點上對應的模擬值和真實值之間誤差最大的那一點誤差值。也就是輸出數值偏離線性最大的距離,單位是LSB(即最低位所表示的量)。
差分非線性值DNL是指ADC相鄰2個刻度之間最大的差異。理論上說,模數器件相鄰2個數據之間模擬量的差值都是一樣的,就如同一把粗細均勻的尺子。但實際一把分辨率為1 cm的尺子,相鄰2個刻度之間也不可能都是整數1 cm。
從數學上來講,INL是DNL誤差的數學積分,一個具有良好INL的ADC保證有良好的DNL。
溫度漂移為隨著溫度的變化而產生的誤差。一般用ppm/K或者ppm/℃來表示,計算公式為ΔGain/ΔTemperature。
需要獲得當前采樣的各項誤差參數來決定AD采樣的校正措施[4]。通常計算偏移誤差方法是測量第一個數字代碼轉換或“零”轉換的電壓,并將它與理論零點電壓相比較。為了找到零點與最后一個轉換代碼,可以采用多種測量方式,最常用的是代碼平均法和電壓抖動法。
代碼平均測量就是不斷增大器件的輸入電壓,然后檢測轉換出的結果。每次增大輸入電壓都會得到一些轉換代碼,用這些代碼的和算出一個平均值,測量產生這些平均轉換代碼的輸入電壓,計算出器件偏移和增益。
電壓抖動法采用動態反饋回路控制器件輸入電壓,根據轉換代碼和預期代碼的差對輸入電壓進行增減調整,直到2種代碼之間的差值為0,當預期轉換代碼接近輸入電壓或在轉換點附近變化時,測量所施加的“抖動”電壓平均值,計算偏移和增益。
根據積分非線性INL、差分非線性DNL和溫度漂移誤差會做出極為復雜的數學模型,對于實際DSP工業控制應用沒有太大意義,在本文中我們重點提出偏移與增益誤差的解決方法。
如圖 1所示,假設ADC實際增益為Ga,實際偏移量為b,則模擬量輸入X與數字量輸出Y之間的關系為Y′=GaX+b。我們這里有Ga和b 2個未知量,則只需要知道這2個未知量就可以通過ADC轉換結果緩沖寄存器得到數據Y,就可以知道實際輸入的電壓X。對于二元一次方程,至少需要由2個方程組成的二元一次方程組,且其中的(X1,Y1),(X2,Y2)已知,Ga和b就可以通過求解式(1)方程組得出。


圖1 ADC模塊的轉換特性曲線Fig.1 Transfer characteristic of AD module
在工業控制中,比較常見的一種做法是將2路精準電源提供給ADC的任意2個輸入通道,如ADCINA0和ADCINB0,精準電源的輸入電壓是很容易確定的,也就是X1和X2,然后通過讀取ADCINA0和ADCINB0的轉換結果來獲得Y1和Y2。這樣,可以得到轉換過程中的實際增益Ga和實際的偏移量 b,如式(2)所示。

然后,可以根據數字量轉換結果Y,得到實際輸入量 X=(Y-b)/Ga。
DSP應用環境主要在工業控制領域,考慮到實際軟硬件成本和經濟效益,需要以一個盡可能小的軟硬件開銷完成采樣精度的要求。
在TMS320F28335的工業應用中,2路高精度電壓源成本過高,對于嵌入式設備來說,需要占用大量的PCB空間。而且用2路不同的ADCIN信號來對其他信號進行校準有些浪費。在工程實踐中,同樣的電壓經過相同型號器件組成的濾波、運算電路之后,由于各個通道的各個器件均會有不同的溫度漂移誤差、積分與差分非線性誤差等,DSP寄存器采樣的結果是有差別的,也就是說不同ADn采樣線路的實際增益Gan和實際的偏移量bn是不同的。對此,本文提出一種新的采樣自校正方法,其中某一路n的硬件原理如圖 2所示。

圖2 AD自校正硬件原理Fig.2 Hardware principle block diagram of AD self-tunning
在繼電器1和繼電器2的選用中,可以選擇由一個線圈控制多路觸點吸合的繼電器以降低成本,也可以選擇一個線圈控制一個觸點的繼電器,但是通過DSP同一個或多個GPIO口來控制繼電器吸合。
在TMS320F28335控制模塊中,利用GPIO口通過放大電路給繼電器1和繼電器2的線圈通斷電來控制繼電器的吸合。在DSP啟動過程中,可以先將繼電器1,2的a觸點吸合,取得在基準電壓X1下的數字量輸出Y1n,然后將繼電器2的b觸點吸合,取得在基準電壓X2下的數字量輸出Y2n,然后可以根據式(2)算出該路的實際增益Gan和實際的偏移量bn,最后將繼電器1的b觸點吸合,接入待采樣信號來進行實際信號的采樣工作。
實際工程經驗表明,該基準電壓源1和2接近待采樣電信號電壓范圍上下限容易經校正后獲得較為精確的結果。為更進一步降低造價可以將基準電源2去掉,該路直接接地,這樣可以得出該采樣路的實際偏移量bn,但是會降低一部分采樣的精度。
進行AD采樣的步驟如下[4]:
步驟1初始化系統控制、PLL、看門狗、使能外設時鐘等;
步驟2初始化GPIO及外設等;
步驟3設置ADC的采樣率等;
步驟4將繼電器設置成觸點連接到基準電源狀態;
步驟5軟件啟動ADC采樣,得出各通道對應的增益和偏移;
步驟6進入主循環,根據需要對各通道進行采樣。
對于TMS320F28335型DSP而言,序列模式下對 于 150 MHzSYSCLKOUT, 采 樣 率 =1/[(2+ACQ_PS)*ADC時鐘 (ns)], 同時采樣模式下采樣率=1/[(3+ACQ_PS)*ADC 時鐘(ns)]。
其中計算增益代碼如下:

經工程實踐檢驗,采用了本AD采樣自校正方法的DSP采樣系統的采樣精度得到了很大的提高。此校正方法對其他非DSP的嵌入式或非嵌入式AD采樣系統有一定參考作用。
[1]姜艷波.數字信號處理器DSP應用100例[M].北京:化學工業出版社,2009.
[2]竺南直.TMS320 F2812 DSP原理與應用實例[M].北京:電子工業出版社,2009.
[3]劉向宇.DSP嵌入式常用模塊與綜合系統設計實例精講[M].北京:電子工業出版社,2009.
[4]劉陵順.TMS320F28335 DSP原理與開發編程[M].北京:北京航空航天大學出版社,2011.