This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1256: ADS1256可否做到精准的20K的差分采样率

Part Number: ADS1256

你好,最近使用ADS1256,后端通过SPI连接STM32获取采样数据。

我想达到的目标是:采样率为20K的四路差分采样电路,并通过SPI将数据以每秒20K 24bit的频率输出。

现有问题:ADS1256可否做到精准的20K的差分采样率,我看表14只有30K,15K之类;是不是只能按表里写寄存器的值,设置采样率,不能额外改采样率

       若无法做到精准20K,用什么方式可以满足我的使用需求?

  • 您好,

    您说的采样率为20K是指ADC的输出数据速率是吗?因为ADS1256是 Δ-Σ ADC,它有两种采样速率,一个是调制器的输出速率,一个滤波器的输出速率或者说ADC的输出速率。

    如果是ADC的输出速率Data Rate,那么计算公式如下,它与输入时钟频率有关,datasheet 表格中的数据速率是在 fCLKIN = 7.68MHz时给出的,因此你还可以调节输入时钟频率来调节输出数据速率。

    时钟输入范围:

    另外,你是需要4路差分输入同时采集吗?如果是的话,ADS1256不能满足你的要求,看下面ADS1256功能框图,其内部就集成了一个Δ-Σ ADC,多路模拟输入是通过MUX实现的,只能通过切换MUX分别采集:

  • 好的,谢谢您的耐心解答。我是0-5V模拟信号四路差分输入采样,可以不同时采集,通过切换MUX分别采集,最后四路差分输入的数据以20K的输出速率将结果发送给主机。如果输入时钟频率为5.12MHZ(我经过计算)可以达到20K。请问这样可以实现我的目的吗?

  • 您需要采集的0~5V具体是什么信号?信号源阻抗大不大?是差分信号还是单端信号?因为 ADS1256 有buffer on和buffer off模式,buffer off 的话,每个管脚输入范围可以到AGND-0.1V~AVDD+0.1V,但是这种模式输入阻抗低,如下截图所示,PGA增益不同输入阻抗不同,总的来说不管哪种增益下输入阻抗都较小,如果您信号源阻抗比较大的话,需要加buffer以降低信号源输出阻抗。

    buffer on的模式,输入阻抗稍微大些,与数据速率有关,具体见table 7,如下截图,在buffer on的模式每个管脚的输入电压范围缩小,即AGND ~ AVDD-2.0V。这种情况下不使用于单端5V信号。

    通过切换MUX分别采集的话,也需要控制端来控制采样速率,因为每次都需要改写 MUX reg,然后再启动AD转换,具体见datasheet Settling Time Using the Input Multiplexer部分说明。

  • 您好,感谢您的耐心解答,我现在出现一个新问题:我参数设置采样频率是30K,信号输入为一个频率为1k的正弦波(最大为1000mv作为测试),ADS1256去采样100个数据,将数据列出绘成图如下:

    按照数据手册里的采样频率为30K,1K的正弦波应该有30个采样点,但现在一个周期如图为8-9个采样点(红点为我采样的电压值,单位mv),我是否可以理解为在参数30K的ADS1256实际采样频率为8-9K.或者说是因为外部环境,比如外围硬件设计导致实际采样频率为8-9K.

  • 您是仅采集一个通道没有使用MUX是吗?

    您是使用的连续转换模式吗?您测试DRDY信号频率是多少?您使用的SCLK频率是多少?

  • 好的,感谢您的耐心回答。

    使用了mux,只是在一个通道输入了1K频率正弦波做测试用,其他几路没接信号输入

    DRDY是29k多到30k,没问题。我现在怀疑是我主控程序问题,正在改

    SCLK频率采用软件spi代码如图

  • 使用了mux,只是在一个通道输入了1K频率正弦波做测试用,其他几路没接信号输入

    我上一个回复的意思是您是否使用了MUX进行通道切换,通道切换的话,数字滤波器需要稳定时间会降低转换速率。

    DRDY是29k多到30k

    DRDY是正确的话,那说明SPI读取转换结果的问题,SPI读取速率(SCLK)要跟上,也就是说在一个转换周期内,SPI需要把转换code读取了,否则的话就会丢失,使得得到的数据速率较低。仅一个通道的话,您可以使用连续读取模式。

  • 那确实使用mux进行通道转换,请问怎么关闭mux(是寄存器写入0x01复位值吗)

    mux开启的话对30k的影响大不大,8通道采样速率30k会降低大概多少,我的理解是:mux使用了,DRDY是30K左右,表明通道切换,数字滤波器需要稳定时间会降低转换速率,但不会影响结果采样速率30K。(我的理解是否有误)那这样的话我就无需关闭mux。

  • 不用关闭MUX,您不改变MUX寄存器的值就不进行通道切换,MUX寄存器写入0x01是采用默认通道输入,您需要配置为您实际使用的通道。

    mux开启对转换速率影响很大,如table 14 在30K速率设置下实际速率为4.3kSPS。

    会影响采样速率30K,因为切换通道后您需要重新启动AD转换,虽然样本转换速率是30K,但是切换通道需要额外时间,数字滤波器稳定需要额外时间,这样就降低了总的采样速率。

  • 感谢您的耐心解答,单通道的30k采样率已经验证了,可行,且数据未丢失。

    1.对于mux的问题。ads1256开了多路,并非同时采样,而是分时采样。多路复用器每增加一路采样,采样速率就会相应减少吗?是不是每次转换通道读取数据都要表14中t19的时间,这样的话八通道采样的话会导致采集速率大大降低,如芯片手册Figure 19

    2.您在上述:如table 14 在30K速率设置下实际速率为4.3kSPS。我只用一路通道,每次采样时都写入mux寄存器0x08的值以及SYNC,WAKEUP,

    RDATA,进行数据读取。虽然只是一个通道,但只要使用以上命令给ADS1256,就会使速率大大下降

  • 单通道的30k采样率已经验证了,可行,且数据未丢失。

    感谢反馈!

    1.对于mux的问题。ads1256开了多路,并非同时采样,而是分时采样。多路复用器每增加一路采样,采样速率就会相应减少吗?是不是每次转换通道读取数据都要表14中t19的时间,这样的话八通道采样的话会导致采集速率大大降低,如芯片手册Figure 19

    是的,虽然是多路但仅集成了一路 ΔΣADC,因此不能同时采样。

    是的,多路复用器每增加一路采样,采样速率就会相应减少。

    是的。

    2.您在上述:如table 14 在30K速率设置下实际速率为4.3kSPS。我只用一路通道,每次采样时都写入mux寄存器0x08的值以及SYNC,WAKEUP,

    RDATA,进行数据读取。虽然只是一个通道,但只要使用以上命令给ADS1256,就会使速率大大下降

    您只用一个通道的话,不需要改变MUX的值。

    主要是使用 SYNC 命令重新启动AD转换,重启AD转换的话,就会重启数字滤波器,就需要增加稳定时间。

x 出现错误。请重试或与管理员联系。