微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ads8861参考设计使用中出现零点毛刺

ads8861参考设计使用中出现零点毛刺

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

我根据ads8861手册中给的参考电路来进行数据采样,ths4521的输入分别为一个2.5V参考源和输入信号(0-5V范围),OCM为2.5V。后面接ads8861采样。可以读取到信号。但是当输入信号为2.5V时,也就是和参考源相同时,会读取到的数据中会出现毛刺,如下图,拉开来看这个毛刺其实就只有一个点。如果输入信号比2.5V高1mv,就不会发生这种情况。而且奇怪的是这个毛刺不管是向上还是向下的高度都是固定的。请教下这个问题怎么解决,谢谢!

很奇怪的现象

我找了手册的相关部分, 没有见到这个问题的描述或相关的原因.

如果是数据溢出, 那么后面的数据也应该是连续的, 不会就出现这一点

纵轴单位是什么?显示的数据是处理过的还是原始数据?

纵坐标是把补码转换成源码,然后又根据参考电压转换为绝对值的数据,数据转换是没问题的,和用示波器测量的结果匹配的上。

而且用示波器测了输入的信号,是没有这个毛刺的

有段时间以为是前面模拟电路的问题,后来用示波器测试后发现,到AINP和AINM输入的地方都是没有毛刺的。

数据采样是用的FPGA,通过usb传到电脑上再进行转换。转换过程应该也没有问题,我是把16位的数据拆成2个byte通过usb传上来,再在C#里面用一个union拼合,再转成数据。现在只有0点处会有这个问题,而且发现这个毛刺都是40 mV 左右的一个数,参考电压是5V。

下面是用C#写的数据转换的代码,

public struct short_u
        { public byte u_low; public byte u_high;}
[StructLayout(LayoutKind.Explicit)]
public struct Short2Bytes
        {
            [FieldOffset(0)]
            public short_u su;
            [FieldOffset(0)]
            public short value;
            [FieldOffset(0)]
            public ushort uvalue;
        }

Short2Bytes tempBytes;
private float MakeData(byte high, byte low)
{
      tempBytes.su.u_high = high;
      tempBytes.su.u_low = low;
      float tmp = (tempBytes.uvalue > 0x7fff) ? (0xffff - tempBytes.uvalue) : (-tempBytes.uvalue);
      return ((-tmp + 32768) / 65536 * 10000 - 5000);
}

我研究了一下传到电脑的数据,向上和向下的尖刺分别是0x00ff和0xff00,感觉是采样的问题了,

fpga的程序应该是没有问题的,采集其他数值的数据都完全没有毛刺

考虑到0x0000和0xffff都是在0点的,难道是芯片的bug?

到目前为止,还没发现芯片有bug。下图是我用评估板在输入不接信号(相当于短路)时,连续采集65536个点的波形图。可以看到,数据只在-6到-4间跳动。

你可以试试给输入外加一个很小的正电压,看看还有上述现象吗?

如果不是在0点,我的板子也不会出现毛刺的现象
毛刺的现象只有出现在0点上下1-2个bit的时候
短路的话是不是芯片内部也会有个offset的?如果外部给个offset补偿到0点呢?

从这一点看,我认为很可能是你软件中做代码转换时出了问题。

这是外部给个大约+0.8mV 的offset,补偿到0点附近后的结果。可以看到65791个采样点中,63321个是0,2466个是1,只有4个是-1,没有超出此范围的。所以,毫无疑问,器件是没有问题的。请查你的软件。

谢谢!问题解决了,的确不是芯片的问题。最后发现是采样的时序出了问题,conv的上升沿晚了1个周期。。。。

上一篇:ADS1675
下一篇:ads1247

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

网站地图

Top