8G1K08A/DFN8,A/D经常返回0结果 | 电源输入加去藕电容,信号输入并103小电容到地
测量两个通道:15 和 3===================================
用编程器供电时,稳定。没有任何问题。
用示波器看VCC:
数据稳定:第一个数是通道15;第二个数是通道3;后面的依次类推。
=================================
用外部供电,经过升压DC-DC,再经过LDO,供单片机:
供电纹波比较大:
数据不稳定:通道15或通道3,都出现GET_ADC返回0的情况,截取的这一小段数据,只在通道3出现了几个0,实际上,通道15和通道3都有相当多的,返回0的数据。
===========================================
我认为取ADC得到0,尤其是对通道15取值,得到0。肯定是因为对芯片内部ADC供电的电源纹波太大导致的。
这个0或很小数据,可能是内部ADC失败后,给出的结果,ADC转换结束,这个标志还是能够每次都给出的,并没有发现其他问题(比如“死等”)。
---------------------------------------------
解决办法,肯定是解决纹波大的问题。
问题是,
对于,8G1K08A这个问题:ADC失败就返回0(还观察到有返回比0大一点的数据,所以0不是判断ADC失败的依据)。
1 芯片是否能给出ADC失败标志?
2 其他厂家单片机一般是怎样的?--因供电电源纹波大,是否也会导致内部ADC电路运行失败,给出0数值?是否有失败标志?
ADC输入通道,接个小电容
本帖最后由 main 于 2023-8-17 17:33 编辑
纹波大引起ADC失败,内部失败是否有标志给出?
改善纹波,※肯定※是解决办法。
芯片内部ADC失败,也要有失败标志,才更安全。
下面是只测量ADC15通道,按说这个通道很稳定不受外部干扰,应该每次测量都能得到一个值,但因为供电电源纹波大,让测量ADC15都有失败机会:
----------------------------------------------------------------------------------------------------------------------------------------
把通道3注释掉,只观察通道15:
大多数异常是数据 00,偶尔还会出现其他数据,比如这次出现的是 06
芯片内部测量失败返回大多数情况是0,但偶尔会返回其他值,其他值也比较小。
将采样时间延长 ADC是模数混合IC,对电源纹波有要求,先将电源做好来,才是治本的方法。
没有芯片能给出ADC失败标志,每次采样都对输入信号采样于采样电容中,
转换时跟参考电压比较得到ADC值,每次转换都认为输入和参考电压是合法的。
神农鼎 发表于 2023-8-17 18:51
将采样时间延长
时间已经都是最长了:
// 准备ADC 2+32+4+10=48 共48个ADC周期,ADC时钟是:2M/2/10,转换一次用时:0.48mS
ADC_Init_struct.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;//ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
ADC_Init_struct.ADC_Speed = ADC_SPEED_2X10T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
ADC_Init_struct.ADC_CsSetup = 1; //ADC 通道选择时间控制 0(默认),1
ADC_Init_struct.ADC_SMPduty = 31; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
ADC_Init_struct.ADC_CsHold = 3; //ADC 通道选择保持时间控制 0,1(默认),2,3
ADC_Inilize(&ADC_Init_struct);
梁工 发表于 2023-8-17 22:44
ADC是模数混合IC,对电源纹波有要求,先将电源做好来,才是治本的方法。
没有芯片能给出ADC失败标志,每次 ...
改善纹波,谈不上是“治本”的办法。
纹波到什么程度就能保证100%不出问题,而不是99.9%就行了。
第一次遇到ADC会失败并返回0或小数值的芯片,
AVR/STM8/32/PIC/MSP430...都用过,似乎都没遇到过这种情况。
main 发表于 2023-8-18 09:37
改善纹波,谈不上是“治本”的办法。
纹波到什么程度就能保证100%不出问题,而不是99.9%就行了。
第一次 ...
我用了STC所有型号的ADC,都没遇到过问题。 本帖最后由 main 于 2023-8-18 10:11 编辑
梁工 发表于 2023-8-18 09:47
我用了STC所有型号的ADC,都没遇到过问题。
升压到十几伏给其他电路用,升压的同时,再用LDO降压到5V给8G1K08A供电,这样供电质量可能差点。
刚刚,临时在芯片电源上并联一个钽电容,ADC15通道已经没有返回0的现象了。
但ADC3通道还是有返回0现象(即使加了104小电容,也是这样)。
建议合作伙伴用我们的核心版测试下我们 STC 的 ADC 的稳定性,
提升下您对 您PCB/外围电源的反思
https://www.stcaimcu.com/data/attachment/forum/202304/29/131800ijfla2n2q35axf3a.png