微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS801输出不稳定,请教各位。

ADS801输出不稳定,请教各位。

时间:10-02 整理:3721RD 点击:

我用示波器测量ADS801的12位数字量,有些位的输出高低电平一直在跳,不知道什么原因,我测了一下参考电压,基本上跟数据手册上差不多,数据手册上要求时钟信号的上升和下降时间是2ns,我给的时钟没有达到这个要求,请问是不是这个原因?请教各位,谢谢!

是哪些位在跳?如果是低几位在跳,那是很正常的,因为这颗芯片的有效位(ENOB)只有10.3位,就是说低两位是被噪声淹没的。所以有跳动很正常。

谢谢你的回复!但是高位也在跳,有效位(ENOB)只有10.3位?数据手册上没有说啊。这是我的原理图,时钟是ARM的PWM引脚输出的25Khz,

输入接的3.3V的电源端。

你好!

SNR与ENOB之间存在这样的关系:SNR = 6.02N + 1.76dB

从datasheet上看,在CLK=500Khz,常温下,SNR=64~66db,计算可以得到ENOB=10.3~10.67

按照你所说的高几位也在跳,能简单说明一下,这个数据跟真实的数据有关系吗,即在跳动的几个数据中间有对的,还是完全都是无关的,没有规律。

建议:可以考虑直接输入一个固定的电压值,确定是ADC带来的数据跳动,还是前级输入带来的跳动。

因为用示波器只能一位位测量,所以不知道有没有对的数据,输入是直接接的3.3V的电源,数据也在跳,可能是时钟的原因吗?我给的是25KHZ

数据手册里对时钟的要求是:the duty cycle of the clock should be held at 50% with low jitter and fast rise-and-fall times of 2ns or less。但是我给时钟上升时间有50ns,2ns的上升时间不可能做到。应该是ADC带来的跳动,只有最低位一直为高,其他位都在跳,电路应该没有问题吧?会不会与ADC的GND引脚的解法有关呢?

你好!

根据datasheet上的时序图,我们可以看到,数据位的时序里面是有新数据的等待时间,其可能出现的delay time=12.5ns基本上快等于tL或者tH,而从你的实际时钟(clk=25kHz)来看的话,那delay time可能就直接导致你说的某一位出现高低的问题,但是这些都不是valid data,建议如果可能的话,使用单片机或者别的数据采集设备将所有的valid data读取出来,然后与输入信号进行比对。这样会更合理一些。

对你的电路大致看了一下,基本上没什么问题的,你还可以跟datasheet上的P14的figure9进行参照,figure9是双端输入,你这是单端输入,别的基本一致的。

那用单片机读到的数据不是一直在变的吗?那我怎么知道什么时候是有效数据呢?这个ADC只有O/E/使能控制信号,它是一直在不停的转换的吗?12.5ns的delay time,这段时间输出的是上一次转换的数据么?数据手册里有这样一句话:Since there are two pipeline stages per external clock cycle,there is a 6.5 clock cycle data latency from the start convert signal to the valid output data。意思是6.5个时钟周期更新一次数据吧,谢谢!

你好!

以datasheet 的P14的电路图为例,我们可以看到,ADC的时钟与后续的电路在时钟上是同步的,而从上面的时序图中我们可以得到时钟上升沿之后的t2时间之后即为有效数据位,故在后续的处理电路中是可以识别有效数据位的。

另外说明一点,数据的采集包括track和hold两步,我们一般需要采集的是hold的数据。

Since there are two pipeline stages per external clock cycle,there is a 6.5 clock cycle data latency from the start convert signal to the valid output data。这句话的意思是数据从输入到有效数据输出大概有6.5个时钟周期延时。并非6.5个时钟周期更新一次,它会一直在更新的。

非常感谢你的帮助!你的意思是说时钟信号也要接到ARM的引脚是吧?单片机采集到时钟信号的上升沿后12.5ns读到的数据就是有效数据?但是这个delay time跟ADC的时钟信号有关吧,25KHZ的时钟delay time也是12.5ns吗?数据手册P4的时序图我没看懂,数据从输入到有效数据输出大概有6.5个时钟周期延时,那这段延时时间里输出的数据是什么数据呢?

如果能留下你的联系方式,就更好了,谢谢!

如果要同步的话,应该是要接到ARM引脚上的,至于怎么接可能还是要你根据你的实际电路及需要来进行连接了。

在时序图中其Convert Clock是40ns,其对应的t2=12.5ns,在实际上你的PIN16的信号就是Convert Clock,故你在实际的电路中应该要跟你实际的输入信号对t2进行调整的,并且可能需要在你调试程序的时候进行微调以满足需要。

数据输入是这样的,例如,t=0,有一个数据输入,t=6.5,有数据输出,t>6.5之后,会一直根据输入值会有一个对应的输出值。由于数据是连续输入的,t>6.5之后,也会有连续的数据输出。

看了你的回复感觉豁然开朗,非常感谢你!datasheet的P4的时序图中Convert Clock是没说是40ns吧,下面的表格里写的最小是40ns(25MHZ),最大是100us(10khz),其中t2的最大值是12.5ns对应的是Convert Clock是100us(10khz)的时候吧,我现在的输入时钟是25KHZ,那t2应该比12.5ns更小吧。时序图中输出数据的t2-t1这段时间的输出是什么呢?t1位数据保持时间,如何理解?谢谢!

是的,这个t2的时间应该是小于等于12.5ns的,故就是说为了保证能获得准确的数据,你最好在上升沿之后大于12.5ns采集数据,那个时候的可以认为是valid data,当然这个t2是要根据实际情况进行微调的。

对于t1~t2之间的数据,我的理解是输出端口应该是高阻态,因为此芯片的输出端口是三态端口。这一段的数据是invalid data,故我们一般直接跳过。

t1这个时间应该是在时钟上升沿出现之后,上一组数据仍然保持的时间。

现在还有一个问题,因为ADC是5V的,而arm是3.3V的,所以ADC和ARM之间我加了一个电平转换芯片SN74LVC4245,但是现在只要我跑ADC采集的程序ARM就会发烫,其他程序可以正常跑,会不会是SN74LVC4245的灌电流太大了,要加限流电阻?

对于ARM能承受多大的电流,这个不是很了解,你可以到ARM版去询问,不过SN74LVC4245的Iol和Ioh都挺大的,可能达到mA级别,可是试着添加一个限流电阻,具体的可以参看datasheet上的Page6和Page7。当然具体可能要实际调试来确定。

嗯,非常谢谢你的解答!我用示波器测了一下输出,在高电平时会突然出现一个时间为40us的低电平脉冲,也就是一个时钟周期(我用的25khz),因为我的板子已经做出来了,暂时不能更改,所以不能用单片机读。

你好,问题现在还没解决,用示波器同时观察时钟信号和AD的某一位输出D8,D8的高电平和低电平还是很有规律的,高电平和低电平的时间都是时钟周期的倍数,但高电平和低电平时间不等。

看上去有两个地线,GNDA和GND,能否确保这样的接法没有问题?

是的,模拟地和数字地,他们通过一个0欧的电阻相连,但是ADS801的GND引脚没有分数字地和模拟地,所以我都接的GNDA,这样有问题吗?

把两个接口芯片的电源断掉,单测ADC,看看会不会出现高低电平的问题。

我把接口芯片去掉了,还是会出现高低电平的问题

你的输入信号是正弦波?多少幅度多高频率?如果输入是正弦波,那D8高低电平跳是很正常的。你试试直流信号输入时,输出的信号是什么样的。最好能把数据一并抓下来再分析。另外注意一下码型不要搞错了,码型在第10页表1有介绍。

我的输入接的是3.3V的电源端,输出还是一直在跳变,并且高低电平也不是稳定的,用示波器不能观察所有的输出啊

ADS801的19脚接地了,应该是原码输出吧,我用的是单端输入方式,输入范围是0.25~4.25

现在好像只有D8~D12位在跳其他几位没跳了

你的码型里D8到D12是低位还是高位?如果是低位,那高位的结果正确吗?

D8-D12不是高位吗?MSBI 脚接的低电平啊,输出不是只有原码输出和补码输出吗?

哦,我没看清楚,D1才是最高位,谢谢你的解答!

总算有些进展了,那目前就是低5位在跳,说明有效位大约只有7.5位左右。但是从手册上看,有效位是可以做到10.3位的。如果数字输出逻辑现在没问题了,建议排查以下可能造成有效位降低的因素

1. 时钟怎么给的?是否干净?一般几十K的时钟,jitter都不小,会不会是时钟恶化的SNR/ENOB?

2. 基准怎么给的?是否干净?有没有加滤波电容?

3. 能否保证信号源驱动能力足够强,在采样周期完成建立?

4. 模拟供电和数字供电能否分开?

这是我采集到的12位数据,输入是直流电压,后面是高位

时钟是ARM给的25Khz,怎么判断是不是时钟的问题呢?用的内部基准,加了一个104,

不过采的是直流,就算有抖动,对直流信号应该无干扰的。你时钟的幅度给的是多少?另外,104是什么?

你给的是多大的直流啊?怎么从高位往下看这么小啊?有可能是直流信号源本身不干净。给个高一点的直流进去,直接能看到高位出1。

3.3V的单片机输出时钟是3.3V的,104是0.1uF的电容,基准电压引脚接了一个104

现在给的是2.78V,这是输出

ADS801是5V供电的,会不会是时钟的幅值原因,时钟可以用有缘晶振给吗?

1. (2.78-0.25)/4=63.25%,你的结果前6位不跳,后6位跳,我就算第7位为1,末5位为0,则估计出来的结果是100111100000,换算成10进制数是2528。2528/4096=61.72%,也就是说,测量值和预期值差了1.53%。从这个结果看,ADC的功能是对的。

2. 下面说性能,你的直流信号到底是从哪里给的?如果是从直流稳压电源直接拉了一根线过来,建议你查一查稳压源的产品手册,看看输出能否精确到12位精度。换句话说,如果信号源的精度都达不到12位,ADC的输出结果不可能精准。

3. 采直流信号时时钟给3.3应该无所谓,实际采交流信号时有可能会出问题。建议看看手册第三页对逻辑电平的要求。

直流信号是用单片机的3.3V分压之后得到的,不过分压电路好像接的是数字地,老板要求12位数据只能有2位跳动啊

我把分压电路的地接到了模拟地(模拟地和数字地之间有一个0欧的电阻),这是输出,好像好点了

那你这信号来源也太差了,至少两方面的误差,一是数字电源本身就不干净,有各种各样的噪声,毛刺;二是分压电阻产生的offset,应该在毫伏/几百微伏的量级级,对你的ADC来讲,这个精度根本不够。你现在测出来的,基本上都是数字电源的噪声,而且在这种情况下ADC精度越高,低位跳得越多。测试用信号源建议用高一点精度的。

你把数字电源和模拟电源分开,然后把分压电阻接在模拟电源上,估计跳得位会少一点。如果手头实在没有高精度源,你试试看把CM电压拉出来到ADC输入行不行,估计跳得位会少一些。

这是输入接到CM脚的输出,高7位是稳定的了

CM端的电压用示波器测量最小值2.08V 最大值2.40V平均值2.22V,还真没有高精度的信号源

我算了下,高7位是稳定的0111101,低5位为全0时,十进制是1952,1952/4096*4+0.25=2.156,低5位为全1时,十进制是1983,1983/4096*4+0.25=2.186,这完全在输入的变化范围之内,所以应该就是输入的原因了,谢谢你的解答,非常感谢!

你好,weiping zhang,我最近也是在调试ADS801U,这个网上可供参考的资料真的太少,几乎无从下手,不知道能不能从你这里提供些帮助,比如参考资料或例程。谢谢。我QQ 276816784

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top