Part Number:ADS1256
你好,最近使用ADS1256,后端通过SPI连接STM32获取采样数据。
我想达到的目标是:采样率为20K的四路差分采样电路,并通过SPI将数据以每秒20K 24bit的频率输出。
现有问题:ADS1256可否做到精准的20K的差分采样率,我看表14只有30K,15K之类;是不是只能按表里写寄存器的值,设置采样率,不能额外改采样率
若无法做到精准20K,用什么方式可以满足我的使用需求?
Amy Luo:
您好,
您说的采样率为20K是指ADC的输出数据速率是吗?因为ADS1256是 Δ-Σ ADC,它有两种采样速率,一个是调制器的输出速率,一个滤波器的输出速率或者说ADC的输出速率。
如果是ADC的输出速率Data Rate,那么计算公式如下,它与输入时钟频率有关,datasheet 表格中的数据速率是在 fCLKIN = 7.68MHz时给出的,因此你还可以调节输入时钟频率来调节输出数据速率。
时钟输入范围:
另外,你是需要4路差分输入同时采集吗?如果是的话,ADS1256不能满足你的要求,看下面ADS1256功能框图,其内部就集成了一个Δ-Σ ADC,多路模拟输入是通过MUX实现的,只能通过切换MUX分别采集:
,
ma hq:
好的,谢谢您的耐心解答。我是0-5V模拟信号四路差分输入采样,可以不同时采集,通过切换MUX分别采集,最后四路差分输入的数据以20K的输出速率将结果发送给主机。如果输入时钟频率为5.12MHZ(我经过计算)可以达到20K。请问这样可以实现我的目的吗?
,
Amy Luo:
您需要采集的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部分说明。
,
ma hq:
您好,感谢您的耐心解答,我现在出现一个新问题:我参数设置采样频率是30K,信号输入为一个频率为1k的正弦波(最大为1000mv作为测试),ADS1256去采样100个数据,将数据列出绘成图如下:
按照数据手册里的采样频率为30K,1K的正弦波应该有30个采样点,但现在一个周期如图为8-9个采样点(红点为我采样的电压值,单位mv),我是否可以理解为在参数30K的ADS1256实际采样频率为8-9K.或者说是因为外部环境,比如外围硬件设计导致实际采样频率为8-9K.
,
Amy Luo:
您是仅采集一个通道没有使用MUX是吗?
您是使用的连续转换模式吗?您测试DRDY信号频率是多少?您使用的SCLK频率是多少?
,
ma hq:
好的,感谢您的耐心回答。
使用了mux,只是在一个通道输入了1K频率正弦波做测试用,其他几路没接信号输入
DRDY是29k多到30k,没问题。我现在怀疑是我主控程序问题,正在改
SCLK频率采用软件spi代码如图
,
Amy Luo:
ma hq said:使用了mux,只是在一个通道输入了1K频率正弦波做测试用,其他几路没接信号输入
我上一个回复的意思是您是否使用了MUX进行通道切换,通道切换的话,数字滤波器需要稳定时间会降低转换速率。
ma hq said:DRDY是29k多到30k
DRDY是正确的话,那说明SPI读取转换结果的问题,SPI读取速率(SCLK)要跟上,也就是说在一个转换周期内,SPI需要把转换code读取了,否则的话就会丢失,使得得到的数据速率较低。仅一个通道的话,您可以使用连续读取模式。