jetlib 发表于 2013-7-8 10:33:47

有关5438A的AD采样

用5438A的AD15做输入,输入是稳定的0.1V左右,12位采集,可如果程序上电就全速跑,AD采回来的数字总是4095.可如果我用仿真器在AD转化后设个断点,全速跑中断2次,然后再全速跑,AD就可以正常采样了。怎么会这样呢?如下是我的AD初始化程序:

    ADC12_init (__MSP430_BASEADDRESS_ADC12_PLUS__,
                ADC12_SAMPLEHOLDSOURCE_SC,
                ADC12_CLOCKSOURCE_ADC12OSC,
                ADC12_CLOCKDIVIDER_1);

    ADC12_setupSamplingTimer(__MSP430_BASEADDRESS_ADC12_PLUS__,
                           ADC12_CYCLEHOLD_64_CYCLES,
                           ADC12_CYCLEHOLD_64_CYCLES,
                           FALSE);

    ADC12_setResolution(__MSP430_BASEADDRESS_ADC12_PLUS__,
                        ADC12_RESOLUTION_12BIT);

    ADC12_memoryConfigure(__MSP430_BASEADDRESS_ADC12_PLUS__,
                        CURR_AD_DET,
                        CURR_AD_INPUTPIN,
                        ADC12_VREFPOS_EXT,
                        ADC12_VREFNEG_AVSS,FALSE);

    ADC12_enable(__MSP430_BASEADDRESS_ADC12_PLUS__);
用的是外部2.5V稳压做参考。
采样代码如下:
//Clear ADC Int
   ADC12_clearInterrupt(__MSP430_BASEADDRESS_ADC12_PLUS__,CURR_AD_INT_IFG);

//Start Convert
    ADC12_startConversion(__MSP430_BASEADDRESS_ADC12_PLUS__,CURR_AD_DET,ADC12_SINGLECHANNEL);

//Wait until convert finish
    while(0 == ADC12_getInterruptStatus(__MSP430_BASEADDRESS_ADC12_PLUS__,CURR_AD_INT_IFG));

    uwCurrAD = ADC12_getResults(__MSP430_BASEADDRESS_ADC12_PLUS__,CURR_AD_DET);

用的是1.25的driverlib。谁碰到过这种问题?帮忙解答一下吧。多谢多谢。

gfy200866 发表于 2014-3-24 09:11:45

LZ问题解决了吗?我用AVCC做基准采集数据没问题。用VERF做基准采集数据就成4095的.{:mad:}

huangxiaowei 发表于 2014-4-11 20:15:46

求答案,哪位大神出手一下
页: [1]
查看完整版本: 有关5438A的AD采样