数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 5802|回复: 26

STC8A系列ADC转换问题请教

[复制链接]
发表于 2020-3-13 22:18:51 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
最近在做多路电压测量,使用的是STC8A8K64S4A12,看中了它的12位ADC,但是在测试过程中发个问题,即一个ADC端口加上电压后,其他端口也会串进来电压,会导致其他没有电压的测试端误测。

实测两组数据如下:
1、设置P1.0~P1.7为高阻输入(P1M0=0x00, P1M1=0xff)
2、在ADC0施加2.197V电压,ADC0读出的电压值正确
3、用万用表测量另外6个ADC端口,各个端口均有25mV左右的电压,ADCx读出的电压值也是该值
4、在ADC0施加4.01V电压,ADC0读出的电压值正确
5、用万用表测量另外6个ADC端口,各个端口均有98mV左右的电压,ADCx读出的电压值也是该值

VCC、AVCC和AVref短接,即参考电压为VCC=5V,除此以外没有任何外围电路。
程序用的是STC自带的范例程序,不过感觉和软件没有太大关系。

为此,还使用AVR做了对比,发现AVR没有该现象,难道是STC芯片设计的问题?
在此请教各位高人,有没有熟悉STC ADC的?应该怎么解决这个问题?十分感谢!
 楼主| 发表于 2020-3-13 22:58:52 | 显示全部楼层
人艰不拆了 发表于 2020-3-13 22:40
减小ad端口输入内阻,或许能可以,要不就是通道间串扰电压抑制能力差,那有啥办法啊,先天不足 ...

我也认为是通道间串扰,那就是先天不足了:sweat:
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-13 23:06:49 | 显示全部楼层
人艰不拆了 发表于 2020-3-13 22:41
您不是单片机高手吗,有些板子上就印的好奇心啊

:sweat:惭愧惭愧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 08:35:20 | 显示全部楼层
mrjingf 发表于 2020-3-13 23:41
要看是只开了一个端口的ADC,还是所有端口的ADC。
因为同一个ADC模块Sample and Hold电容在所有ADC端口上是 ...

P1所有端口的ADC都开了,仔细看了pdf,STC8A和STC15系列在ADC端口设置上不太一样,STC8A只需要设置端口为高阻输入即可,而STC15还需要将端口设置为模拟功能,即多了个P1ASF,STC8A没有这个寄存器。
测试了下不进行通道切换,只是设置P1口为高阻状态,发现有同样的问题。AVR却没有,其他单片机没测试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 08:37:29 | 显示全部楼层
再吐槽下STC的datasheet,太粗糙了,STC8的pdf连ADC的结构框图都没有,STC15倒是有:dizzy:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 11:09:10 | 显示全部楼层
la45088d1 发表于 2020-3-14 09:47
通道间有串扰吧,但是也不是什么大事啦。因为你其它通道是悬空的,所以少量的漏电流影响比较大的。但是如果 ...

测量浮空的I/O脚电压怎么能没意义?比如两路电压测量,没有经过分压,如果浮空还能测出电压来是不是就有问题了?会误认为该端口输入了电压,实际上并没有。
高阻态还有1.6V的电压还叫高阻吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 14:43:49 | 显示全部楼层
sz1988 发表于 2020-3-14 12:47
这个关键的提示为什么没有人注意呢。唉!

谢谢:)通道没有切换,直接测量的I/O管脚也是有电压,通道切换的时候已经丢弃了前两个转换值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 15:03:44 | 显示全部楼层
mrjingf 发表于 2020-3-14 12:12
不同单片机可能IO部分有区别,这个也正常。
也许内部有弱上拉未关闭,具体的不好说了。把有漏电的ADC端口 ...

对,是的,STC8系列增加了上拉电阻的控制寄存器,已经把上拉电阻关掉了P1PU=0x00。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 15:15:28 | 显示全部楼层
la45088d1 发表于 2020-3-14 14:59
你好像对高阻有什么误解,高阻只是说IO口的驱动关闭,几乎没有对外驱动能力。但是由于漏电流存在总会产生 ...

加了1k下拉电阻,所有通道都不外接电压的话的确是0(ADC读数不是0,而是1或2),但如果其中一个通道加上4V电压(VCC=AVCC-AVref=5V)却有8mV左右的电压,并且这个电压随着外部电压的变化而变化。是不是可以说明STC的高阻状态的确不怎么样?或者内部上拉或者输入缓存哪个地方做的不太好?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 19:35:45 | 显示全部楼层
la45088d1 发表于 2020-3-14 17:57
你试试STC15看看,STC15的AD有没有问题。以前我用过STC15的ADC,不过都是启用一个通道的,看起来比较正常 ...

好的,我再看看,多谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-14 21:26 , Processed in 0.405600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表