TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

user151383853:

很奇怪的现象

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

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

John11513:

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

Zhen Gu:

回复 John11513:

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

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

Zhen Gu:

回复 user151383853:

有段时间以为是前面模拟电路的问题,后来用示波器测试后发现,到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);}

Zhen Gu:

回复 user151383853:

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

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

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

John11513:

回复 Zhen Gu:

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

John11513:

回复 John11513:

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

Zhen Gu:

回复 John11513:

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

John11513:

回复 Zhen Gu:

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

赞(0)
未经允许不得转载:TI中文支持网 » ads8861参考设计使用中出现零点毛刺
分享到: 更多 (0)