mzh00 发表于 2023-5-14 15:51:18

STC8G1K08-20,ADC采样的数据不稳定

用了示例程序,


收←◆ADC01=0539
收←◆ADC02=0334
ADC15=0241

收←◆ADC00=0615
收←◆ADC01=0585
ADC15=0240


收←◆ADC00=0560
收←◆ADC01=0669
ADC15=0241


收←◆ADC00=0535
收←◆ADC01=0721
ADC15=0240


收←◆ADC00=0553
收←◆ADC01=0721
ADC15=0241


收←◆ADC00=0633
收←◆ADC01=0680
ADC15=0240


收←◆ADC00=0701
收←◆ADC01=0621
ADC15=0240


收←◆ADC00=0733
收←◆ADC01=0563
ADC15=0240


收←◆ADC00=0698
收←◆ADC01=0530
ADC15=0240


收←◆ADC00=0645
收←◆ADC01=0557
ADC15=0240


收←◆ADC00=0573
收←◆ADC01=0651
ADC15=0240


收←◆ADC00=0536
收←◆ADC01=0728
ADC15=0240


收←◆ADC00=0564
收←◆ADC01=0715
ADC15=0240


收←◆ADC00=0662
收←◆ADC01=0664
ADC15=0240


收←◆ADC00=0722
收←◆ADC01=0588
ADC15=0240


收←◆ADC00=0711
收←◆ADC01=0537
ADC15=0242


收←◆ADC00=0645
收←◆ADC01=0552
ADC15=0240


收←◆ADC00=0577
收←◆ADC01=0654
ADC15=0241

ADC0和ADC1是短接的,读回来的值,很不稳定。

收←◆ADC01=0002
ADC15=0254


收←◆ADC00=0001
ADC15=0255


收←◆ADC00=0003
ADC15=0255


收←◆ADC00=0001
ADC15=0255


收←◆ADC00=0003
ADC15=0254


收←◆ADC00=0001
ADC15=0254


收←◆ADC00=0002
ADC15=0283


收←◆ADC00=0003
ADC15=0254


收←◆ADC00=0002
ADC15=0254


收←◆ADC00=0001
ADC15=0255


收←◆ADC00=0002
ADC15=0269


收←◆ADC00=0003
ADC15=0254


收←◆ADC00=0005
ADC15=0254


收←◆ADC00=0001
ADC15=0254


收←◆ADC00=0003
ADC15=0255


而且如果是用USB供电时,ADC15的值,都是不稳定的。

mzh00 发表于 2023-5-14 15:56:36

ADC15,是内部的1.19V电压,这个值怎么会不稳?。
ADC0和ADC1是直接短接,接的外部采样,采样我用示波器看了,波动不大,但数据却相差非常大。

神农鼎 发表于 2023-5-14 16:03:15

先将采样时间设到最长






mzh00 发表于 2023-5-14 20:23:00

void InitADC()
{
   

    P_SW2 |= 0x80;
    ADCTIM = 0x3f;                              //设置ADC内部时序
    P_SW2 &= 0x7f;
    ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16| ADC_SPEEDLL
//    ADC_CONTR = 0x80;                         //使能ADC模块
        ADC_RES = 0;                                                                //清ADC转化结果
    ADC_CONTR = ADC_POWER;                                  //使能ADC电源
    delayms(2);                     //ADC power-on delay and Start A/D conversion
}
时间已经是最长了,感觉好象是电源哪有不稳定情况,但我都已经是照推荐的配置了

mzh00 发表于 2023-5-14 20:28:18


电源部分照推荐的,应该也没有错。

神农鼎 发表于 2023-5-14 20:38:55





mzh00 发表于 2023-5-15 10:43:56

采集回来的数据 10%左右一直跳动。
示波器上看波纹并不大

32位8051 发表于 2023-5-15 11:05:22

mzh00 发表于 2023-5-15 10:43
采集回来的数据 10%左右一直跳动。
示波器上看波纹并不大

初始化时打开ADC电源,等待1ms后进行采集




梁工 发表于 2023-5-15 15:42:25

每次打开ADC电源,至少等待1ms以上才启动ADC转换。
楼主转换15通道看看,这个是内部BandGap电压,读数会稳定的,前提是VCC要稳定。

mzh00 发表于 2023-5-17 10:34:44

/*----------------------------
ADC 中断处理
----------------------------*/
void adc_isr() interrupt 5
{
    ADC_CONTR &= !ADC_FLAG;         //Clear ADC interrupt flag
        ADC_LOW2= ADC_RES;
        ADC_LOW2 <<= 2;
    ADC_LOW2 |= ADC_RESL;
    ADC_JS++;
        ADC_O=1;

//    if (++ch > 7) ch = 0;         //switch to next channel
    ADC_CONTR = ADC_POWER| ch;
}
页: [1] 2 3
查看完整版本: STC8G1K08-20,ADC采样的数据不稳定