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.

msp432开发板对光感模块adc采样不准确

我用的芯片是msp432p401r,板子是官方的开发板,代码是ccs6.1.2里面的adc14_single_chanel_external_reference例程,现在要做的就是对一个光感模块进行采样,数据是可以采集到的,但是总感觉不准确,两个问题,一个是用直流电源提供采样电压,电压为0V时,采样的数据高达7000多,另一个是当采样电压大于VeREF(3.3V)采集到的数据反而会变小。这些是不是开发板上的电路在adc信号采集上存在着缺陷?我用的是板子上的p5.6、p5.7端口来提供基准电压的。

  • 有没有人啊

  • 提供采样电压的直流电源纹波多少?

  • 我用的直流电源是很稳定的那种,是专门测试手机功耗的,纹波系数很小。现在我怀疑是不是配置有问题,端口配置完了之后悬空,电压都会达到1.2V,我换了几个端口都是这样子。例程提供的端口是p5.5,悬空的电压居然达到2.6V,就是不清楚配置的那个地方出了问题。

  • 应该是你的配置出现问题,参考电压配置不对。如果使用外部参考电压,IO引脚配置和输入电压是否正确?

    TI官方例程是P5.6 来做VREF+   

    int main(void)

    {
    WDTCTL = WDTPW | WDTHOLD; // Stop WDT

    // Configure GPIO
    P5SEL1 |= BIT5 | BIT6; // Enable A/D channel A0
    P5SEL0 |= BIT5 | BIT6;

    // Configure ADC14
    ADC14->CTL0 = ADC14_CTL0_ON | ADC14_CTL0_SHP| ADC14_CTL0_SHT0_2;// Turn on ADC14, set sampling time
    ADC14->CTL1 = ADC14_CTL1_RES_2; // Use sampling timer, 12-bit conversion results
    ADC14->MCTL[0] = ADC14_MCTLN_VRSEL_14 | ADC14_MCTLN_INCH_0; // Vr+ = VeREF+ (ext) and Vr-=AVss, A0
    ADC14->CTL0 |= ADC14_CTL0_ENC; // Enable conversions

    while (1)
    {
    ADC14->CTL0 |= ADC14_CTL0_SC; // Start conversion-software trigger
    while (!(ADC14->IFGR0 & BIT0));
    ADCvar = ADC14->MEM[0]; // Read conversion result
    __no_operation(); // SET BREAKPOINT HERE
    }

    }

  • 如果你把采样电压之前有调整的超过3.3V很多,是有可能损坏AD模块的。

    请先直接下载ADC例程做实验,然后把采样端口直接接地,如果采样数据还是浮动很大,换个芯片或开发板试试。

  • 谢谢你提的意见,现在转换出来的数据正常了

  • 谢谢大家提的意见,我把differntial mode修该了一下数据就正常了