詳究2812 的內置ADC
AD,就是將模擬量轉變?yōu)閿底至康倪^程,一般分為取樣、保持、量化、編碼這4步。
由于模擬信號在時間上連續(xù)的,而數字信號在時間上離散的,所以轉換時首先必須按 數字信號的節(jié)拍,對被轉換的模擬信號采取樣品。取樣(Sample)的原理如圖示。
開關受取樣脈沖信號S(t)控制,S(t)=0時,開關斷開,取樣輸出V1(t)=0;S(t)=1時,開關導通,V1(t)=V(t)。這樣就把連續(xù)的模擬信號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個通道。
對于每個序列發(fā)生器,一旦轉換結束,已選擇采樣的通道值就會被保存到各個通道的結果寄存器中去。
總共有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.序列發(fā)生器可以按兩個獨立的8狀態(tài)序列發(fā)生器(SEQ1和SEQ2)來運行,也可以按一個16狀態(tài)的序列發(fā)生器(SEQ)來運行。
8.共有16個轉換結果寄存器來保存轉換數值
式中:ADCLO為AD轉換的參考電平,在實際使用的過程中,通常將其與GND連接,因此此時ADCLO的值為0。
4095=2^12-1,對應于滿量程輸入為3V時的轉換結果
9.有多種觸發(fā)方式來啟動AD轉換(SOC=start of conversion),包括:軟件直接啟動S/W,EVA的事件源,EVB的事件源和外部引腳啟動。
10.序列發(fā)生器可以運行在啟動/停止模式。
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位控制)---采樣方式
雙序列發(fā)生器模式、級聯模式(AdcRegs.ADCTRL3.bit.SMODE_SEL位控制)---序列放生器的模式
也就是說在雙序列發(fā)生器模式下可以采用順序采樣和同步采樣,在級聯模式下我們依然可以采用順序采樣和同步采樣兩種方式
序列發(fā)生器的連續(xù)自動序列化模式和啟動/停止模式
一個序列的轉換數是由MAXCONVn進行控制的,在啟動一個轉換序列進行轉換時,AD模塊將MAXCONVn的值裝載進自動序列狀態(tài)寄存器ADCASEQSR的序列計數器狀態(tài)位SEQCNTR。
當序列發(fā)生器從狀態(tài)CONV00開始并順序進行(CONV01,CONV02。。。。)時,SEQCNTR位從裝入值開始遞減,直到為0,結束一個序列的轉換,完成轉換數為(MAXCONVn+1)。
當ADCTRL1的CONT RUN位設為0時,AD的序列發(fā)生器運行在啟動/停止模式,也就是說這種模式下,序列發(fā)生器在完成1個序列的轉換之后將停止工作,在下一次轉換啟動開始之前,
必須復位序列發(fā)生器,將轉換器置為CONV00。
復位的方法如下:
AdcRegs.ADCTRL2.bit.RST_SEQ1=1;//立即復位序列發(fā)生器為CONV00
AdcRegs.ADCTRL2.bit.RST_SEQ2=1;//立即復位序列發(fā)生器為CONV08
當AD的控制寄存器1的CONT RUN位設為1時,AD的序列發(fā)生器運行在連續(xù)自動序列化模式,當序列轉換結束時,轉換序列自動重復開始,SOC觸發(fā)時自動將MAXCONVn裝入SEQCNTR,
SEQ的狀態(tài)變?yōu)镃ONV00。在這種情況下,為了避免重寫數據,必須確保在下一個轉換序列開始前,讀取結果寄存器。
評論