我不是很清楚为什么更改CPU时钟,转换结果会有改变,尽管还是在芯片的误差范围内。
为了排除程序时序的影响,你可以尝试不要使用"连续转换模式",而改为"单次转换模式"。
感谢回复
单次转换模式也试过了,带缓冲的转换模式也试过了。都是一样的结果
目前的初步结论是:
1、AD引脚外部的电容不能接
2、CPU时钟降至2MHz 会有改善
但是不明白为什么,特别是AD引脚上的那个电容
STM32的ad我是搞了2个月没有搞定。测试量值非常稳定,但就是跟实际值有偏差。后来放弃。
AD输入的滤波电容离IO口要近,我之前稍微远了点,结果50mv一下都测不到,挪近了,就很正常了,可以测到5mv
按照LZ所说,1LSB对应AD为5mv.18mv以下AD读到为0,即比理论值小3-4LSB(18mv/5mv=3.6),此情况和20mv以上测到的结果一致。AD本身应该不存在问题,原理图上也不存在问题,不知道LZ的PCB上采样电阻的电流流向是如何的?因为流过采样电阻的电流比较大((20~50)mv/50mo=0.4~1A),如此大的电流在PCB上会形成一定的压降(具体要看电流流向),如果MUC的GND和采样电阻的GND之间存在压降,那么就有可能会出现你所描述的问题。LZ可以用万用表测量一下两个GND之间的电压差,当然一般的万用表无法测试如此小的电压。建议LZ将PCB上的电流流向示意图画出来。有问题可以联系我,QQ:252962384,请注明来历。
我觉得楼主这个问题应该是STM8自身的原因。
参考AVR的芯片手册,ADC除了给出最少转换时间外,还给出了15kSPS这个参数。那么是不是可以认为转换时间小于67us时,AD结果可能达不到给出的精度指标?
实际上在ICCAVR软件中对设置小于67us的AD转换时间会给出一个警告,而且AVR也提供了最大128分频的分频设置,保证了最大24M晶振下69us的转换时间。
翻看STM8的资料,并没有着到这个SPS参数,仅仅给出了最少转换时间,也许我资料看的不够仔细,请版主或知道内幕的说一下。
SPS = Samples Per Second 即每秒采样数
ST手册上给出最少转换时间包括采样和转换两部分,这个最少转换时间的倒数不就是SPS吗?
除非最少转换时间的倒数大于SPS,即每次采样转换结束后还要等待一段时间,才能进行下一次的转换,这时就必须同时给出SPS数值;STM8S在每次采样转换结束后不须等待,就可以开始下一次的转换,所以不一定要给出SPS参数。你说呢?
AVR资料上给出了最少转换时间(如M8为13us),但另外给出了最高分辨率时采样率为15kSPS。按版主的意思,AVR完全没必要标2个参数啊。所以我认为高速采样是以牺牲精度为代价的。
很好的贴子
不知楼主问题解决了没有?
很想知道结果。
模拟信号的处理一直都是比较头痛的问题
我觉得28楼所说的:“如果MUC的GND和采样电阻的GND之间存在压降,那么就有可能会出现你所描述的问题。。。。。”很有道理
另外,很想知道楼主或诸位大侠,是如何解决STM8S的AD的参考电压稳定性的?
是在其中一路A/D通道上加 了TL431作基准电压?还是另有妙计?
我也有过类似经验,ADC的时钟采样频率越低,采样的数值就越大。和楼主的情况相似,但因为采样数据一直都是稳定的,所以倒没在意过,请教中????