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

ADS131A04: 高采样率采样不准确

Part Number:ADS131A04

我最近在使用FPGA驱动ADS31A04进行数据采集。ADS131输入的主时钟是16.384MHz,IOVDD为3.3V,FPGA与ADS131之间的SPI通信时钟为12.5MHz。现在出现的情况是,当我把采样率设置为20480Hz的时候,采样是正常的。但是设置为25600的时候,采样不正常。比如我给某个通道输入100Hz的正弦波,采集到的数据显示却是200Hz。

我采取了以下措施来做调整:

1、将通信频率由12.5MHz降低到6.5Mhz或6MHz,结果显示没有任何帮助;

2、调整 CLK1和 CLK2的预分频方法,使用不通的组合达到最终采样率为25600的效果,但是最终结果也没有任何帮助。

3、从上位机显示的波形上来看,采样率看起来跟12800的采样率非常吻合,但是频谱是不对的,不是100Hz。

Amy Luo:

您好,

?? ? 说:从上位机显示的波形上来看,采样率看起来跟12800的采样率非常吻合,

这里是什么意思?您的意思是设置25600采样率的时候没有设置成功?还是与设置20480的时候一样?

寄存器设置是否验证了写入后可以正确读出?

您采集直流信号可以正确采集吗?

采集100Hz的正弦波得到的幅值是正确的吗?

您可以附上采样异常时的寄存器配置吗?

,

?? ?:

设置是成功的。采集正弦波的幅值是正确的。采集异常的时候, CLK1 Register的配置是0x02, CLK2 Register的配置是0xAF。

,

Amy Luo:

M0 Pin 设置的是什么?是使用的哪种接口模式?您是通过检测 DRDY信号来采集数据的吗?DRDY输出信号频率与设置的采样率是否一致?

也请检查下输入的信号频率是否真的为100Hz?

?? ? 说:3、从上位机显示的波形上来看,采样率看起来跟12800的采样率非常吻合,但是频谱是不对的,不是100Hz。

也请验证下AD采样值到频谱的转换过程是无误的?

,

?? ?:

M0上拉,M1和M2下拉。这个ADC我们用好几年了,最高用到20480的采样率,一直正常。最近添加了25600的采样率,就不正常了。输入波形通过示波器看是正常的100Hz正弦波。中断信号这个,我没检查,是不是要通过逻辑分析仪检测一下?AD采样值到频谱转换过程应当是无误的,我们从1600-20480,这中间有10种采样频率,转换都是正常的。

,

Amy Luo:

M0上拉的话是工作在 Asynchronous Interrupt Mode,DRDY是用来指示新的转换结果转换完成,您可以用示波器看下DRDY频率是否等于采样率;

您可以读一下 Status Registers值吗?看下是否有报错?

,

?? ?:

我使用示波器查看可以下,采样率设置为6400的时候,能够捕捉到6.413Khz的中断,设置为12800的时候,能够捕捉到12.83khz的中断;设置为25600的时候,能够捕捉到25.65khz的中断。这样说,设置的采样率应当是生效了的。读寄存器值,有点麻烦,我用FPGA搞的,没单片机那么好整。

,

Amy Luo:

看来实际运行的采样率是没啥问题的,但是是否漏采还不确定,因为转换结果不管是否读出,DRDY都照常输出,如下截图描述:

建议您还是要读下寄存器值,以检查哪里存在问题;

您可以附上输出是200Hz的频谱图吗?我想具体看下;

,

?? ?:

给你一个20480采样率的波形图和频谱图,你可以看到,频谱就是200.

再给你一个25600采样率的波形图和频谱图。你可以看到,在同样的采样点数的情况下,25600的波形个数应该比20480要少,比如采样点数为1024个点,那么波形个数应该是1024/25600*200=8个,而实际上会有16个。频谱是400.这个就跟采样率12800的吻合了。

另外,您说的读寄存器,是要读哪个寄存器?Status Registers我看有好几个?

,

Amy Luo:

主要是读一下 02h寄存器的F_DRDY bit 看是否漏采数据;

我怀疑是每2个样本漏采一个样本,为了采够1024个样本,多使用了一倍的时间,但是上述使用的频谱分析器进行分析时,并没有将时间延长一倍来分析,还是使用的25600采样率的时间进行分析的,因此分析结果频率增加一倍;

,

?? ?:

我这边除了25600的波形跟12800相同,频谱是12800的两倍;还有32000的波形跟16000的相同,频谱也是两倍。要说漏采,我觉得不可能漏采的这么完美吧?20480的波形和频谱可是都非常的正确的,也没见它的频谱就是10240的两倍。

,

Amy Luo:

25600和32000采样率是高于可以正确显示频谱采样率的,因此有可能漏采,您是否读取了02h寄存器的F_DRDY bit以进行验证?

,

?? ?:

还没有。我可以尝试一下。主要是接手的FPGA程序,添加状态不太方便。另外我们遇到的还有一个问题,以前实际使用的时候,采样率最高到10240.现在添加了12800,25600等这些采样率。然后当我们使用信号发生器单独采样的时候,比如使用12800的采样率采样,波形是正常的。但是在我们的机器上安装上4G模块并联网以后,程序运行不到10分钟,就会产生采样错误,比如突然采集到几个很大的值,然后接下来的采样值就都变为了0,或者某个固定值。由于FPGA程序是周期性采样的,每个采样周期都会对自身以及ADC进行复位,所以该异常出现一个周期后也会消失。我想问,是不是4G模块在由低功耗模式变成正常工作模式的时候,会对ADC采样产生干扰?

,

?? ?:

哦,对了,以前的程序实际采样率最高到10240.采样点数为每个通道最多8192个。4个通道采集够这么多点以后,FPGA和ADC都会进行复位操作。之所以这么做,听原来的工程师说是该ADC长时间不复位采样就会出问题。那么现在以12800或者某个高频的采样频率,采集每个通道32768个点,然后复位的。这应该不会有影响吧?毕竟每次采集完都会复位,而该异常很明显不是每个采样周期都会出现,是程序运行10分钟左右才出现一次。我认为是4G模块上电或者由低功耗模式切换为高功耗模式引起的。

,

Amy Luo:

4G模块工作模式的转变可能会对ADC产生干扰,但是您描述说“

?? ? 说:突然采集到几个很大的值,然后接下来的采样值就都变为了0,或者某个固定值。

您是否用示波器检测 ADS131A04的DOUT信号,以确认是ADS131A04输出确实为0或固定值?还是FPGA因干扰时序混乱造成的读取ADC数据为0或固定值?

,

Amy Luo:

ADC采集一定数据进行复位,没什么影响,但寄存器需重新配置;

10分钟左右出现一次异常,您们是否测试与4G模块上电或4G模块工作模式切换有一定关系?即ADC出现异常时,是否发生了4G模块上电或切换工作模式?具体是什么原因引起的需要进行测试以进行验证;

赞(0)
未经允许不得转载:TI中文支持网 » ADS131A04: 高采样率采样不准确
分享到: 更多 (0)