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.

[参考译文] ADS131A04EVM:不带DRDY信号的异步采样

Guru**** 1821780 points
Other Parts Discussed in Thread: ADS131M06
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1096214/ads131a04evm-asynchronous-sampling-without-drdy-signal

部件号:ADS131A04EVM
在“线程:ADS131M06”中讨论的其他部件

您好,

我尝试使用带Raspberry Pi的ADS131系列芯片采样数据。 由于RPi不是微控制器,也没有实时功能,因此几乎不可能在DRDY信号上使用中断,在高频率下以良好的可重复性进行采样。 因此,我正在使用RPi的DMA功能进行采样,而无需CPU干预,但它不能与DRDY信号同步。 我仍然希望保持设备的异步从属模式,因为RPi无法可靠地输出主时钟。 由于RPi (或ADS)的一些轻微时钟漂移,我观察到,DRDY信号切换时,会定期(根据采样频率)进行SPI传输,从而提高STAT_1寄存器中的F_DRDY位,并且不会更新新的转换结果。 在SPI传输再次超出DRDY信号切换的范围之前,会发生这种情况。 我猜这是因为新的转换不能在内部SPI寄存器中同时读取(Pi)和写入(ADS131)。

我的问题是:这种现象是否也会在ADS131M06芯片上发生? 从数据表看,此芯片似乎有一个小型FIFO缓冲器,可能允许同时读取和写入新的转换数据。 是这样吗? 此外,当此FIFO已满时会发生什么情况? 新的转换是否被覆盖或放弃?

提前非常感谢。

此致,

Nicolas Verbeek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Nicolas:

    我个人不太熟悉RPi,所以如果问题和假设是基本的,请原谅。

    假设

    总之,听起来您在RPi上的程序无法可靠地生成ADS131A0x上的XTAL1/CLKIN引脚所需的信号,并触发nDRDY信号以启动ADC数据回读。  因此,系统的SCLK和CLKIN不同步,RPi必须 任意发送ADC数据读取命令,而不知道nDRDY的状态,这不会提供可靠的数据。 是这样吗? 在这种情况下,可靠地意味着 在DOUT上导致ADC数据回读的命令期间不应触发F_DRDY。   

    在我就上述情况发表意见之前,让我谈谈 直接的问题。

    从数据表看,此芯片似乎允许同时读取和写入新的转换数据。 是这样吗?

    我不知道这是什么意思。 转换不是通过读取或写入寄存器来启动的(使用WREG(S)和RREG(S)命令)。 ADS131A0x和ADS131M0x的全双工特性允许用户对DIN上的器件启动一个命令(如READ),并读取DOUT上最后一个命令的转换结果。

    忽略不 会在SPI帧中生成数据的重置,唤醒和类似命令;设备将继续进行转换并在需要时更新状态寄存器。 对于A0x,F_DRDY仅 在下一次转换开始前无法读取所有数据且nDRDY已切换时发生。

    有关FIFO和M0x的更多信息,请回答下一个问题。

    此外,当此FIFO已满时会发生什么情况? 新的转换是否被覆盖或放弃?

    正如您所指出的,ADS131A0x和ADS131M0x之间的区别是FIFO。 我需要与团队再次核实FIFO已满时的确切情况,因为唯一的数据表 显示FIFO "溢出"。 它将存储两个转换,然后在第三个转换中存储FIFO溢出。

    因此,考虑到这一点,ADS131M0x仍然存在与以前相同的问题。 如果我们对nDRDY一无所知,并且不尝试在nDRDY的两个脉冲中收集数据,那么ADC回读就毫无价值了。  我认为M0x和A0x之间的一个区别是,如果我们不知道nDRDY发生了什么,那么您有两倍的时间来读取ADC数据。

    通常,听起来好像您尝试在1 nDRDY周期内读取,因此它可以解决您的问题。 但是,如果您怀疑您在没有清除FIFO的情况下进行了3次以上的转换,建议在下一次转换之前重置或快速读取ADC两次。 在这种情况下,即使是内部超时类型"中断"也可以解决您的问题。

    在DRDY信号上使用中断,在高频率下以良好的可重复性进行采样几乎是不可能的

    对于A04,我认为我计算出的最大数据速率是~128kSPS或~30US的样品间隔时间。 假设SCLK大约为25MHz或40ns,我假设设备 可能在下一个数据就绪信号切换之前,通过两个完整的SPI数据帧读取,在最坏的情况下采用数据帧格式。 这些条件是否对RPi的实现非常困难?  

    如果CLKIN生成是问题的一部分,是否可以使用同时作为RPi和ADS输入的晶体振荡器? RPi输入转至可用作RPi参考的PLL的何处? 这将使两个设备之间的频率漂移保持恒定,并释放一些"program bw (程序bw)"以查找nDRDY。

    最佳,

    -Cole

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢您的详细回答。 我将使用大致相同的结构逐点回答。

    假设
    你是对的。 限制来自RPi Linux操作系统,它不是实时操作系统。 因此,它可以中断用户进程数毫秒,以几kHz以上的频率进行可靠采样几乎是不可能的。 避免这种情况的唯一方法是使用DMA引擎,它允许完全独立于CPU。 遗憾的是,在GPIO中断上没有触发DMA转换的简单方法,因此我需要以与ADS131不同步的定期间隔启动SPI传输。 由于10MHz的SPI传输比采样间隔短得多,因此这实际上非常有效。 但是由于两个时钟没有完全同步,因此存在一些慢速时钟漂移,这意味着在SPI传输期间的某个点可能发生转换/nDRDY切换,从而提高F_DRDY标志。 在SPI传输再次超出数据转换的"范围"之前,我读取的数据毫无价值。

    ADS131A0x与ADS131M0x
    在A0x上,当我在新转换开始/ nDRDY切换时仍在读取数据时,F_DRDY标志被激发,新的转换不被更新。 因此,在SPI传输再次超出数据转换的“范围”之前,我读取的数据毫无价值。 我的假设是,有某种"内部登记册"储存新的转换,不能同时读写。 这可以通过引入FIFO来解决,在FIFO中,“读取”操作(通过SPI)和“写入”操作(新转换)可以同时发生,而不会产生F_DRDY标志。 即使SPI传输同时进行,也可以将新的转换添加到FIFO中。 这是否合理? 这是M0x中实现的吗?

    在我的情况下,使用M0x,我可以尝试稍微提高RPi上的采样频率,以使FIFO永远不会溢出。 但在这种情况下,我有时可以读出一个空的FIFO,在这种情况下会发生什么情况? 在A0x上,当读取速度高于转换速率时,相同的转换会被多次读取。 但我不确定在没有FIFO的情况下M0x会发生什么。

    在DRDY信号上使用中断,在高频率下以良好的可重复性进行采样几乎是不可能的
    我希望我在假设一段中的回答能够澄清这一点。

    我认为我不能向RPi提供CLKIN信号。 但您提醒我,我应该更好地研究一下如何从RPi生成时钟以馈送至ADS131,因为这也可以解决问题。

    此致,

    Nicolas Verbeek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Nicolas:

    假设

    感谢大家的支持,现在就变得有意义了。 我听说在系统中添加了一个非常便宜和简单的MCU,以便它可以执行"内务管理"功能,例如监控ADC数据,然后从中提取。 您可能需要考虑 RPi DMA架构是否支持类似的功能。  

    ADS131A0x与ADS131M0x

    我的假设是,有某种"内部登记册"储存新的转换,不能同时读写。

    我明白你现在的意思。 是的,转换后的转换结果存储在寄存器内存空间中。 但客户无法直接访问。 是的,当A04设备将注册内容复制到DOUT时,它不想尝试用新的转换数据替换该内容。  我同意M0x FIFO应解决旧转换数据被推送到FIFO的第二阶段而不是被损坏或丢失的问题。

    但在这种情况下,我有时可以读出一个空的FIFO,在这种情况下会发生什么情况?  

    我同意数据表中没有该信息。 我将与团队核实,但如果它返回零代码而不是重复值,并更新状态以指明没有新数据,我会非常惊讶。  

    在DRDY信号上使用中断,在高频率下以良好的可重复性进行采样几乎是不可能的

    听起来不错,请告诉我情况如何。

    最佳,

    -Cole

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Nicolas:

    但在这种情况下,我有时可以读出一个空的FIFO,在这种情况下会发生什么情况?  

    我已确认设备将返回相同的结果。 因此,M0x系列听起来很合适。

    最佳,

    -Cole

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的Cole:

    非常感谢您的支持。  现在更清楚了。  

    此致,

    Nicolas Verbeek