This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335的AD采集问题



我的28335 AD采集的代码为:

void Ad_init(void)
{
      InitAdc();       
   
       AdcRegs.ADCTRL1.bit.ACQ_PS =1;
       AdcRegs.ADCTRL1.bit.CPS = 0;
       AdcRegs.ADCTRL3.bit.ADCCLKPS =0;  //25Mhz
       AdcRegs.ADCTRL1.bit.SUSMOD=3; //3:仿真器停立即停

       AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  级联

       AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; //不(覆盖由MAX_CONV1设置的最大通道数,在整个模块通道内循环转换 )
       AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run


      AdcRegs.ADCCHSELSEQ1.all = 0x0;  //初始化所有的ADC同通道到A0

      AdcRegs.ADCTRL3.bit.SMODE_SEL=1;    //同步采样

       AdcRegs.ADCMAXCONV.bit.MAX_CONV1=1;
       AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//采样 ADCINA0
       AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;     
}

void InitAdc(void)
{
    extern void DSP28x_usDelay(Uint32 Count);
    EALLOW;
         SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
         ADC_cal();
     EDIS;
     AdcRegs.ADCTRL3.all = 0x00E0;  // Power up bandgap/reference/ADC circuits
     DELAY_US(ADC_usDELAY);         // Delay before converting ADC channels

}

void main(void)
{
    InitSysCtrl();

    EALLOW;
     SysCtrlRegs.HISPCP.all = 0x3;
     EDIS;

    Ad_init();

    while(1)
    {

                ADResult0 = (AdcRegs.ADCRESULT0 >>4);
                  ADResult1 =  (( ADResult0  * 3) / 4096);

                DELAY_US(5000L);

              AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;

    }

}

我把第一通道接了GND。调试时,在主程序的while中的 AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;加了断点,发现前两次采集到的ADResult为0,后面再采集时,值逐渐增到,直到为2.99999V。

请问大师们,我是哪里错了?