TMS320F28377學習筆記——通過定時器觸發ADC連續采樣


作為TI的C2000系列最新產品的28377S(D),ADC模塊是其核心的信號采集功能。28377的ADC是一個逐次逼近型(SAR)ADC,可選擇分辨率為16位或12位。具體ADC特性如下圖的數據手冊所示:

 

 

 這次學習,我采用Timer定時器作為觸發源來觸發ADC在SOC0上的的連續轉換。由上圖可以看到,ADC支持的觸發類型有:

  1. 軟件觸發
  2. 所有的EPWM-ADCSOCA或B
  3. GPIO XINT2
  4. CPU 定時器0/1/2(每個C28x內核)
  5. ADCINT1/2

所以,通過CPU的定時器來觸發采樣是可行的。下面來看ADC的模塊框圖:

 

 我們通過Timer觸發ADC的SOC0轉換序列對ADCIN0進行持續采樣:采樣方式為單端12位采樣。

 

 接下來需要配置ADC的SOC采樣序列,包括采樣窗時間,轉換的通道選擇,觸發源選擇等:

 

 下面附上程序部分:

 1 /*配置ADC的轉換模式、中斷及觸發源*/
 2 void ConfigureADC(void)
 3 {
 4     EALLOW;
 5     AdcaRegs.ADCCTL2.bit.PRESCALE = 6; //ADC時鍾預分頻:200M/4=50MHz
 6     AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, 
 7     ADC_SIGNALMODE_SINGLE); //配置ADCA為12位轉換精度,單端模式
 8     AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADC中斷脈沖位置發生在在轉換結束時,在ADC結果鎖存到結果寄存器之前的一個周期
 9     AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //內核中的所有模擬電路都通電
10     DELAY_US(1000); //delay for 1ms to allow ADC time to power up
11     EDIS;
12 
13     Uint16 acqps;
14 
15     if(ADC_RESOLUTION_12BIT == AdcaRegs.ADCCTL2.bit.RESOLUTION)
16         {
17             acqps = 14; //12位單端模式下采樣時間最快75ns,ACQPS>=14,
18         }
19     else  //resolution is 16-bit
20         {
21             acqps = 63; //16位差分模式下采樣時間最快320ns,ACQPS>=63
22         }
23 
24     EALLOW;
25     AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;     //SOC0將轉換ADCINA2
26     AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //設置采樣窗時間
27     AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 2;   //SOC0觸發源選擇為CPU1 Timer1
28     AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0觸發ADCINT1
29     AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;   //ADCINT1中斷使能
30     AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //ADCINT1中斷標志位清零
31     EDIS;
32 }

 

 

 

 可以看到,在ADCRESULT0寄存器中,程序正在持續采樣中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM