sky999 发表于 2023-3-25 00:24:41

ADC的电源控制是不是不能始终保持打开?

本帖最后由 sky999 于 2023-3-25 00:29 编辑

ADC_CONTR=0X80;我上电就打开了电源控制,而且读取过程中也没有关闭他,但是我发现,只要每次读ADC,不再次打开电源控制位,就有各种各样的问题,而且还得在后面加几ms延时,,,,转换的过程中,好像会影响到串口收发数据,是什么原因

神农鼎 发表于 2023-3-25 07:41:36

直接判你你自己的问题,请使用 STC-USB Link1D 这个专业仿真工具来仿真调试,
不要在那猜









神农鼎 发表于 2023-3-25 09:21:53

请使用仿真功能来直观的观察芯片内部的真实行为,不要盲人摸象,在那猜
使用STC-USB Link1D 仿真器 硬件SWD仿真STC32详见下帖

【新提醒】使用STC-USB Link1D 仿真器 硬件SWD仿真STC32 - 编译器/仿真器/ISP下载/做自己的ISP/ID号加密/程序加密后传输 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

梁工 发表于 2023-3-25 12:32:58

实际跟你的说法相反,只要不睡眠,ADC电源始终打开是最好的。一旦关闭过ADC电源,再次打开,要延时至少1ms才启动ADC转换。
楼主可以直接测试STC的官方例程。

sky999 发表于 2023-3-26 08:03:41

梁工 发表于 2023-3-25 12:32
实际跟你的说法相反,只要不睡眠,ADC电源始终打开是最好的。一旦关闭过ADC电源,再次打开,要延时至少1ms ...
怪事,因为我用了20个ADC口,开机就给ADC电源打开,for循环读10个,前4个是正常的,后16个全是错的,但是只要我在读ADC的前面,再加个打开ADC电源,并且加6ms延时,就一定是正确的,这是不是电源电流不够?

神农鼎 发表于 2023-3-26 10:36:30

把你原理图的PDF发上来,大家好帮你

梁工 发表于 2023-3-26 11:17:19

sky999 发表于 2023-3-26 08:03
怪事,因为我用了20个ADC口,开机就给ADC电源打开,for循环读10个,前4个是正常的,后16个全是错的,但是 ...

我们的MCU最多15个输入,你怎么有20个?

sky999 发表于 2023-3-26 14:08:23

梁工 发表于 2023-3-26 11:17
我们的MCU最多15个输入,你怎么有20个?

对哦,我搞错了:L

sky999 发表于 2023-3-26 14:12:28

u16 READADC(u8 i)
{
u16 k;
                        ADC_RES=0;
                        ADC_RESL=0;
                        ADC_CONTR |= 0x08+i;
                        ADCCFG=0X02;                //低4位是时钟频率
                        ADCEXCFG=0X07;               
                        
                        ADC_CONTR |= 0x40;                      //启动AD转换
                        _nop_();
                        _nop_();
                        while (!(ADC_CONTR & 0x20));            //查询ADC完成标志               
                        ADC_CONTR &= ~0x20;                     //清完成标志                        
                        ADC_CONTR = 0x80; //---------------------------------------------------如果少了这句,程序就会一直错
                        Delay1ms(1);

                        k=k+((WORD)ADC_RES<<4)+((WORD)ADC_RESL>>4);
return k;
}

ADC_CONTR = 0x80;这句在程序上电初始化的时候就已经写过了,但是上面这个函数,读一遍之后,末尾如果不再次打开电源位,读出来的结果在5次后就都是错的





神农鼎 发表于 2023-3-26 14:33:27

具体哪个型号的MCU我们给你个完整的演示程序参考
页: [1] 2 3
查看完整版本: ADC的电源控制是不是不能始终保持打开?