[STC单片机]

STC8A8K64S4A12的片内ADC使用!

[复制链接]
8019|23
手机看帖
扫描二维码
随时随地手机跟帖
songchenping|  楼主 | 2019-8-1 09:19 | 显示全部楼层
ADC采用P1.1通道:


    P1M1 = 0x02;
    P1M0 = 0x00;


ADC初始化函数:

    ADCCFG = 0x2F;  //   结果又对齐
    ADC_CONTR = 0x81;  //  Enable ADC  select channel 1


ADC读取函数:

   
    ADC_CONTR |= 0x40;  // START ADC
   
    _nop_();
    _nop_();
    while(!(ADC_CONTR & 0x20)); //  READ THE FLAG OF ADC DOWN
    ADC_CONTR &= ~0x20;  // CLEAR THE FALG OF ADC
    Trans[5] = ADC_RES;  // READ THE RESULT OF ADC
    Trans[6] = ADC_RESL;


主函数中根据指令把Trans[5]和Trans[6] 返回上位机。


使用特权

评论回复
wh6ic| | 2019-8-1 09:58 | 显示全部楼层
高度怀疑电路硬件问题。
断开全部无关电路,MCU用电池供电,信号也用电池,在ADC输入加大电容滤波,再试试看: 短路输入,看零值测量结果;满量程输入,看测量结果;电阻分压模拟300mV输入,看测量结果。

使用特权

评论回复
songchenping|  楼主 | 2019-8-1 10:05 | 显示全部楼层
wh6ic 发表于 2019-8-1 09:58
高度怀疑电路硬件问题。
断开全部无关电路,MCU用电池供电,信号也用电池,在ADC输入加大电容滤波,再试试 ...

我的300mv就是运放输出后,通过电阻分压来的。

使用特权

评论回复
xyz549040622| | 2019-8-1 10:05 | 显示全部楼层
如果误差真有这么大,大家早就反应了。测电源,看看跳动多大。

使用特权

评论回复
songchenping|  楼主 | 2019-8-1 10:12 | 显示全部楼层
示波器测量的ADC输入通道信号。
217895d424a74073d2.png

使用特权

评论回复
songchenping|  楼主 | 2019-8-1 10:21 | 显示全部楼层
电源测试。
407015d424c91af680.png

使用特权

评论回复
songchenping|  楼主 | 2019-8-1 10:25 | 显示全部楼层
硬件ADC输入原理图:
593155d424d7b9f044.png

使用特权

评论回复
songchenping|  楼主 | 2019-8-1 10:32 | 显示全部楼层
问题解决了。
谢谢大家!
软件上的原因。

使用特权

评论回复
评论
HARRY007 2019-8-2 08:41 回复TA
哈哈 
coody| | 2019-8-2 17:21 | 显示全部楼层
songchenping 发表于 2019-8-1 10:32
问题解决了。
谢谢大家!
软件上的原因。

还好,你说明了一下原因,STC好把背上的锅放下。

使用特权

评论回复
coody| | 2019-8-2 17:22 | 显示全部楼层
STC8A系列的12位ADC我用起来性能相当优秀,噪声很小,线性很好(通常线性误差不超过2个字)。

使用特权

评论回复
songchenping|  楼主 | 2019-8-2 17:28 | 显示全部楼层
coody 发表于 2019-8-2 17:22
STC8A系列的12位ADC我用起来性能相当优秀,噪声很小,线性很好(通常线性误差不超过2个字)。 ...

那你的信号输入端做处理了吗?

使用特权

评论回复
sjnh| | 2019-8-2 17:38 | 显示全部楼层
如果是3M/1M电阻分压到ADC,没有电容,估计跳也正常,这个源阻抗太大了;如果不跳就太幸运了,

使用特权

评论回复
小鱼儿1045| | 2019-8-2 18:50 | 显示全部楼层
自己的经验就是,每当怀疑人家IC的问题时候,多想想如果人家IC有问题,怎么可能还能买那么久,肯定是自己的问题,然后就静下心来,排查硬件软件问题~

使用特权

评论回复
dirtwillfly| | 2019-8-3 20:38 | 显示全部楼层
songchenping 发表于 2019-8-1 10:25
硬件ADC输入原理图:

分压电阻太大了,大部分mcu的adc阻抗都在几十k~几百k

使用特权

评论回复
评论
smartpower 2019-8-3 21:09 回复TA
正解 
smartpower| | 2019-8-3 21:16 | 显示全部楼层
查了一下他家的DataSheet ,还真是没有写ADC的输入电阻。

使用特权

评论回复
smartpower| | 2019-8-3 21:23 | 显示全部楼层
这是一份其它家的手册对ADC的说明。
这份手册允许的最大输入阻抗为100K,
下方还有输入阻抗与ADC转换时间的关系,阻抗越大,转换速度就要越慢才能保证精度。

653725d458a25064d8.png

827865d458a540be5b.png
597635d458a64bccd3.png

使用特权

评论回复
评论
smartpower 2019-8-3 21:25 回复TA
这个是华大手册里给出的参数 
eastzsp| | 2019-8-4 12:05 | 显示全部楼层
就是奇怪,为什么用那么大的电阻来分压。虽然分压的效果一样的,但是很容易受到干扰。

使用特权

评论回复
雪山飞狐D| | 2019-8-4 12:17 | 显示全部楼层
   ADC 本质上有一个等效对地的电容,要对这个电容冲满电,ADC量化值才是正确的,放太大的电阻在前面,电容未充满电你就采集了,理论会偏低并且跳动大

使用特权

评论回复
zxy2266| | 2019-8-31 21:41 | 显示全部楼层
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术合作可以通过以下方式: QQ:745995275 非技术合作恕不回复。

317

主题

11997

帖子

78

粉丝