詳究2812 的內置ADC

  AD的簡單知識


 AD,就是將模擬量轉變爲數字量的過程,一般分爲取樣、保持、量化、編碼這4步。
 
 由於模擬信號時間上連續,而數字信號在時間上離散的,所以轉換時首先必須按 數字信號的節拍,對被轉換的模擬信號採取樣品。取樣(Sample)的原理如圖示。

 開關受取樣脈衝信號S(t)控制,S(t)=0時,開關斷開,取樣輸出V1(t)=0;S(t)=1時,開關導通,V1(t)=V(t)。這樣就把連續的模擬信號V(t)變成了一個個脈衝信號。
 
 採樣定理:取樣信號S(t)的頻率fs大於或等於模擬信號f(t)的最高頻率Fmax(其頻帶的上限頻率)的2倍,
 則輸入信號V(t)的主要特徵都能夠被保留下來,將來可以通過濾波處理,從V1(t)中恢復原來的信號V(t)。

 

 AD的採樣頻率和轉換時間。

 AD的採樣頻率取決於啓動AD的速度,啓動AD轉換的方法有很多,例如軟件直接啓動,或者利用EV的一些事件來啓動,
 啓動的頻率纔是AD採樣的頻率例如每隔1ms啓動1次,則AD採用頻率爲1K。而AD時鐘和AD的轉換時間有關,和AD採樣頻率是無關的。

 

                                 2812內部ADC的特點

 

 2812的ADC模塊是一個12位分辨率的、具有流水線結構的模數轉換器,具有16個通道。

 對於每個序列發生器,一旦轉換結束,已選擇採樣的通道值就會被保存到各個通道的結果寄存器中去。
 總共有16個結果寄存器Result Reg0—Result Reg15,用於分別保存16個通道的轉換結果。

                                         2812 ADC的功能

 1.12位的ADC內核,內置2個採樣保持器(S/H-A,S/H-B)。

 2.採樣模式可以爲順序採樣(Sequential Sampling)或者是同步採樣(Simultaneous Sampling)

 3.模擬輸入範圍爲0—3V(需要注意,輸入不可超過3V,否則燒壞2812)一般輸入最大值在3V的70%左右,爲防止萬一,一般先將要採樣的信號經過運放處理(基準電壓源偏置),

   使輸入電壓範圍在AD正常工作採樣範圍之內,在信號進DSP的AD口時,最好加一嵌位二極管。


 4.快速轉換時間運行在25MHZ,ADC時鐘或者12.5MSPS(每秒完成12.5個百萬次的採樣。)

 5.總共爲16路輸入通道,可編程多路選擇輸入。16路採樣輸入通道被分成了兩組,每組8個,分別是ADCINA0……ADCINA7和ADCINB0……ADCINB7。

   A組對應於採樣保持器S/H-A,B組對應於採樣保持器S/H-B。

 6.自動序列化,在單一事件段最大能夠提供16個自動A/D轉換。

 7.序列發生器可以按兩個獨立的8狀態序列發生器(SEQ1和SEQ2)來運行,也可以按一個16狀態的序列發生器(SEQ)來運行。

 8.共有16個轉換結果寄存器來保存轉換數值

 

 式中: ADCLO爲AD轉換的參考電平,在實際使用的過程中,通常將其與GND連接,因此此時ADCLO的值爲0。
       4095=2^12-1,對應於滿量程輸入爲3V時的轉換結果

 9.有多種觸發方式來啓動AD轉換(SOC=start of conversion),包括:軟件直接啓動S/W,EVA的事件源,EVB的事件源和外部引腳啓動。

 


 10.序列發生器可以運行在啓動/停止模式。

 11.採樣-保持的採集時間窗口可以預先設定。(ADCTRL1的位ACQ_PS3—ACQ_PS0決定了採集窗口的大小,這一位控制了SOC脈衝的寬度,也就是一開始開關S(t)的導通時間。
   SOC脈衝的寬度是(ACQ_PS+1)*ADCLK。)

 

 

                                        ADC時鐘

 

 

 Example. Clock Chain to the ADC

 

 

 

                   ADC工作模式

 

 順序採樣、同步採樣 (AdcRegs.ADCTRL1.bit.SEQ_CASC位控制) --- 採樣方式
 雙序列發生器模式、級聯模式(AdcRegs.ADCTRL3.bit.SMODE_SEL位控制)--- 序列放生器的模式

 也就是說在雙序列發生器模式下可以採用順序採樣和同步採樣,在級聯模式下我們依然可以採用順序採樣和同步採樣兩種方式

 

 序列發生器的連續自動序列化模式和啓動/停止模式

 一個序列的轉換數是由MAXCONVn進行控制的,在啓動一個轉換序列進行轉換時,AD模塊將MAXCONVn的值裝載進自動序列狀態寄存器ADCASEQSR的序列計數器狀態位SEQCNTR
 當序列發生器從狀態CONV00開始並順序進行(CONV01,CONV02。。。。)時,SEQCNTR位從裝入值開始遞減,直到爲0,結束一個序列的轉換,完成轉換數爲(MAXCONVn+1)。
 當ADCTRL1的CONT RUN位設爲0時,AD的序列發生器運行在啓動/停止模式,也就是說這種模式下,序列發生器在完成1個序列的轉換之後將停止工作,在下一次轉換啓動開始之前,
 必須復位序列發生器,將轉換器置爲CONV00

 復位的方法如下:

 AdcRegs.ADCTRL2.bit.RST_SEQ1=1;     //立即復位序列發生器爲CONV00
 AdcRegs.ADCTRL2.bit.RST_SEQ2=1;     //立即復位序列發生器爲CONV08

 當AD的控制寄存器1的CONT RUN位設爲1時,AD的序列發生器運行在連續自動序列化模式當序列轉換結束時,轉換序列自動重複開始,SOC觸發時自動將MAXCONVn裝入SEQCNTR
 SEQ的狀態變爲CONV00。在這種情況下,爲了避免重寫數據,必須確保在下一個轉換序列開始前,讀取結果寄存器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章