打印
[STC单片机]

STC8A8K64S4A12的片内ADC使用!

[复制链接]
8568|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就是运放输出后,通过电阻分压来的。

使用特权

评论回复
5
xyz549040622| | 2019-8-1 10:05 | 只看该作者
如果误差真有这么大,大家早就反应了。测电源,看看跳动多大。

使用特权

评论回复
6
songchenping|  楼主 | 2019-8-1 10:12 | 只看该作者
示波器测量的ADC输入通道信号。


使用特权

评论回复
7
songchenping|  楼主 | 2019-8-1 10:21 | 只看该作者
电源测试。

使用特权

评论回复
8
songchenping|  楼主 | 2019-8-1 10:25 | 只看该作者
硬件ADC输入原理图:

使用特权

评论回复
9
songchenping|  楼主 | 2019-8-1 10:32 | 只看该作者
问题解决了。
谢谢大家!
软件上的原因。

使用特权

评论回复
评论
HARRY007 2019-8-2 08:41 回复TA
哈哈 
10
coody| | 2019-8-2 17:21 | 只看该作者
songchenping 发表于 2019-8-1 10:32
问题解决了。
谢谢大家!
软件上的原因。

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

使用特权

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

使用特权

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

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

使用特权

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

使用特权

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

使用特权

评论回复
15
dirtwillfly| | 2019-8-3 20:38 | 只看该作者
songchenping 发表于 2019-8-1 10:25
硬件ADC输入原理图:

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

使用特权

评论回复
评论
smartpower 2019-8-3 21:09 回复TA
正解 
16
smartpower| | 2019-8-3 21:16 | 只看该作者
查了一下他家的DataSheet ,还真是没有写ADC的输入电阻。

使用特权

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





使用特权

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

使用特权

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

使用特权

评论回复
20
zxy2266| | 2019-8-31 21:41 | 只看该作者
学习了

使用特权

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

本版积分规则

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

317

主题

11996

帖子

78

粉丝