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

28335AD采样的数值不对

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jieqiang Xiao:

回复 Jones Chen:

我用的就是TI的例程。采的数还是不对。

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jieqiang Xiao:

回复 Jones Chen:

我用的就是TI的例程啊

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jones Chen:

回复 Jieqiang Xiao:

这样,您能尝试换成SEQ2启动ADC采集么?

再试试是否正确?

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jieqiang Xiao:

回复 Jones Chen:

试过了SEQ2启动ADC采集 采集到的数还是不对啊 求解释~

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jieqiang Xiao:

回复 Jones Chen:

谢了啊

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jones Chen:

回复 Jieqiang Xiao:

请问 您的问题找到原因了么?

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jieqiang Xiao:

回复 Jones Chen:

不知道 硬件电路这部分对不对

我在28335手册上看到的是

A0\A1\B0\B1通道采上来的数不对,总是2050左右。也从示波器上看到有0~3V以内的模拟输入。其他的通道采的比较准。

我的程序是

  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode

  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x01;

  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable

  for (i=0; i<BUF_SIZE; i++)

  {

    SampleTable[i] = 0;

  }

  // Start SEQ1

  AdcRegs.ADCTRL2.all = 0x2000;

  // Take ADC data and log the in SampleTable array

  for(;;)

  {

    for (i=0; i<AVG; i++)

    {

       while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt

       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

       SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );

    }

  }

}

Jones Chen:

回复 Jieqiang Xiao:

附件中是TI的参考电路,供参考。

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