## 1. 簡述:
ADC,Analog-to-Digital Converter的縮寫,指模/數轉換器或者模數轉換器,其中
A指的是模擬,D指的是數字
## 2. 采樣速率:
采樣速率是A/D轉換時間的倒數
## 需攻克的疑難點
### 1. 為何ADC的結果寄存器讀取時都需要右移四位:
SampleTable[array_index++]= ( (AdcRegs.ADCRESULT0)>>4);
解釋:因為28335的ADC采集信號是12位的而結果寄存器是16位的,而同時采集的數據轉化后最終會以
“左對齊”的方式存儲到結果寄存器中(REG0~REG15),所以實際ADC轉化的數據是存儲在結果寄存器的
4~15位上的,而0~3這四個位是空着的。所以讀取寄存器數據時需要右移四位。
## 2. ADC的時鍾頻率
簡述:ADC的最高時鍾頻率是25MHZ,不能超過該值。
## 3. ADC的轉化頻率
簡述:即完成一次AD/DA所需要的頻率
## 4. ADC采樣頻率
簡述:采樣頻率和時鍾/轉化頻率都沒有關系,只與觸發ADC的頻率有關。觸發得越快,頻率就越高。
但是其最高采樣頻率應該是12.5MHZ,即:1s中可以采樣12500次信號。
## 5. 采樣窗口
簡述:采樣窗口與ACQ_PS (寄存器)和ADCCLK有關
問題:如何盡可能提高ADC的精度?
1. 時鍾頻率盡可能低
2. 采樣窗盡可能大
## 關於自動排序器
簡述:排序器是管理ADC的各個通道的采樣優先級的,因為28335的ADC采樣通道一共有16個,而采樣保持器只有一個,
所以同一時刻只能對一個通道進行采樣保持操作,那么16個通道哪個先采樣哪個后采樣就必須要有個排序。自動排序器
就是擔任這樣的角色。
28335一共有兩個自動排序器,分別是SEQ1和SEQ2。SEQ1/SEQ2分別有8個序列,可以設置到通道ADC的16個采樣通道。
排序器序列一共有CONV0~CONV15,數字越小優先級越高。
## ADC的16個采樣通道
簡述:DSP28335的ADC的輸入采集通道有AB兩組,每組8個輸入通道,一共16個。當ADC工作的級聯模式下時,兩組可
合並為一組。
### 采樣模式有:順序采樣 和 同步采樣。
順序采樣:即按照ADCINA0~ADCINB7的順序進行采樣
同步采樣:將AB兩組聯動起來,其采樣順序為:
第1次采樣:ADCINA0 ADCINB0
第2次采樣:ADCINA1 ADCINB1
第3次采樣:ADCINA2 ADCINB2
..........
第8次采樣:ADCINA7 ADCINB7
### 最大采樣通道
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 設置值;//實際最大通道數 = 設置值+1
## ADC的配置代碼
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK; //ADC采樣時間選擇 AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; //ADC內核分頻 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; //級聯工作方式 AdcRegs.ADCTRL3.bit.SMODE_SEL= 0; // 順序采樣 AdcRegs.ADCTRL1.bit.CONT_RUN = 1; //連續采樣 AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1 ; //完成排序后,排序器指針回到最初狀態 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x2; AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; //將ADCINA0對應到排序器的通道0,通道號數字越小優先級越高 AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1 ; // 將ADCINA1對應到排序器的通道1
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2 ;
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; //軟件啟動轉換功能 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1; //允許向CPU發出中斷請求