TI中文支持网
TI专业的中文技术问题搜集分享网站

AD采样 28335

void  Init_my_ADC()
{    
    EALLOW; //读写保护
   #if (CPU_FRQ_150MHZ)     //预处理中的条件编译,如果CPU_FRQ_150MHZ为真,编译此段
     #define ADC_MODCLK 0x3 // 宏定义ADC_MODCLK=0x3使得高速时钟HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3)= 25.0 MHz
   #endif
   #if (CPU_FRQ_100MHZ) //预处理中的条件编译,如果CPU_FRQ_100MHZ为真,编译此段
     #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2)  = 25.0 MHz
   #endif
   EDIS; //读写保护

        InitAdc();//ADC上电
        EALLOW; //读写保护
        SysCtrlRegs.HISPCP.all = ADC_MODCLK;    // HSPCLK = SYSCLKOUT/(2*ADC_MODCLK)//设置外设高速时钟频率为25MHz
        EDIS;//读写保护

        //AdcRegs.ADCTRL1.bit.ACQ_PS=0x0;//设置启动脉冲的宽度为0+1个ADCCLK周期
         AdcRegs.ADCTRL1.bit.ACQ_PS=0xf;

        AdcRegs.ADCTRL3.bit.ADCCLKPS=0x1;//设置采用2分频,得到频率为12.5MHz,ADCCLK=HSPCLK/[(2*ADCCLKPS)*(ADCTRL1[7]+1)]
        AdcRegs.ADCTRL1.bit.CPS=0x0;//对ADCCLKPS分频后的高频信号不分频,ADC频率为12.5MHz,ADCTRL1[7]即CPS
        AdcRegs.ADCTRL1.bit.SUSMOD=3;//仿真挂起模式,排序器和其他逻辑在仿真挂起时停止
        AdcRegs.ADCTRL1.bit.CONT_RUN=1;//自动排序模式
        //AdcRegs.ADCTRL1.bit.SEQ_OVRD=0;//连续模式下,转换完MAX_CONVx通道指针复位到处是状态
        AdcRegs.ADCTRL3.bit.SMODE_SEL=0;//顺序采样模式
        AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//级联模式        AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=1;//EPWM模块来驱动采样
        AdcRegs.ADCMAXCONV.bit.MAX_CONV1=3;//设置3通道
        AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//信号源
        AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x0;
        AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x0;
        AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x0;
        AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
        AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除中断标志位    }

if(flag>=512)flag=0;
        while(AdcRegs.ADCST.bit.INT_SEQ1==0) {}//等待采样的完成
            AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除中断标志位
            Uadc_ab1=AdcRegs.ADCRESULT0>>4;//采样电压
            Uadc_ab2=AdcRegs.ADCRESULT1>>4;
            Uadc_ab3=AdcRegs.ADCRESULT2>>4;
            Uadc_ab4=AdcRegs.ADCRESULT3>>4;
            Uadc_ab=Uadc_ab1+Uadc_ab2+Uadc_ab3+Uadc_ab4;
            Uadc_ab>>=2;
            ui=(Uadc_ab)*0.0007326;
            //AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
            Ua[flag]=ui;
            flag++;

各位大神能帮我看下为什么我的采样会这个样子?非常感谢

mangui zhang:

被采集的源肯定没问题是吧     

个人觉得怎么像是在256的时候数据转换了    你在确认一下你的代码  

查看graph时让一个一个的显示   不要一段

void  Init_my_ADC()
{    
    EALLOW; //读写保护
   #if (CPU_FRQ_150MHZ)     //预处理中的条件编译,如果CPU_FRQ_150MHZ为真,编译此段
     #define ADC_MODCLK 0x3 // 宏定义ADC_MODCLK=0x3使得高速时钟HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3)= 25.0 MHz
   #endif
   #if (CPU_FRQ_100MHZ) //预处理中的条件编译,如果CPU_FRQ_100MHZ为真,编译此段
     #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2)  = 25.0 MHz
   #endif
   EDIS; //读写保护

        InitAdc();//ADC上电
        EALLOW; //读写保护
        SysCtrlRegs.HISPCP.all = ADC_MODCLK;    // HSPCLK = SYSCLKOUT/(2*ADC_MODCLK)//设置外设高速时钟频率为25MHz
        EDIS;//读写保护

        //AdcRegs.ADCTRL1.bit.ACQ_PS=0x0;//设置启动脉冲的宽度为0+1个ADCCLK周期
         AdcRegs.ADCTRL1.bit.ACQ_PS=0xf;

        AdcRegs.ADCTRL3.bit.ADCCLKPS=0x1;//设置采用2分频,得到频率为12.5MHz,ADCCLK=HSPCLK/[(2*ADCCLKPS)*(ADCTRL1[7]+1)]
        AdcRegs.ADCTRL1.bit.CPS=0x0;//对ADCCLKPS分频后的高频信号不分频,ADC频率为12.5MHz,ADCTRL1[7]即CPS
        AdcRegs.ADCTRL1.bit.SUSMOD=3;//仿真挂起模式,排序器和其他逻辑在仿真挂起时停止
        AdcRegs.ADCTRL1.bit.CONT_RUN=1;//自动排序模式
        //AdcRegs.ADCTRL1.bit.SEQ_OVRD=0;//连续模式下,转换完MAX_CONVx通道指针复位到处是状态
        AdcRegs.ADCTRL3.bit.SMODE_SEL=0;//顺序采样模式
        AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//级联模式        AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=1;//EPWM模块来驱动采样
        AdcRegs.ADCMAXCONV.bit.MAX_CONV1=3;//设置3通道
        AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//信号源
        AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x0;
        AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x0;
        AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x0;
        AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
        AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除中断标志位    }

if(flag>=512)flag=0;
        while(AdcRegs.ADCST.bit.INT_SEQ1==0) {}//等待采样的完成
            AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除中断标志位
            Uadc_ab1=AdcRegs.ADCRESULT0>>4;//采样电压
            Uadc_ab2=AdcRegs.ADCRESULT1>>4;
            Uadc_ab3=AdcRegs.ADCRESULT2>>4;
            Uadc_ab4=AdcRegs.ADCRESULT3>>4;
            Uadc_ab=Uadc_ab1+Uadc_ab2+Uadc_ab3+Uadc_ab4;
            Uadc_ab>>=2;
            ui=(Uadc_ab)*0.0007326;
            //AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
            Ua[flag]=ui;
            flag++;

各位大神能帮我看下为什么我的采样会这个样子?非常感谢

onebyte:

是采样的周期设置的不对吗

赞(0)
未经允许不得转载:TI中文支持网 » AD采样 28335
分享到: 更多 (0)