feng2260 发表于 2022-6-15 09:46

HC89S105K8芯片 AD读取波动太大

本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:59 编辑

第一次使用芯圣芯片,现在在读取AD值的时候遇到了问题,使用内部参考电压3V,芯片VDD供电4V,使用ADCR寄存器读取出来的AD值根本没法看,跳动非常大,总几百到几万的跳动;使用ADCRH和ADCRL寄存器读取的AD值就只有个位跳动,但是读取出的AD值偏大了好多。不清楚是什么原因?我将我这边的程序贴出来,大家帮我分析一下:

void adc_init(void)
{
      P0M0 = P0M0&0xF0|0x03;                        //P00设置为模拟输入                CH4
      P0M0 = P0M0&0x0F|0x30;                        //P01设置为模拟输入                T
      P0M2 = P0M2&0x0F|0x30;                        //P05设置为模拟输入                VOL

//////
      ADCC0 |= 0x80;                //打开ADC转换电源
      delay_2us(10);                        //延时20us,确保ADC系统稳定
      //ADCC1 = AD_SEL_CH4;      //选择ADC通道16
//      ADCC1 = AD_SEL_VOL;      //选择ADC通道21
      ADCC1 = (ADCC1&(~0x1F))|AD_SEL_VOL;
      //ADCC2 = 0x13;                        //转换结果12位数据,高8位置于ADCRH寄存器,ADC时钟8分频
      ADCC2 = 0x0B;                        //转换结果12位数据,高8位置于ADCRH寄存器,ADC时钟8分频
      ADCC0 &=0xFB;                //选择内部Vref
      ADCC0 |=0x02;                        //ADC参考电压:内部3V
      ADCC0 &=~ 0x20;                //清除ADC中断标志位
      ADCC0 |= 0x40;                //启动ADC转换
}

主程序中读取AD值,如下:
      ADCC0 |= 0x40;                              //启动ADC转换
      while(!(ADCC0&0x20));                //等待ADC转换结束
      ADCC0 &=~ 0x20;                              //清除标志位
      //adcResult2=ADCR;
      adcResult2=ADCRH;
      adcResult2=adcResult2<<4;
      adcResult2+=(ADCRL&0x0F);

//      adcSum=adcSum+adcResult;

//      adcResult=get_adc_value();
//      adcResult=(300.0*adcResult)/4096;      // 放大100倍.
//      //vddVoltage = (uint16_t)(adcResult+adcResult);
//      vddVoltage = (uint16_t)adcResult;

      LedBuf=adcResult2/1000;
      LedBuf=adcResult2%1000/10;
      LedBuf=adcResult2%100/10;
      LedBuf=adcResult2%10;

gouguoccc 发表于 2022-6-15 18:27

几万的跳动?你这个太不正常了。

GGLOAM 发表于 2022-6-16 15:33

改改ADCC2中ADCTS的值看看

mickit 发表于 2022-6-20 15:26

是多路数据转换吗?

xiaoyaozt 发表于 2022-6-20 16:12

AD读取波动太大跟参考电压有关系。

hellosdc 发表于 2022-6-20 16:36

推荐使用数字滤波

fentianyou 发表于 2022-6-20 17:10

信号之间有干扰的。   

plsbackup 发表于 2022-6-20 17:45

这个波动有规律吗?

guijial511 发表于 2022-6-21 08:24

你这个波动也太大了吧,哪里没对。

tpgf 发表于 2022-7-1 11:57

用的什么基准啊

aoyi 发表于 2022-7-1 12:11

数字滤波就是软件滤波吧

nawu 发表于 2022-7-1 12:16

降低采样频率

zljiu 发表于 2022-7-1 12:37

被采样信号是什么样的呢

gwsan 发表于 2022-7-1 12:47

采样率够不够啊

tfqi 发表于 2022-7-1 12:54

实际信号波动大吗

ghuca 发表于 2022-7-9 12:30

读取AD值的,需要注意硬件

wilhelmina2 发表于 2022-7-9 13:22

先查看硬件是不是故障

olivem55arlowe 发表于 2022-7-9 13:41

AD读取波动有很多问题。

myiclife 发表于 2022-7-9 14:13

使用数字滤波吧   

xietingfeng 发表于 2022-7-9 14:48

这个是参考电压的问题吗
页: [1] 2
查看完整版本: HC89S105K8芯片 AD读取波动太大